How it going to be like on the dashboard

CPU temperature by core + other sensors like AX201 module has

NVMe temperature

Voltage Monitoring

Fan rotation speed

FAN3 is CPU Fan, FAN2 is first system fan, second System fan is not monitored separately


How it is done

Zabbix 7.2.2 + zabbix_agent2 on Ubuntu 25.04


apt install -y lm-sensors jq


Internal zabbix sensors operate only CPU temperature

root@server5:~# zabbix_agent2 -t 'sensor[coretemp-isa-0000,temp1]'
sensor[coretemp-isa-0000,temp1]               [s|77.000000]

root@server5:~# zabbix_agent2 -t 'sensor[nvme-pci-0100,temp1]'
sensor[nvme-pci-0100,temp1]                   [m|ZBX_NOTSUPPORTED] [Cannot obtain sensor information.]

root@server5:~# zabbix_agent2 -t 'sensor[iwlwifi_1-virtual-0,temp1]'
sensor[iwlwifi_1-virtual-0,temp1]             [m|ZBX_NOTSUPPORTED] [Cannot obtain sensor information.]



vi /etc/zabbix/zabbix_agent2.d/plugins.d/sensors.conf
UserParameter=sensors.discovery,/etc/zabbix/scripts/discover_sensors.sh
UserParameter=sensor.value[*],/etc/zabbix/scripts/get_sensor_value.sh "$1" "$2"



vi /etc/zabbix/scripts/discover_sensors.sh
#!/bin/bash

sensors -j | jq -c '
  to_entries[] |        # iterate over chips
  . as $chip |
  {
    chip: $chip.key,
    sensors: ($chip.value | to_entries[] | select(.key != "Adapter") | .value)
  } |
  {
    chip: .chip,
    sensors: .sensors | to_entries[] | select(.key | test("temp[0-9]_input")) | .key
  } |
  {
    "{#CHIP}": .chip,
    "{#SENSOR}": .sensors
  }
' | jq -s '{data: .}'


vi /etc/zabbix/scripts/get_sensor_value.sh
#!/bin/bash
CHIP="$1"
SENSOR="$2"

sensors -j | jq -r --arg chip "$CHIP" --arg sensor "$SENSOR" '
  getpath([$chip] + ($sensor | split("/"))) // empty
'

Check if it is working

# NVME 
root@server5:~# zabbix_agent2 -t 'sensor.value[nvme-pci-0100,Sensor 2/temp3_input]'
sensor.value[nvme-pci-0100,Sensor 2/temp3_input][s|39.850]

root@server5:~# zabbix_agent2 -t 'sensor.value[nvme-pci-0100,Sensor 1/temp2_input]'
sensor.value[nvme-pci-0100,Sensor 1/temp2_input][s|31.850]

root@server5:~# zabbix_agent2 -t 'sensor.value[nvme-pci-0100,Composite/temp1_input]'
sensor.value[nvme-pci-0100,Composite/temp1_input][s|31.850]

root@server5:~# zabbix_agent2 -t 'sensor.value[nvme-pci-0100,Composite/temp1_max]'
sensor.value[nvme-pci-0100,Composite/temp1_max][s|81.850]

#Wi-Fi
root@server5:~# zabbix_agent2 -t 'sensor.value[iwlwifi_1-virtual-0,temp1/temp1_input]'
sensor.value[iwlwifi_1-virtual-0,temp1/temp1_input][s|44.000]

# ACPI
root@server5:~# zabbix_agent2 -t 'sensor.value[acpitz-acpi-0,temp1/temp1_input]'
sensor.value[acpitz-acpi-0,temp1/temp1_input] [s|27.800]

CPU Core #4
root@server5:~# zabbix_agent2 -t 'sensor.value[coretemp-isa-0000,Core 3/temp5_input]'
sensor.value[coretemp-isa-0000,Core 3/temp5_input][s|76.000]

root@server5:~# zabbix_agent2 -t 'sensor.value[coretemp-isa-0000,Core 3/temp5_max]'
sensor.value[coretemp-isa-0000,Core 3/temp5_max][s|105.000]

zabbix_agent2 -t 'sensor.value[it8613-isa-0a30,fan2/fan2_input]'
sensor.value[it8613-isa-0a30,fan2/fan2_input] [s|4383.000]