Как стать автором
Обновить

USB TEMPer настройка датчика на Ubuntu 18.04 lts и добавление к мониторингу Zabbix

Начало



Все началось с того что в серверной неожиданно накрылась система кондиционирования и соответственно на серверах накрылись пара куллеров. После это было принято решение настроить мониторинг температур на серверах и серверной в общем.


Поиск


С температурой серверов, благодаря Хабру, проблем не было, а вот с мониторингом самой серверной, пришлось что то выдумывать. Посидев на E-bay и на Alliexpress я нашел 2 варианта:

2 Channels LAN Interface Ethernet Thermometer Temperature Sensor Network APP POE

и

TEMPER USB

Выбор



Идеалом всего было бы взять сетевой термометр 2 Channels LAN Interface Ethernet Thermometer Temperature Sensor Network APP POE на 2 датчика для более масштабного мониторинга температуры + привязки к Zabbix по SNMP (проще, надежней и дороже). Понимания настройки TEMPer USB на Убунту у меня не было, да и полномасштабного знания Линукс тоже. Но как то из серфинга на Хабре, я увидел что кто то, когда то подобное делал тут. Если это кто то сделал, то сделаю и я.

Начальство, посмотрев на цену первого, сказало — «Настроишь TEMPer USB за 5 баксов» (у новых погрешность 2-3 градуса, о старых народ говорит что может быть и 8 градусов, но есть софтинка которая позволяет откалибровать датчик).

Решение



У нас Zabbix сервер установлен на отдельную железку и все это крутится на Ubuntu 18.04 lts.
И конечно же хотелось вставить через USB удлинитель и что бы все заработало, но нет — этот датчик работает из-под винды.

Поиск решений в Гугле особых результатов не дал, кроме нерабочих ссылок десятилетней давности. Но логика осталась прежней.

Подготовка



Установка драйверов и библиотек у кого нет (коллеги всегда нужно смотреть в документацию по Вашей ОС) нам нужно будет: libusb, libhidapi-dev и libusb-dev в Убунту все просто:

$sudo apt-get install libusb
$sudo apt-get install libusb-dev
$sudo apt-get install libhidapi-dev


Обнаружение «гаджета»



С начала нам нужно узнать видит ли сервер флешку:
$lsusb
У меня код вендора и ИД устройства:
Bus 001 Device 005: ID 413d:2107
Также нам нужно узнать исполняемые файлы «флэшки»
$dmesg
[ 6620.222763] hid-generic 0003:413D:2107.0007: hiddev0,hidraw4: USB HID v1.10 Device

У меня оказался /dev/hidraw4, позже мы к нему обратимся.

Установка софта



После этого нам нужно установить необходимый софт и распихать его по папкам, для удобства работать будем из-под Рута (sudo -i):

$ cd /opt/
$ git clone https://github.com/edorfaus/TEMPered
$ cd TEMPered
$ cmake .
$ cd /opt/TEMPered/utils
$ make
$ cp hid-query /usr/local/bin


Нахождение «флэшки» и её исполняемого файла



После установки проверяем какой именно файл будет отдавать нам метрики
$./hid-query /dev/hidraw4 0x01 0x80 0x33 0x01 0x00 0x00 0x00 0x00

Device /dev/hidraw4: 413d:2107 interface 1: (null) (null)

Writing data (9 bytes):

00 01 80 33 01 00 00 00 00

Response from device (8 bytes):

80 80 0a 21 4e 20 00 00


Файл находится по адресу /dev/hidraw4

Настройка работы датчика



Теперь напишем скриптик что ты получить значения температуры в читаемом формате. Скрипт я закинул в папку с Zabbix.

$ cd /etc/zabbix/scripts
$ nano TEMPered


#!/bin/bash
OUTLINE=`/usr/local/bin/hid-query /dev/hidraw4 0x01 0x80 0x33 0x01 0x00 0x00 0x00 0x00|grep -A1 ^Response|tail -1`
OUTNUM=`echo $OUTLINE|sed -e 's/^[^0-9a-f]*[0-9a-f][0-9a-f] [0-9a-f][0-9a-f] \([0-9a-f][0-9a-f]\) \([0-9a-f][0-9a-f]\) .*$/0x\1\2/'`
HEX4=${OUTNUM:2:4}
DVAL=$(( 16#$HEX4 ))
CTEMP=$(bc <<< «scale=2; $DVAL/100»)
echo $CTEMP


Задаем права на выполнение
$ chmod +x TEMPered
И проверяем работу скрипта
$ ./TEMPered
18.97


Скрипт выполняется

Подготовка Zabbix



При добавлении в Zabbix самому агенту не хватало прав на выполнение. Поигравшись с правами мы так и не пришли к желаемому результату и сделали проще. Выполняем скрипт из под рута и записываем это все в текстовый файл (TEMPer.txt), для автоматизации используем КРОН.
Проверка записи:
$ ./TEMPered > /tmp/TEMPer.txt
19.04

Заходим в cron
$ nano /etc/crontab

Вносим запись на выполнение каждую минуту

*/1 * * * * root /etc/zabbix/scripts/TEMPered > /tmp/TEMPer.txt


Правим конфиг мониторинга
$nano /etc/zabbix/zabbix_agentd.conf

UserParameter=TEMPer,cat /tmp/TEMPer.txt


Добавление на вэб-интерфейс Zabbix



Создадим новый элемент данных (в нашем случае напрямую на сервере с Zabbix):


Проверим поступление данных


Добавим тригер:


И график, для наглядности:



Вывод

Знание того что у некоторых серверов Dell и HP есть встроенные датчики температуры среды, нас как админов немного балуют. И я совсем не о температуре говорю, такие задачи дают нам возможность взбодриться, вытянуть из закромов все знания и техники которые у нас есть.

Спасибо за внимание!


Источники:
Форум Убунту
Статья Maikel van Leeuwen
Логика и главная идея
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.