Шаблон для наблюдения за оборудованием UniFi под управлением контроллера UniFi. Технически, представляет собой два шаблона и скрипт, который отсылает обработанные данные. Через LLD собираются данные о настроенных сайтах и для каждого из них - количество устройств на сайте. Второе правило LLD обнаруживает и создает узлы, соответствующие оборудованию UniFi
- Статус 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
Если на хосте уже стоит агент, значит необходимые репозитории уже подключены, этот этап пропустим:
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
В файл конфигурации агента следует добавить следующие строки, не забывая указать в конце второй строки актуальный 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