Начиная с версии 5.4 в zabbix появилась возможность мониторить данные с MQTT брокера без всяких костылей через активного агента (agent 2).
У меня уже имеется zabbix сервер версии 7.0 с обычными(неактивными) агентами на разных хостах, но тут мне захотелось собирать температуру с датчиков по протоколу MQTT. В неактивных агентах это невозможно без костылей, но уже имеется агент 2 который поддерживает активные проверки.
Для его установки переходим на официальный сайт: https://www.zabbix.com/download
- ZABBIX VERSION — выбираем версию Zabbix сервера который у вас установлен
- OS DISTRIBUTION — выбираем ваш дистрибутив
- OS VERSION — выбираем версию дистрибутива
- ZABBIX COMPONENT — выбираем Agent 2
Сайт выдаст необходимые команды для установки, в моем случае для Ubuntu 24.04 это выглядит так:
|
1 2 3 4 |
wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu24.04_all.deb dpkg -i zabbix-release_latest_7.0+ubuntu24.04_all.deb apt update apt install zabbix-agent2 |
Устанавливал на отдельный хост где нет первого агента или сервера. Если вам необходимо установить на машину где уже есть первый агент, его нужно удалить и установить второй (Агент 2 может выполнять функции агента 1 и в заббиксе ничего перенастраивать не нужно). Если у вас есть кастомные пользовательские параметры, не забудьте их сохранить и перенести на агент 2).
Настройка:
192.168.1.20 — Zabbix сервер
192.168.1.30 — Agent 2
— На сервере создаем новый узел:
Сбор данных -> Узлы сети -> Создать узел сети
- Имя узла сети: MQTT_TEST
- Агент: 192.168.1.30 (порт 10050)
— Настройка параметров агента
В файле /etc/zabbix/zabbix_agent2.conf укажите следующие параметры:
- Server=192.168.1.20 #IP-адрес сервера Zabbix для пассивных проверок.
- ServerActive=192.168.1.20 #IP-адрес сервера Zabbix для активных проверок.
- Hostname=MQTT_TEST #Важно указать такое же имя как вы указывали выше при создании узла сети на сервере. Иначе активные проверки работать не будут.
Перезагружаем службу и проверяем что она завелась:
|
1 2 |
systemctl restart zabbix-agent2.service systemctl status zabbix-agent2.service |
Можно проверять лог на предмет ошибок: /var/log/zabbix/zabbix_agent2.log
Плагин MQTT в агенте работает сразу, ничего дополнительно активировать не нужно.
— Создание элемента данных
Теперь можно создать элемент данных который будет показывать наши значения с MQTT брокера, у меня это температура.
Сбор данных -> Узлы сети -> MQTT_TEST -> Элементы данных -> Создать элемент данных
- Имя: 1_mqtt.temp
- Тип: Zabbix агент (активный)
- Ключ: mqtt.get["192.168.1.30","myhome/workshop/esp8266/temp1","mqtt","mqttPwd"]
- Тип информации: Числовой с плавающей точкой
Вместо 192.168.1.30 можно указать localhost если агент и брокер находятся на одной машине
Если у вас нет логина и пароля на брокере, то просто не указываем их.
Пример: mqtt.get["localhost","myhome/workshop/esp8266/temp1"]
После этого как только устройство будет передавать температуру, агент2 сразу передаст значения на сервер. Обновление происходит именно когда устройство передает свои данные, а не через заданный на сервере интервал.
В дополнение если у вас будет пачка элементов и необходимо указывать пароль, что бы не указывать его каждый раз можно создать сессию в настройках агента и подключаться к ней. Для этого в файле /etc/zabbix/zabbix_agent2.d/plugins.d/mqtt.conf указываем:
- Plugins.MQTT.Sessions.my_session.Url=localhost #Адрес брокера
- Plugins.MQTT.Sessions.my_session.Topic=myhome/ #Топик с которого получать обновления
- Plugins.MQTT.Sessions.my_session.User=mqtt #Имя пользователя
- Plugins.MQTT.Sessions.my_session.Password=mqttPwd #Пароль
Где my_session желаемое имя для вашей сессии, их можно создавать несколько.
Ключ в элементе данных будет выглядеть так: mqtt.get["my_session","myhome/workshop/esp8266/temp1"]
Немного официальной информации: https://www.zabbix.com/integrations/mqtt
Свежие комментарии