Сегодняшняя задумка — это проработка шагов, как снимать показания с датчика температуры и влажности, а именно DHT 11 подключенного к Raspberry Pi 3 Model B (операционная система Raspbian Stretch) и отправлять их в Zabbix Server 4.4, дабы следить за обстановкой в помещении, где у меня будет установлен миникомпьютер. Плюс это скажется на будущем использовании если я захочу видеть и другие показания в сервисе мониторинга от различных датчиков. По сути, я делаю интерфейс по мониторингу за текущей обстановкой дома/работе.

Все действия разбиваю на законченные шаги.

Шаг №1: Установлен Zabbix Server 4.4

Разбор установки Zabbix 4.4 на Ubuntu 18.04 Server

ekzorchik@srv-zabbix:~$ sudo apt-get install -y zabbix-get

Шаг №2: Устанавливаю Zabbixагент версии 4.4 на Raspberry Pi 3 Model B (Raspbian Stretch)

Как установить Zabbix 4.4 агент на Raspbian Stretch

Конфигурационный файл Zabbix-агента:

pi@raspberrypi:~ $ sudo nano /etc/zabbix/zabbix_agentd.conf

PidFile=/var/run/zabbix/zabbix_agentd.pid

LogFile=/var/log/zabbix/zabbix_agentd.log

LogFileSize=0

EnableRemoteCommands=1

LogRemoteCommands=1

Server=127.0.0.1,172.33.33.117

ServerActive=127.0.0.1,172.33.33.117

Hostname=Zabbix server

Include=/etc/zabbix/zabbix_agentd.d/*.conf

UnsafeUserParameters=1

После не забываем сохранить внесенные изменения.

  • IP-адрес 172.33.33.117 — это адрес моего Zabbix-сервера.
pi@raspberrypi:~ $ sudo usermod -aG video zabbix

pi@raspberrypi:~ $ sudo usermod -aG gpio zabbix

pi@raspberrypi:~ $ sudo nano /etc/sudoers

zabbix ALL=(ALL) NOPASSWD:ALL

pi@raspberrypi:~ $ sudo reboot

Шаг №3: Подключаю к Raspberry Pi 3 Model B (Raspbian Stretch) датчик DHT 11 опираюсь на заметку.

Шаг №4: Устанавливаю Python скрипт через который будет идти опрос с Zabbixсервера через Zabbixагент датчика температуры и влажности DHT 11. Его особенность в том что он универсален и позволяет считывать показания с датчиков: DHT 11, DHT 22.

pi@raspberrypi:~ $ git clone https://github.com/adafruit/Adafruit_Python_DHT.git

pi@raspberrypi:~ $ cd Adafruit_Python_DHT/

pi@raspberrypi:~/Adafruit_Python_DHT $ sudo python setup.py install

pi@raspberrypi:~/Adafruit_Python_DHT $ cd ~

pi@raspberrypi:~ $ sudo mkdir -p /usr/lib/zabbix/externalscripts

pi@raspberrypi:~ $ sudo cp Adafruit_Python_DHT/examples/AdafruitDHT.py /usr/lib/zabbix/externalscripts/dht.py

pi@raspberrypi:~ $ sudo /usr/lib/zabbix/externalscripts/dht.py 11 4

Temp=22.0*  Humidity=20.0%

pi@raspberrypi:~ $

Шаг №5: Создаю конфигурационный файл для Zabbixагента который будет дергать данный Python скрипт и извлекать показания которые после будут в Zabbixсервере:

pi@raspberrypi:~ $ sudo nano /etc/zabbix/zabbix_agentd.d/dht11.conf

#Temperature

UserParameter=rpi.dht11temp[*],sudo /usr/lib/zabbix/externalscripts/dht.py 11 4 | cut -c "6-9"

#Humidity

UserParameter=rpi.dht11humi[*],sudo /usr/lib/zabbix/externalscripts/dht.py 11 4 | cut -c "22-25"

pi@raspberrypi:~ $ sudo systemctl restart zabbix-agent

pi@raspberrypi:~ $ sudo zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -t rpi.dht11temp

rpi.dht11temp                                 [t|23.0]

pi@raspberrypi:~ $ sudo zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -t rpi.dht11humi

rpi.dht11humi                                 [t|18.0]

pi@raspberrypi:~ $

Шаг №6: Проверяю с Zabbixсервера что могу через получить данные термпературы и влажности по ключам предопределенным на миникомпьютере для Zabbixагента:

ekzorchik@srv-zabbix:~$ zabbix_get -s 172.33.33.10 -k rpi.dht11temp

23.0

ekzorchik@srv-zabbix:~$ zabbix_get -s 172.33.33.10 -k rpi.dht11humi

17.0

Отлично.

Шаг №7: Завожу на Zabbixсервере хост raspberry и создаюЭлементы данных” с “Тип информации” = “Числовой (с плавающей точкой)” (но можно и “Числовой (целовое положительное)”).

  • Ключ: rpi.dht11temp
  • Ключ: rpi.dht11humi – по аналогии как для rpi.dht11temp

Создаю "Элемент данных" для получения температуры с DHT 11

Создаю "Элемент данных" для получения влажности с DHT 11

Если же Zabbix-сервер не может считать показания и пишет: “Timeout while executing a shell script.

Если же Zabbix-сервер не может считать показания и пишет: “Timeout while executing a shell script.”

В настройках Zabbix-агента следует изменить дефолтное значение в три секунды на:

pi@raspberrypi:~ $ sudo nano /etc/zabbix/zabbix_agentd.conf

Timeout=5

pi@raspberrypi:~ $ sudo systemctl restart zabbix-agent

ekzorchik@srv-zabbix:~$ sudo systemctl restart zabbix-server zabbix-agent

И не лишним будет изменить “Интервал обновления” с 1m, к примеру на 5m и выполните, выделил эти два элемента и нажав “Проверить сейчас

Измененный интервал опроса и задержка запуска скрипта

На заметку: Если “Состояние – Активировано” — а показаний нет, то:

ekzorchik@srv-zabbix:~$ sudo systemctl restart zabbix-server zabbix-agent

После через Web-интерфейс смотрю, а снимаются ли показания с датчика DHT 11 подключенного к Rasbperry Pi 3 Model B:

http://IP&DNS/zabbix – user&pass – Мониторинг – Последние данные -

  • Узлы сети: raspberry

и нажимаю “Применить”. Вот они мои показания.

Zabbix Server 4.4 успешно опрашивает датчик DHT 11 + Raspberry Pi 3 Model B

Теперь можно и график по данным показаниям настроить.

Итого, я разобрал, как снимать и передавать показания с датчик в Zabbix-сервер. На этом пока все, с уважением автор блога Олло Александр aka ekzorchik.