Сбор данных с MQTT в zabbix

.

Начиная с версии 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 это выглядит так:

Устанавливал на отдельный хост где нет первого агента или сервера. Если вам необходимо установить на машину где уже есть первый агент, его нужно удалить и установить второй (Агент 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    #Важно указать такое же имя как вы указывали выше при создании узла сети на сервере. Иначе активные проверки работать не будут.

Перезагружаем службу и проверяем что она завелась:

Можно проверять лог на предмет ошибок: /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

VN:F [1.9.20_1166]
Пожалуйста оцените статью, мне очень важно Ваше мнение!
Rating: 0.0/10 (0 votes cast)
Поделиться ссылкой с друзьями:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *