This is a translation of the original English documentation page. Help us make it better.

8 Capteur

Chaque puce de capteur obtient son propre répertoire dans l’arborescence /sys/devices. Pour trouver toutes les puces de capteur, il est plus facile de suivre les liens symboliques du périphérique à partir de /sys/class/hwmon/hwmon*, où * est un nombre réel (0,1,2, ...).

Les lectures de capteur se trouvent dans le répertoire /sys/class/hwmon/hwmon*/ pour les périphériques virtuels ou dans le répertoire /sys/class/hwmon/hwmon*/device pour les périphériques non virtuels. Un fichier, nommé name, situé dans les répertoires hwmon* ou hwmon*/device contient le nom de la puce, qui correspond au nom du pilote du noyau utilisé par la puce du capteur.

Il n'y a qu'une seule valeur de lecture de capteur par fichier. Le schéma commun pour nommer les fichiers contenant des lectures de capteur dans l’un des répertoires mentionnés ci-dessus est le suivant : <type><numéro>_<élément>, où

  • type - pour les puces de capteur est "in" (voltage), "temp" (température), "fan" (ventilateur), etc.,
  • élément - "input" (valeur mesurée), "max" (seuil haut), "min" (seuil bas), etc.,
  • numéro - toujours utilisé pour les éléments pouvant être présents plusieurs fois (commence généralement à 1, sauf pour les voltages qui commencent à 0). Si les fichiers ne font pas référence à un élément spécifique, ils portent un nom simple, sans numéro.

Les informations concernant les capteurs disponibles sur l’hôte peuvent être acquises à l’aide des outils sensor-detect et sensor (package lm-capteurs : http://lm-sensors.org/). Sensors-detect permet de déterminer quels modules sont nécessaires pour les capteurs disponibles. Lorsque les modules sont chargés, le programme sensor peut être utilisé pour afficher les lectures de toutes les puces de capteur. L'étiquetage des lectures de capteur, utilisé par ce programme, peut être différent du schéma de nommage commun (<type><numéro>_ élément>) :

  • s'il y a un fichier appelé <type><numéro>_label, alors le label dans ce fichier sera utilisé au lieu du nom <type><numéro><élément> ;
  • s'il n'y a pas de fichier <type><numéro>_label, alors le programme cherche dans /etc/sensors.conf (peut être aussi /etc/sensors3.conf, ou autre) pour la substitution de nom.

Cet étiquetage permet à l’utilisateur de déterminer le type de matériel utilisé. S'il n'y a ni fichier <type><numéro>_label ni étiquette dans le fichier de configuration, le type de matériel peut être déterminé par l'attribut name (hwmon*/device/name). Les noms réels des capteurs, acceptés par zabbix_agent, peuvent être obtenus en exécutant le programme sensors avec le paramètre -u (sensors -u).

Dans le programme sensor les capteurs disponibles sont séparés par le type de bus (ISA adapter, PCI adapter, SPI adapter, Virtual device, ACPI interface, HID adapter).

Sur Linux 2.4 :

(Les lectures des capteurs sont obtenues à partir du répertoire /proc/sys/dev/sensors)

  • device - nom du périphérique (si <mode> est utilisé, c'est une expression régulière) ;
  • sensor - nom du capteur (si <mode> est utilisé, c'est une expression régulière) ;
  • mode - valeurs possibles : avg, max, min (si ce paramètre est omis, le périphérique et le capteur sont traités textuellement).

Exemple de clé :

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

Avant Zabbix 1.8.4, le format sensor[temp1] était utilisé.

Sur Linux 2.6+ :

(Les lectures des capteurs sont obtenues à partir du répertoire /sys/class/hwmon)

  • device - nom du périphérique (pas une expression régulière). Le nom du périphérique peut être le nom réel du périphérique (ex. 0000:00:18.3) ou le nom acquis en utilisant le programme de sensors (ex. k8temp-pci-00c3). Il appartient à l'utilisateur de choisir le nom à utiliser ;
  • sensor - nom du capteur (pas une expression régulière) ;
  • mode - valeurs possibles : avg, max, min (si ce paramètre est omis, le périphérique et le capteur sont traités textuellement).

Exemples de clés :

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

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

Obtention des noms de capteurs

Les étiquettes de capteur, telles qu'affichées par la commande sensors, ne peuvent pas toujours être utilisées directement, car leur nom peut être différent pour chaque fournisseur de puce de capteur. Par exemple, la sortie de sensors peut contenir les lignes suivantes :

$ sensors
       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.3V:       +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 Temp:    +30.0°C  (low  = -127.0°C, high = +127.0°C)

Parmi celles-ci, une seule étiquette peut être utilisée directement :

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

Tenter d’utiliser d’autres étiquettes (comme Vcore ou +12V) ne fonctionnera pas.

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

Pour connaître le nom du capteur réel, qui peut être utilisé par Zabbix pour récupérer les lectures du capteur, exécutez sensors -u. Dans la sortie, on peut observer :

$ sensors -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
       ...

Donc Vcore devrait être requété comme in1, et +12V devrait être requété comme in4. 1

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

Pas seulement le voltage (in), mais aussi la lecture du courant (curr), la température (temp) et la vitesse du ventilateur (fan) peuvent être récupérées par Zabbix.


  1. Selon les spécifications ce sont des voltages sur les broches des puces et peuvent généralement nécessiter une mise à l'échelle.↩︎