7 Sensor

Elke sensorchip heeft zijn eigen directory in de sysfs /sys/devices boomstructuur. Om alle sensorchips te vinden, is het gemakkelijker om de apparaat-symbolische koppelingen te volgen vanuit /sys/class/hwmon/hwmon*, waar * een echt getal is (0, 1, 2, ...).

De sensoruitlezingen bevinden zich ofwel in de /sys/class/hwmon/hwmon* directory voor virtuele apparaten, of in de /sys/class/hwmon/hwmon*/device directory voor niet-virtuele apparaten. Een bestand genaamd 'name', dat zich bevindt in de hwmon* of hwmon*/device directories, bevat de naam van de chip, die overeenkomt met de naam van de kernelstuurprogramma die door de sensorchip wordt gebruikt.

Er is slechts één sensoruitleeswaarde per bestand. Het gebruikelijke schema voor het benoemen van de bestanden die sensoruitlezingen bevatten in een van de hierboven genoemde directories is: <type><number>_<item>, waar

  • type - voor sensorchips is "in" (spanning), "temp" (temperatuur), "fan" (ventilator), enzovoort,
  • item - "input" (gemeten waarde), "max" (hoge drempel), "min" (lage drempel), enzovoort,
  • number - altijd gebruikt voor elementen die meerdere keren aanwezig kunnen zijn (begint meestal vanaf 1, behalve voor spanningen die vanaf 0 beginnen). Als bestanden niet verwijzen naar een specifiek element, hebben ze een eenvoudige naam zonder nummer.

De informatie over de beschikbare sensoren op de host kan worden verkregen met behulp van de sensor-detect en sensors hulpprogramma's (lm-sensors pakket: http://lm-sensors.org/). Sensors-detect helpt bij het bepalen welke modules nodig zijn voor beschikbare sensoren. Wanneer de modules zijn geladen, kan het sensors programma worden gebruikt om de uitlezingen van alle sensorchips weer te geven. De etikettering van sensoruitlezingen, die door dit programma wordt gebruikt, kan verschillen van het gebruikelijke benamingsschema (<type><number>_<item> ):

  • als er een bestand is met de naam <type><number>_label, dan zal het label in dit bestand worden gebruikt in plaats van de <type><number><item> naam;
  • als er geen <type><number>_label bestand is, dan zoekt het programma in het /etc/sensors.conf bestand (kan ook /etc/sensors3.conf zijn, of anders) naar de naamvervanging.

Deze etikettering stelt de gebruiker in staat om te bepalen wat voor soort hardware wordt gebruikt. Als er noch een <type><number>_label bestand is, noch een label in het configuratiebestand, kan het type hardware worden bepaald aan de hand van het naamattribuut (hwmon*/device/name). De feitelijke namen van sensoren die door de zabbix_agent worden geaccepteerd, kunnen worden verkregen door het sensors programma uit te voeren met de parameter -u (sensors -u).

In het sensors programma worden de beschikbare sensoren gescheiden door het bustype (ISA-adapter, PCI-adapter, SPI-adapter, virtueel apparaat, ACPI-interface, HID-adapter).

Op Linux 2.4:

(Sensormetingen worden verkregen uit de directory /proc/sys/dev/sensors)

  • apparaat - apparaatnaam (als <mode> wordt gebruikt, is het een normale) uitdrukking);
  • sensor - sensornaam (als <mode> wordt gebruikt, is het een normale) uitdrukking);
  • mode - mogelijke waarden: avg, max, min (als deze parameter is weggelaten, apparaat en sensor worden woordelijk behandeld).

Voorbeeldsleutel: sensor[w83781d-i2c-0-2d,temp1]

Voorafgaand aan Zabbix 1.8.4 werd het sensor[temp1]-formaat gebruikt.

Op Linux 2.6+:

(Sensoruitlezingen worden verkregen uit de map /sys/class/hwmon)

  • apparaat - apparaatnaam (niet-reguliere expressie). De apparaatnaam: kan de werkelijke naam van het apparaat zijn (bijv. 0000:00:18.3) of de naam verkregen met behulp van het sensorenprogramma (bijv. k8temp-pci-00c3). Het is op aan de gebruiker om te kiezen welke naam hij wil gebruiken;
  • sensor - sensornaam (niet-reguliere expressie);
  • mode - mogelijke waarden: avg, max, min (als deze parameter is weggelaten, apparaat en sensor worden woordelijk behandeld).

Voorbeeld sleutel:

sensor[k8temp-pci-00c3,temp,max] of sensor[0000:00:18.3,temp1]

sensor[smsc47b397-isa-0880,in,avg] of sensor[smsc47b397.2176,in1]

Sensornamen verkrijgen

Sensor labels, zoals afgedrukt door het sensors-commando, kunnen niet altijd direct gebruikt omdat de naamgeving van labels voor elk anders kan zijn leverancier van sensorchips. De uitvoer van sensoren kan bijvoorbeeld de . bevatten volgende regels:

$ sensoren
       in0: +2,24 V (min = +0,00 V, max = +3,32 V)
       Vcore: +1,15 V (min = +0,00 V, max = +2,99 V)
       +3,3 V: +3,30 V (min = +2,97 V, max = +3,63 V)
       +12V: +13,00 V (min = +0,00 V, max = +15,94 V)
       M/B-temperatuur: +30,0°C (laag = -127,0°C, hoog = +127,0°C)

Hiervan mag slechts één label direct worden gebruikt:

$ zabbix_get -s 127.0.0.1 -k-sensor [lm85-i2c-0-2e,in0]
       2.240000

Pogingen om andere labels te gebruiken (zoals Vcore of +12V) zullen niet werken.

$ zabbix_get -s 127.0.0.1 -k-sensor [lm85-i2c-0-2e,Vcore]
       ZBX_NOTSUPPORTED

Om de daadwerkelijke sensornaam te achterhalen, die door Zabbix kan worden gebruikt om: haal de sensormetingen op, voer sensors -u uit. In de uitvoer, de volgende kan worden waargenomen:

$ sensoren -u
       ...
       Vcore:
         in1_input: 1.15
         in1_min: 0.00
         in1_max: 2.99
         in1_alarm: 0.00
       ...
       +12V:
         in4_input: 13.00
         in4_min: 0.00
         in4_max: 15.94
         in4_alarm: 0.00
       ...

Dus Vcore moet worden opgevraagd als in1, en +12V moet worden opgevraagd als in4.1

$ zabbix_get -s 127.0.0.1 -k-sensor [lm85-i2c-0-2e,in1]
       1.301000

Niet alleen spanning (in), maar ook stroom (curr), temperatuur (temp) en ventilatorsnelheid (ventilator) metingen kunnen worden opgehaald door Zabbix.


  1. Volgens specificatie dit zijn spanningen op chippinnen en kunnen in het algemeen nodig zijn schalen.↩︎