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
Логика и главная идея