Skip to content

Python-Kaa/Zabbix-UniFi-Template

Repository files navigation

Zabbix-UniFi-Template

Описание

Шаблон для наблюдения за оборудованием UniFi под управлением контроллера UniFi. Технически, представляет собой два шаблона и скрипт, который отсылает обработанные данные. Через LLD собираются данные о настроенных сайтах и для каждого из них - количество устройств на сайте. Второе правило LLD обнаруживает и создает узлы, соответствующие оборудованию UniFi

Для оборудования UniFi, обнаруженного по LLD собираются:

  • Статус Adopted
  • Количество подключенных клиентов (работает только для точек доступа)
  • Текущий статус устройства (доступно, обновляется, etc)
  • Тип устройства (точка доступа, коммутатор, etc)
  • Доступно ли обновление прошивки с указанием доступной версии
  • Дата/время последнего появления устройства на контроллере
  • Модель с расшифровкой
  • Статус EOL
  • Серийный номер устройства
  • Uptime

Триггеры обнаруживают следующие проблемы:

  • Устройство отключено (контроллер не может связаться с устройством)
  • Устройство перезагружено (uptime < 10 минут)
  • Устройство перешло в статус EOL
  • Устройство не добавлено в контроллер
  • Устройство находится в статусе, отличном от "Подключено"
  • Доступно обновление прошивки

Системные требования

Из строго обязательных требований:

  • Python + модуль requests
  • Zabbix Sender
  • Zabbix Agent

Условно-необязательными требованиями будем считать версии ПО, которые использовались при написании и тестировании шаблона. Здесь могут быть отклонения в разумных пределах, но, как говорится, на ваш страх и риск

  • Zabbix 6.4
  • Unifi Controller 7.5.187
  • Python 3.6

Подготовка

Установка Zabbix Sender

Если на хосте уже стоит агент, значит необходимые репозитории уже подключены, этот этап пропустим:

dnf install zabbix-sender -y

Макросы шаблона

Макрос Значение по умолчанию Описание
{$UNIFI_PASSWORD} root Пароль пользователя для подключения к контроллеру UniFi
{$UNIFI_PORT} 8443 Порт подключения к контроллеру
{$UNIFI_SERVER} 127.0.0.1 Адрес контроллера UniFi
{$UNIFI_USERNAME} root Имя пользователя для подключения к контроллеру UniFi

Подготовка скрипта к работе

Исходим из предположения, что скрипт располагается в /etc/zabbix/scripts и называется unifi.py. Копируем файл скрипта по указанному адресу. Если расположение или имя файла будут другими, нужно не забыть учесть соответствующие измения при конфигурации агента. После копирования файла в нужное место, нужно сделать его исполняемым

chmod +x /etc/zabbix/scripts/unifi.py

Настройка Zabbix Agent

В файл конфигурации агента следует добавить следующие строки, не забывая указать в конце второй строки актуальный IP-адреса сервера Zabbix:

UserParameter=unifi.device.discover[*],/etc/zabbix/scripts/unifi.py -server $1 -port $2 -username $3 -password $4
UserParameter=unifi.device.data[*],/etc/zabbix/scripts/unifi.py -server $1 -port $2 -username $3 -password $4 -site $5 -zabbix 127.0.0.1

После изменения файла конфигурации агента, понадобится его перезапуск. Что-то вроде

systemctl restart zabbix-agent

Замечания

  • Для просмотра статуса Adopt - нужны права администратора или явно выданное право "Device adoption" хотя бы на один сайт
  • Шаблон можно привязать к любому узлу, на котором работает агент, поскольку адрес контроллера явно указывается в макросах
  • К обнаруженным узлам можно привязывать любые шаблоны - такие, как ICMP или SNMP. При этом до всех устройств должен быть доступ с сервера Zabbix (или прокси). В случае с SNMP, нужно включить этот параметр на контроллере для устройств.
  • Zabbix принимает не любые символы в качестве значения макроса. Поэтому поаккуратнее со спецсимволами для пароля для пользователя в контроллере UniFi

About

UniFi Template

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages