Много лет использую Zabbix и постоянно нахожу что-то новое.
Была задача настроить авторегистрацию хостов после установки на них агентов. Мне не так часто приходилось это настраивать, потому что никогда не работал с большими инфраструктурами, где узлы постоянно добавляются или удаляются из системы. Даже если у вас в управлении штук 50 серверов, вряд ли вы будете даже раз в день вводить новый сервер, которому нужен будет мониторинг. Скорее всего это будет раз в неделю или раз в месяц. А может и того реже. Zabbix больше про долгосрочное хранение метрик и тренды. Что-то временное в него заводить не имеет большого смысла. Для этого проще взять что-то другое. Пользовательские компьютеры я тоже никогда не заводил в мониторинг.
Я всегда знал, что в Zabbix Server есть автообнаружение узлов банальным сканированием заданных подсетей. Как только попадается что-то новое, чего ещё нет в системе, добавляем и навешиваем группы и шаблоны в зависимости от настроенных действий автообнаружения. Работает просто и понятно. Главный минус в том, что работает не мгновенно и надо постоянно сканировать сеть в поисках узлов, что создаёт постоянный спам запросами в сети.
Второй инструмент - API. Там есть метод host.create, который активно используется в различных интеграциях с CMDB или в CI/CD. Тоже простой и понятный способ.
Попросив ИИ написать авторегистрацию, думал, что он наваяет что-то через API. Он легко программирует подобные интеграции. Когда агент всё сделал, я посмотрел реализацию. Он всё настроил через авторегистрацию активных агентов. Работает это максимально просто и удобно, мне понравилось. Мимо меня всё это прошло, потому что редко использую агентов в активном режиме, когда они сами шлют запросы на сервер мониторинга для получения инструкций. У меня чаще всего есть сетевая связность между агентами и сервером, поэтому использую пассивный режим агентов, когда их опрашивает сервер. Архитектурно это более простые запросы и обработки, которые меньше нагружают сеть, агентов и сервер. Плюс, до версии 7.0 через агентов в активном режиме нельзя было выполнять локальные команды на узлах. В общем я этот режим почти не использовал.
Вот как это работает. Добавляем в конфигурацию агента:
ServerActive=192.168.137.250
HostMetadata=os:linux os_family:debian environment:production location:pve-cluster
Метаданные можно задавать какие угодно для вашего удобства и иерархии. На сервер улетает вся строка, которая может быть распарсена до каждого отдельного слова или фразы.
В веб-интерфейсе Zabbix переходим в Оповещения ⇨ Действия (Alerts ⇨ Actions), выбираем Действия авторегистрации (Autoregistration actions) и Создаём действие (Create action). В нём описываем условия через И и ИЛИ. Например, если os:linux и location:pve-cluster, то навешиваем шаблон Linux by Zabbix agent и добавляем в группы Linux Servers и PVE-cluster. А также шлём уведомление и навешиваем нужные тэги.
Вот и вся настройка. Как только узел с настроенным агентом появится в сети и постучится на сервер мониторинга, ему сразу же определяет его место и метрики. А шаблон, кстати, ему можно добавить с пассивными проверками. То есть для работы авторегистрации не обязательно собирать метрики в активном режиме. Дальше сервер сам может опрашивать агента, если к нему есть доступ.
#zabbix