6 Capteur
Vue d'ensemble
Chaque puce de capteur possède son propre répertoire dans l’arborescence sysfs /sys/devices.
Pour trouver toutes les puces de capteur, il est plus facile de suivre les liens symboliques des périphériques depuis /sys/class/hwmon/hwmon*, où * est un nombre réel (0,1,2,...).
Les relevés des capteurs se trouvent soit dans le répertoire /sys/class/hwmon/hwmon*/ pour les périphériques virtuels, soit 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 de capteur.
Il n’y a qu’une seule valeur de relevé de capteur par fichier.
Le schéma commun de nommage des fichiers contenant les relevés des capteurs dans l’un des répertoires mentionnés ci-dessus est : <type><number>_<item>, où
- type - pour les puces de capteur, il s’agit de "in" (tension), "temp" (température), "fan" (ventilateur), etc.
- item - "input" (valeur mesurée), "max" (seuil haut), "min" (seuil bas), etc.
- number - toujours utilisé pour les éléments pouvant être présents plus d’une fois (commence généralement à 1, sauf pour les tensions qui commencent à 0). Si les fichiers ne se rapportent pas à 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 obtenues à l’aide des outils sensors-detect et sensors (paquet lm-sensors).
Sensors-detect aide à déterminer quels modules sont nécessaires pour les capteurs disponibles.
Lorsque les modules sont chargés, le programme sensors peut être utilisé pour afficher les relevés de toutes les puces de capteur.
L’étiquetage des relevés de capteurs utilisé par ce programme peut être différent du schéma de nommage commun (<type><number>_<item>) :
- s’il existe un fichier nommé
<type><number>_label, alors l’étiquette contenue dans ce fichier sera utilisée à la place du nom<type><number><item>; - s’il n’existe pas de fichier
<type><number>_label, alors le programme recherche dans/etc/sensors.conf(cela peut aussi être/etc/sensors3.conf, ou un autre fichier) une substitution de nom.
Cet étiquetage permet à l’utilisateur de déterminer quel type de matériel est utilisé.
S’il n’existe ni fichier <type><number>_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 sensors, les capteurs disponibles sont séparés selon le type de bus (adaptateur ISA, adaptateur PCI, adaptateur SPI, périphérique virtuel, interface ACPI, adaptateur HID).
Obtention des identifiants de capteur
Les libellés des capteurs, tels qu’ils sont affichés par la commande sensors, ne peuvent pas toujours être utilisés directement, car l’étiquetage varie selon les fabricants de puces.
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 ceux-ci, un seul nom affiché correspond directement à un identifiant interne :
zabbix_get -s 127.0.0.1 -k sensor[lm85-i2c-0-2e,in0]
2.240000
Toute tentative d’utiliser d’autres libellés affichés (comme Vcore ou +12V) ne fonctionnera pas :
zabbix_get -s 127.0.0.1 -k sensor[lm85-i2c-0-2e,Vcore]
ZBX_NOTSUPPORTED
Pour trouver l’identifiant interne du capteur accepté par Zabbix, exécutez sensors -u.
Dans la sortie, on peut observer ce qui suit :
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
...
Ainsi, le libellé Vcore correspond à l’identifiant in1, et +12V correspond à in4.
Selon la spécification hwmon sysfs du noyau, il s’agit de tensions sur les broches de la puce et, de manière générale, elles peuvent nécessiter une mise à l’échelle.
zabbix_get -s 127.0.0.1 -k sensor[lm85-i2c-0-2e,in1]
1.301000
Zabbix peut récupérer non seulement les mesures de tension (in), mais aussi de courant (curr), de température (temp) et de vitesse de ventilateur (fan).
Compatibilité
Anciennes distributions
Les relevés des capteurs sont obtenus à partir du répertoire /proc/sys/dev/sensors :
- device - nom du périphérique (si <mode> est utilisé, il s’agit d’une expression régulière)
- sensor - nom du capteur (si <mode> est utilisé, il s’agit d’une expression régulière)
- mode - valeurs possibles :
avg,max,min(si ce paramètre est omis, device et sensor sont traités littéralement)
Exemple de clé : sensor[w83781d-i2c-0-2d,temp1].
Distributions actuelles
Les relevés des capteurs sont obtenus à partir du répertoire /sys/class/hwmon :
- device - nom du périphérique (expression non régulière).
Le nom du périphérique peut être le nom réel du périphérique (par ex.
0000:00:18.3) ou le nom obtenu à l’aide du programme sensors (par ex.k8temp-pci-00c3). C’est à l’utilisateur de choisir quel nom utiliser. - sensor - nom du capteur (expression non régulière).
- mode - valeurs possibles :
avg,max,min(si ce paramètre est omis, device et sensor sont traités littéralement).
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].