Search
Write a publication
Pull to refresh

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
Логика и главная идея
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.