Mapping sensors output to physical drives in Linux
Whilst building out some new Grafana dashboards over the weekend I made the switch from InfluxDB to Promtheus node exporters for scraping metrics from Linux servers.
But how does one marry up the drivetemp-scsi-0-10
value output from sensors
to a physical disk?
coretemp-isa-0000
Adapter: ISA adapter
Package id 0: +43.0°C (high = +82.0°C, crit = +100.0°C)
Core 0: +33.0°C (high = +82.0°C, crit = +100.0°C)
Core 1: +33.0°C (high = +82.0°C, crit = +100.0°C)
Core 2: +38.0°C (high = +82.0°C, crit = +100.0°C)
Core 3: +43.0°C (high = +82.0°C, crit = +100.0°C)
Core 4: +33.0°C (high = +82.0°C, crit = +100.0°C)
Core 5: +34.0°C (high = +82.0°C, crit = +100.0°C)
drivetemp-scsi-0-50
Adapter: SCSI adapter
temp1: +31.0°C (low = +0.0°C, high = +65.0°C)
(crit low = -40.0°C, crit = +70.0°C)
(lowest = +30.0°C, highest = +34.0°C)
drivetemp-scsi-5-0
Adapter: SCSI adapter
temp1: +26.0°C (low = +0.0°C, high = +65.0°C)
(crit low = -40.0°C, crit = +70.0°C)
(lowest = +25.0°C, highest = +30.0°C)
drivetemp-scsi-0-30
Adapter: SCSI adapter
temp1: +29.0°C (low = +0.0°C, high = +65.0°C)
(crit low = -40.0°C, crit = +70.0°C)
(lowest = +28.0°C, highest = +33.0°C)
By using lsblk
, we can strip the drive serial number and scsi (HCTL) value like so:
root@morpheus:~# lsblk --noheadings --output=SERIAL,HCTL --scsi
3HG7TJ8N 0:0:0:0
Y6GX1KWC 0:0:1:0
5PK9EAHE 0:0:2:0
5PGENVSD 0:0:3:0
Y6GE3JJC 0:0:4:0
5PJJ0K4F 0:0:5:0
Z2GJ4V4T 0:0:6:0
ZJV5CF96 0:0:7:0
S6PTNZ0T331139A 1:0:0:0
S6PTNM0TA60489X 2:0:0:0
9LJSSYVG 5:0:0:0
9LJ8JJ8G 6:0:0:0
Using this output we can see that 0:0:3:0
maps to drivetemp-scsi-0-30
and so on.
Then, on the grafana side of things we can use overrides to map the specific value from node_hwmon_temp_celcius
to the physical drive name we're looking for.
The final product ended up looking like this for my dashboard.
There we are, a quick and easy way of mapping scsi drive temps using Prometheus' node_exporter into a more user friendly output.