6 Сензор

Сваки сензорски чип добија свој директоријум у стаблу sysfs /sys/devices. Да бисте пронашли све сензорске чипове, лакше је пратити симболичке везе уређаја из /sys/class/hwmon/hwmon*, где је * реални број (0,1,2,...).

Очитавања сензора се налазе или у директоријуму /sys/class/hwmon/hwmon*/ за виртуелне уређаје, или у директоријуму /sys/class/hwmon/hwmon*/device за невиртуелне уређаје. Датотека под називом име, која се налази унутар директоријума hwmon* или hwmon*/device, садржи име чипа, што одговара имену драјвера језгра који користи сензорски чип.

Постоји само једна вредност очитавања сензора по датотеци. Уобичајена шема за именовање датотека које садрже очитавања сензора унутар било ког од горе поменутих директоријума је: <type><number>_<item>, где

  • type - за сензорске чипове је "in" (напон), "temp" (температура), "fan" (вентилатор) итд.,
  • item - "input" (измерена вредност), "max" (високи праг), "min" (ниски праг) итд.,
  • number - увек се користи за елементе који могу бити присутни више од једном (обично почиње од 1, осим за напоне који почињу од 0). Ако се датотеке не односе на одређени елемент, имају једноставно име без броја.

Информације о сензорима доступним на домаћину могу се добити коришћењем алата sensor-detect и sensors (пакет lm-sensors: http://lm-sensors.org/). Sensors-detect помаже у одређивању који модули су неопходни за доступне сензоре. Када се модули учитавају, програм sensors може се користити за приказивање очитавања свих чипова сензора. Означавање очитавања сензора, које користи овај програм, може се разликовати од уобичајене шеме именовања (<type><number>_<item>):

  • ако постоји датотека под називом <type><number>_label, онда ће се ознака унутар ове датотеке користити уместо <type><number><item> имена;
  • ако не постоји датотека <type><number>_label, онда програм тражи замену имена унутар /etc/sensors.conf (може бити и /etc/sensors3.conf или другачије) за замену имена.

Ово означавање омогућава кориснику да одреди која врста хардвера се користи. Ако нема ни датотеке <type><number>_label ни ознаке унутар конфигурационе датотеке, тип хардвера се може одредити помоћу атрибута name (hwmon*/device/name). Стварна имена сензора, која zabbix_agent прихвата, могу се добити покретањем програма sensors са параметром -u (sensors -u).

У програму sensor доступни сензори су раздвојени по типу магистрале (ISA адаптер, PCI адаптер, SPI адаптер, виртуелни уређај, ACPI интерфејс, HID адаптер).

На Линуксу 2.4:

(Очитавања сензора се добијају из директоријума /proc/sys/dev/sensors)

  • device - назив уређаја (ако се користи <mode>, то је регуларни израз);
  • sensor - назив сензора (ако се користи <mode>, то је регуларни израз);
  • mode - могуће вредности: avg, max, min (ако је овај параметар изостављен, уређај и сензор се третирају дословно).

Пример кључа: sensor[w83781d-i2c-0-2d,temp1]

На Linux-у 2.6+:

(Очитавања сензора се добијају из директоријума /sys/class/hwmon)

  • device - назив уређаја (не регуларни израз). Назив уређаја може бити прави назив уређаја (нпр. 0000:00:18.3) или име стечено коришћењем програма сензора (нпр. k8temp-pci-00c3). На кориснику је да одабере које ће име користити;
  • sensor - назив сензора (нерегуларни израз);
  • mode - могуће вредности: avg, max, min (ако је овај параметар изостављен, уређај и сензор се третирају дословно).

Пример кључа:

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

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

Добијање имена сензора

Ознаке сензора, како их штампа команда sensors, не могу се увек користити директно јер именовање ознака може бити различито за сваког добављача чипова сензора. На пример, излаз sensors може да садржи следеће линије:

$ 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)

Од њих, само једна ознака може бити директно коришћена:

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

Покушај коришћења других ознака (као што су Vcore или +12V) неће функционисати.

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

Да бисте сазнали стварно име сензора, које Zabbix може користити за преузимање очитавања сензора, покрените sensors -u. На излазу се може видети следеће:

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

Дакле, Vcore треба да се испитује као in1, а +12V као in4. Према спецификацији, ово су напони на пиновима чипа и генерално говорећи, можда ће бити потребно скалирање.

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

Zabbix може да прикупи не само очитавања напона (in), већ и струје (curr), температуре (temp) и брзине вентилатора (fan).