2. Авторегистрация активных агентов

Обзор

Можно разрешить автрорегистрацию активного агента Zabbix, после чего сервер сможет начать его мониторинг. Таким образом, новые узлы сети можно добавлять для мониторинга без ручной настройки на сервере.

Автрегистрация может происходить, когда ранее неизвестный активный агент запрашивает проверки.

Эта функция может быть очень полезна для автоматического мониторинга новых узлов Cloud. Как только в Cloud появляется новый узел, Zabbix автоматически начинает сбор данных о производительности и доступности узла сети.

Автрегистрация активного агента также поддерживает мониторинг добавленных узлов с помощью пассивных проверок. Когда активный агент запрашивает проверки, и в файле конфигурации заданы параметры ListenIP или ListenPort, они передаются на сервер. Если указано несколько IP-адресов, на сервер отправляется первый из них.

Сервер при добавлении нового автоматически зарегистрированного узла сети использует полученные IP-адрес и порт для настройки агента. Если значение IP-адреса не получено, используется адрес, примененный для входящего соединения. Если значение порта не получено, используется 10050.

Можно указать, что узел сети должен быть автоматически зарегистрирован с DNS-именем в качестве интерфейса агента по умолчанию.

Автрегистрация повторно выполняется:

  • если изменяется информация метаданных узла сети:
    • из-за изменения HostMetadata и перезапуска агента
    • из-за изменения значения, возвращаемого HostMetadataItem
  • для созданных вручную узлов сети, у которых отсутствуют метаданные
  • если вручную изменить узел сети так, чтобы он мониторился другим прокси Zabbix
  • если автрорегистрация для того же узла сети поступает от нового прокси Zabbix

Период heartbeat для автрорегистрации активного агента для сервера 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) при использовании шифрованных соединений.

Уровень шифрования задаётся глобально в разделе АдминистрированиеОбщиеАвторегистрация (AdministrationGeneralAutoregistration). Можно выбрать варианты без шифрования, шифрование 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

Не забудьте перезапустить агента после внесения любых изменений в конфигурационный файл.