2. Авторегистрация активных агентов
Обзор
Возможно разрешить авторегистрацию активных агентов Zabbix, после которой сервер может начать их отслеживать. Таким образом, новые узлы сети могут быть добавлены для мониторинга без их настройки на сервере вручную.
Авторегистрация может произойти, когда ранее неизвестный активный агент запрашивает проверки.
Эта функция может быть очень удобна для автоматического мониторинга новых облачных узлов. Как только у вас появится новый узел в облаке, Zabbix автоматически запустит сбор данных о производительности и доступности узла сети.
Авторегистрация активного агента также поддерживает мониторинг добавленных узлов сети с пассивными проверками.
Когда активный агент запрашивает проверки, при условии, что параметры конфигурации ListenIP или ListenPort определенны в файле конфигурации, они отправляются на сервер.
Если указано несколько IP-адресов, на сервер отправляется первый из них.
Сервер при добавлении нового автоматически зарегистрированного узла сети использует полученные IP адрес и порт для настройки агента. Если значение IP-адреса не получено, используется тот, который использовался для входящего соединения. Если значение порта не получено, используется 10050.
Можно указать, что узел сети должен быть автоматически зарегистрирован с DNS-именем в качестве интерфейса агента по умолчанию.
Авторегистрация выполняется повторно:
- если изменяется информация метаданных узла сети:
- из-за изменения HostMetadata и перезапуска агента
- из-за изменения значения, возвращаемого HostMetadataItem
- для созданных вручную узлов сети с отсутствующими метаданными
- если узел сети изменён вручную для мониторинга другим Zabbix прокси
- если авторегистрация для того же узла сети приходит с нового Zabbix прокси
Период авторегистрации активного агента для Zabbix сервера и Zabbix прокси составляет 120 секунд. Таким образом, в случае удаления обнаруженного узла авторегистрация будет выполнена повторно через 120 секунд.
Настройка
Укажите сервер
Убедитесь, что сервер Zabbix указан в файле конфигурации агента - zabbix_agentd.conf:
ServerActive=10.0.0.1
Если вы явно не зададите Hostname в zabbix_agentd.conf, сервер будет использовать системное имя хоста на машине, где расположен агент, для именования узла сети.
Системное имя хоста в Linux можно получить, выполнив команду hostname.
Если Hostname задан в конфигурации агента Zabbix как список узлов сети, разделенный запятыми, будут созданы узлы сети для всех перечисленных имен хостов.
После внесения любых изменений в файл конфигурации перезапустите агент.
Действие для автрорегистрации активного агента
Когда сервер получает запрос на автрорегистрацию от агента, он вызывает действие. Для автрорегистрации агента необходимо настроить действие с источником события "Autoregistration".
Для автрорегистрации активных агентов настройка обнаружения сети не требуется.
В веб-интерфейсе Zabbix перейдите в Alerts → Actions, выберите Autoregistration actions и нажмите Create action:
- На вкладке Action задайте имя для действия
- При необходимости укажите условия. В условиях для имени узла сети/метаданных узла сети можно использовать поиск по подстроке или сопоставление с регулярным выражением. Если вы собираетесь использовать условие "Host metadata", см. следующий раздел.
- На вкладке Operations добавьте нужные операции, такие как - 'Add host', 'Add to host group' (например, Discovered hosts), 'Link templates' и т. д.
Если узлы сети, которые будут проходить автрорегистрацию, вероятно, будут поддерживать только активный мониторинг (например, узлы сети, доступ к которым из сервера Zabbix ограничен межсетевым экраном), возможно, вам стоит создать отдельный шаблон, например Template_Linux-active, к которому будет выполняться привязка.
Созданные узлы сети добавляются в группу Discovered hosts (по умолчанию, настраивается в Administration > General > Other). Если вы хотите, чтобы узлы сети добавлялись в другую группу, добавьте операцию Remove from host group (указав "Discovered hosts"), а также операцию Add to host group (указав другую группу узлов сети), поскольку узел сети должен принадлежать к группе узлов сети.
Безопасная авторегистрация
Безопасный вариант авторегистрации возможен путём настройки аутентификации на основе общего ключа (PSK-based) при использовании шифрованных соединений.
Уровень шифрования задаётся глобально в разделе Администрирование → Общие → Авторегистрация (Administration →General → Autoregistration). Можно выбрать варианты без шифрования, шифрование TLS с использованием аутентификации PSK или оба варианта (так что какие-то узлы сети могут регистрироваться без шифрования, а какие-то — с шифрованием).
Аутентификация по общему ключу (PSK) проверяется сервером Zabbix до добавления узла сети. В случае успеха узел сети добавляется, а параметры Подключения к узлу сети/Соединения с узла сети (Connections from/to host) выставляются в только «PSK» с ключом и строкой идентификации PSK такими же, как в глобальных настройках авторегистрации.
Чтобы обеспечить безопасность авторегистрации на инсталяциях, использующих прокси, должно быть включено шифрование между Zabbix сервером и прокси.
Использование DNS в качестве интерфейса по умолчанию
Параметры конфигурации HostInterface и HostInterfaceItem configuration parameters позволяют указать пользовательское значение интерфейса узла сети во время авторегистрации.
Если точнее, они полезны в том случае, когда узел сети должен быть авторегистрирован с DNS-именем в качестве интерфейса агента по умолчанию, а не с его IP-адресом. В этом случае в качестве значения параметров HostInterface или HostInterfaceItem должно быть указано или возвращено DNS-имя. Если значение одного из этих параметров изменится, например с IP-адреса на DNS-имя или наоборот, интерфейс по умолчанию у авторегистрированного узла сети будет обновлен соответствующим образом. Это обновление применяется к существующему узлу сети, а не путем создания нового. Чтобы передать новое значение, агент необходимо перезапустить, чтобы он заново инициировал процесс авторегистрации.
Если параметры HostInterface или HostInterfaceItem не настроены, вместо них используется параметр listen_dns. Это значение определяется путем выполнения обратного DNS-запроса для IP-адреса агента. Если обратный DNS настроен неправильно или возвращает недопустимое имя, это может привести к некорректной или неудачной авторегистрации из-за недопустимого значения интерфейса.
Использование метаданных узла сети
Когда агент отправляет запрос на автоматическую регистрацию на сервер, он передает свое имя хоста. В некоторых случаях, например для узлов Amazon cloud, имени хоста недостаточно, чтобы сервер Zabbix мог различать обнаруженные узлы сети. Метаданные узла сети можно использовать дополнительно, чтобы передавать с агента на сервер другую информацию.
Метаданные узла сети настраиваются в файле конфигурации агента - zabbix_agentd.conf.
Есть 2 способа указать метаданные узла сети в файле конфигурации:
HostMetadata
HostMetadataItem
Описание этих параметров см. по ссылке выше.
Параметр HostMetadataItem может возвращать до 65535 кодовых точек UTF-8. Более длинное значение будет обрезано.
Обратите внимание, что в MySQL фактическая максимальная длина в символах будет меньше, если возвращаемое значение содержит многобайтовые символы. Например, значение, содержащее только 3-байтовые символы, будет ограничено 21844 символами в сумме, а значение, содержащее только 4-байтовые символы, будет ограничено 16383 символами.
Попытка автоматической регистрации выполняется каждый раз, когда активный агент отправляет запрос на обновление активных проверок на сервер. Задержка между запросами задается параметром RefreshActiveChecks агента. Первый запрос отправляется сразу после перезапуска агента.
Примеры
Авторегистрация по операционной системе с использованием HostMetadata
Допустим, вы хотите, чтобы узлы сети автоматически регистрировались сервером Zabbix. В вашей сети у вас есть активные агенты Zabbix (см. раздел «Настройка» выше). Также в вашей сети есть хосты Windows и хосты Linux, а в вашем веб-интерфейсе Zabbix вам доступны шаблоны «Linux by Zabbix agent» и «Windows by Zabbix agent». Поэтому вы хотите, чтобы при регистрации узла сети к регистрируемому узлу был применён соответствующий шаблон Linux/Windows. По умолчанию, на сервер при авторегистрации отправляется только имя узла сети, чего может быть недостаточно. Чтобы убедиться, что к узлу сети применяется правильный шаблон, вы должны использовать метаданные узла сети.
Настройка в веб-интерфейсе
Первое, что надо сделать, — это настроить веб-интерфейс. Создайте 2 действия. Первое действие:
- Имя: Авторегистрация узлов сети Linux
- Условия: Метаданные узлов сети содержит Linux
- Операции: Присоединить шаблоны: Linux by Zabbix agent
В данном случае можно опустить операцию «Добавить узел сети». Присоединение шаблона к узлу сети требует, чтобы узел сети уже был добавлен, поэтому сервер сделает это автоматически.
Второе действие:
- Имя: Авторегистрация узлов сети Windows
- Условия: Метаданные узлов сети содержит Windows
- Операции: Присоединить шаблоны: Windows by Zabbix agent
Настройка агента
Теперь вам нужно настроить агентов. В файлы конфигурации агентов добавьте следующую строку:
HostMetadataItem=system.uname
Таким способом вы обеспечите, что метаданные узлов сети будут содержать строку «Linux» или «Windows» в зависимости от узла сети, на котором работает агент. Пример метаданных узла сети в этом случае:
Linux: Linux server3 3.2.0-4-686-pae #1 SMP Debian 3.2.41-2 i686 GNU/Linux
Windows: Windows WIN-0PXGGSTYNHO 6.0.6001 Windows Server 2008 Service Pack 1 Intel IA-32
Не забудьте перезапустить агента после внесения любых изменений в его файл конфигурации.
Использование HostMetadata для управления авторегистрацией и шаблонами
Шаг 1 — Защита регистрации с помощью HostMetadata
Использование метаданных узла для обеспечения некоторой базовой защиты от регистрации нежелательных узлов сети.
Настройка в веб-интерфейсе
Создайте действие в веб-интерфейсе, используя некоторый трудно-угадываемый секретный код для запрета нежелательных узлов сети:
- Имя: Действие авторегистрации Linux
- Условия:
- Тип вычисления: И
- Условие (А): Метаданные узлов сети содержат //Linux//
- Условие (В): Метаданные узлов сети содержат //21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae//
- Операции:
- Отправить сообщение пользователям: Admin через все способы оповещения
- Добавить в группы узлов сети: Linux сервера
- Присоединить к шаблонам: Linux by Zabbix agent
Пожалуйста, обратите внимание, что использование этого метода в одиночку не предоставляет надёжную защиту, потому что данные передаются как простой текст. Для того, чтобы изменения вступили в силу немедленно, необходима перезагрузка кэша конфигурации.
Настройка агента
В файл конфигурации агента добавьте следующую строку:
HostMetadata=Linux 21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae
где «Linux» — это платформа, а остаток строки — трудноугадываемый секретный текст.
Не забудьте перезапустить агента после внесения любых изменений в файл конфигурации.
Step 2 — Добавление шаблона к зарегистрированному узлу сети
К уже зарегистрированному узлу сети можно добавить дополнительные шаблоны.
В данном случае шаблон MySQL by Zabbix agent будет присоединён только к узлам сети, у которых HostMetadata содержит токен MySQL.
Настройка в веб-интерфейсе
В веб-интерфейсе обновите действие:
- Имя: Действие авторегистрации Linux
- Условия:
- Тип вычисления: И
- Условие (А): Метаданные узлов сети содержат Linux
- Условие (В): Метаданные узлов сети содержат 21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae
- Условие (C): Метаданные узлов сети содержат MySQL
- Операции:
- Отправить сообщение пользователям: Admin через все способы оповещения
- Добавить в группы узлов сети: Linux сервера
- Присоединить шаблоны: Linux by Zabbix agent
- Присоединить шаблоны: MySQL by Zabbix Agent
Настройка агента
Обновите следующую строчку в конфигурационном файле агента:
HostMetadata=MySQL on Linux 21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae
Не забудьте перезапустить агента после внесения любых изменений в конфигурационный файл.