Zabbix Agent устанавливается на наблюдаемый узел и получает локальные сведения об ОС, ресурсах, процессах, службах и приложениях. Но сам факт установки пакета не создает полезный мониторинг. Нужно выбрать модель связи, правильно сопоставить Hostname, ограничить доверенные стороны, защитить канал, подключить подходящий шаблон и проверить, что события приводят к действиям.
Эта статья посвящена подключению узлов к уже существующему Zabbix. Установка Zabbix Server, базы данных, web-интерфейса и проектирование высокой доступности являются отдельными задачами.
Компоненты и их роли
| Компонент | Что делает | Что важно контролировать |
|---|---|---|
| Zabbix Server | Хранит конфигурацию, обрабатывает данные и события, выполняет центральную логику | База данных, очередь, процессы, история, backup и доступность frontend |
| Zabbix Proxy | Собирает данные на удаленной площадке или от группы узлов и передает серверу | Буфер, синхронизация времени, связь с server, нагрузка и собственное состояние |
| Zabbix Agent | Собирает метрики ОС и выполняет разрешенные проверки | Версия, конфигурация, права процесса, Hostname, журнал и канал |
| Zabbix Agent 2 | Альтернативная реализация агента с расширяемой plugin-моделью | Совместимость шаблонов и плагинов, package/service name и обновления |
| Template | Объединяет items, triggers, discovery, graphs и правила под класс узлов | Версия шаблона, макросы, пороги, шум и локальные исключения |
| Host | Представляет конкретный наблюдаемый объект в конфигурации | Уникальная идентичность, интерфейс, группы, tags, proxy и владелец |
Пассивные и активные проверки
| Режим | Кто инициирует обмен | Когда удобен | Что открыть в сети |
|---|---|---|---|
| Пассивный | Zabbix Server или Proxy запрашивает значение у Agent | Центральная сеть, прямой контролируемый маршрут, тест доступности агента из нужной точки | Доступ от конкретного server/proxy к порту агента |
| Активный | Agent получает список items и сам отправляет новые значения Server или Proxy | Филиал, NAT, firewall, нестабильный канал, узел без входящего административного доступа | Исходящее соединение агента к указанному server/proxy |
Один агент может использовать оба режима для разных items. Выбор задается не только параметрами файла конфигурации, но и типом item в Zabbix. Если шаблон содержит пассивные items, одного ServerActive недостаточно.
Для узла за firewall активные проверки часто проще: входящее соединение к агенту не требуется. Однако нужно контролировать, куда агент отправляет данные, как подтверждается его идентичность и сколько значений удерживается при временной недоступности приемника.
Параметры, которые чаще всего путают
| Параметр | Назначение | Типовая ошибка |
|---|---|---|
| Server | Каким server/proxy разрешены пассивные запросы к агенту | Указать широкую сеть вместо минимального списка доверенных адресов |
| ServerActive | Откуда получать список активных items и куда отправлять их значения | Указать server, хотя host назначен на proxy, или наоборот |
| Hostname | Идентичность для активных проверок, которая должна совпасть с Host name в frontend | Использовать отображаемое Visible name или имя с другим регистром/суффиксом |
| HostnameItem | Позволяет агенту вычислить Hostname, если он не задан явно | Получить одинаковые или меняющиеся значения после клонирования образа |
| ListenIP | Интерфейсы для пассивного прослушивания | Слушать на всех адресах без сетевого ограничения |
| Timeout | Ограничивает ожидание отдельных проверок | Увеличивать глобально вместо исправления медленного item |
Для активного агента Hostname является частью протокола сопоставления. Если в frontend создан host srv-1, а агент отправляет SRV-1.example.local, сервер не начнет принимать значения только потому, что IP совпадает.
Когда нужен Zabbix Proxy
- в филиале несколько узлов и не хочется открывать каждый из них центральному серверу;
- канал периодически пропадает, но данные нужно буферизовать локально;
- проверки должны выполняться изнутри площадки;
- центральный server находится далеко и прямой опрос создает лишнюю задержку;
- нужно разделить нагрузку сбора между площадками;
- сетевая политика разрешает один контролируемый канал между proxy и server.
Proxy не является невидимым транспортом. Его база, очередь, процессы, диск, время и связь с server должны мониториться. Отказ proxy способен скрыть целую площадку, поэтому центральная система должна отличать проблему proxy от одновременной аварии всех узлов за ним.
Защита канала
Zabbix поддерживает TLS с сертификатами или pre-shared key. PSK проще для небольшого числа управляемых узлов, но требует уникальной идентичности, случайного ключа, защищенного хранения и процедуры ротации. Один PSK на всех клиентах превращает компрометацию одного узла в общий риск.
- не передавайте PSK в заявках, чатах и открытых конфигурационных репозиториях;
- ограничивайте права на файл ключа учетной записью агента;
- не используйте один и тот же PSK для независимых клиентов;
- проверяйте обе стороны: что агент принимает нужный тип соединения, а host в frontend настроен соответственно;
- при выводе узла из эксплуатации отзывайте его идентичность и ключ;
- если применяется PKI, контролируйте срок сертификата, цепочку доверия и процедуру перевыпуска.
Шифрование канала не заменяет firewall и минимальные права агента. Не нужно публиковать агент в интернет только потому, что включен TLS.
Права процесса и пользовательские параметры
Агент должен работать с минимальными правами, достаточными для выбранных items. UserParameter, system.run и удаленные команды расширяют возможности, но одновременно увеличивают риск. Их нельзя включать глобально ради одной проверки.
| Расширение | Безопасный подход |
|---|---|
| UserParameter | Фиксированная команда, строгая обработка аргументов, отдельный тест и понятный timeout |
| system.run | По умолчанию не разрешать; для исключения использовать allowlist конкретного ключа |
| Проверка файла или журнала | Дать чтение только нужного пути, не запускать агент root/Administrator без необходимости |
| Скрипт приложения | Отдельная учетная запись или API с правами только на диагностическую операцию |
| Секрет в macro | Использовать подходящий защищенный тип и ограничить круг пользователей frontend |
Проверка мониторинга должна быть безопаснее наблюдаемого сервиса. Скрипт, который ради метрики меняет данные или создает административную сессию, требует отдельного пересмотра.
Шаблон нужно адаптировать, а не просто привязать
- Сверить версию Zabbix и совместимость шаблона.
- Проверить discovery rules: какие файловые системы, интерфейсы и службы будут обнаружены.
- Установить macro для емкости, задержек и исключений по фактической роли узла.
- Отключить items, которые не имеют владельца или действия.
- Добавить проверки бизнес-сервиса поверх метрик ОС.
- Настроить зависимости, чтобы отказ proxy или гипервизора не создавал лавину событий.
- Проверить maintenance для плановых работ.
- Зафиксировать локальные изменения шаблона и способ обновления.
Зеленый host может быть бесполезным, если контролируются только CPU и память. Для файлового сервера важны доступность SMB, место, задержки диска, backup и критичные события. Для базы - соединение, состояние службы, очередь, блокировки и пользовательский тест.
Установка пакета: почему нет одной вечной команды
Название пакета, Agent или Agent 2, официальный репозиторий, service name и пути зависят от версии Zabbix и дистрибутива. Перед установкой нужно открыть актуальную инструкцию Zabbix, выбрать поддерживаемую ветку и конкретную ОС. Пакет из базового репозитория дистрибутива может отличаться от версии сервера и нужного шаблона.
Команды ниже оставлены как безопасный каркас для тестового стенда Ubuntu/Debian-like: обновление индекса, установка агента, резервная копия конфигурации, ручное редактирование и запуск службы. Они не открывают firewall и не задают вымышленные ключи. Для production используйте точные команды из официальной документации выбранной версии.
Как проверить подключение
- Сверить Hostname в конфигурации агента и Host name в frontend.
- Проверить время на agent, proxy и server.
- Посмотреть журнал агента сразу после запуска.
- Для пассивной модели проверить маршрут и соединение только от назначенного server/proxy.
- Для активной модели убедиться, что агент получил список active checks и отправляет значения нужному приемнику.
- Открыть Latest data и проверить свежесть нескольких разных items.
- Создать безопасное тестовое условие, например низкий тестовый порог, и проверить событие, уведомление и recovery.
- Перезапустить агент и убедиться, что конфигурация поднимается автоматически.
- Кратковременно разорвать допустимый тестовый канал и проверить буферизацию/событие по архитектуре.
- Задокументировать версию, template, proxy, тип соединения и владельца реакции.
Типовые ошибки
- открыть порт агента для любой сети;
- указать только ServerActive при шаблоне с пассивными items;
- перепутать Host name и Visible name;
- назначить host центральному server, а агент отправлять на proxy;
- включить незашифрованный канал через недоверенную сеть;
- использовать общий PSK для всех клиентов;
- запустить агент с root/Administrator ради одного нестандартного item;
- подключить большой шаблон и не разобрать лавину unsupported items;
- не мониторить proxy и сам Zabbix Server;
- считать появление зеленого индикатора завершенной приемкой.
Официальная документация Zabbix
- Agent: активные и пассивные проверки
- Zabbix Proxy и распределенный сбор
- TLS с pre-shared keys
- Установка из пакетов
Для общего выбора платформы смотрите сравнение систем мониторинга. Эта инструкция предполагает, что Zabbix уже выбран и нужно безопасно включить узлы в эксплуатацию.
Итог: подключение агента считается завершенным, когда выбран активный или пассивный путь, идентичность совпадает, канал ограничен и защищен, шаблон соответствует роли, тестовое событие прошло полный цикл, а состояние агента и proxy тоже наблюдается.
Безопасный каркас установки Zabbix Agent для тестового стенда
Старые команды установки Zabbix Server из исходной статьи нельзя считать универсальной production-инструкцией. Ниже оставлен только безопасный каркас для агента; репозитории, версии сервера и базу данных нужно сверять с актуальной документацией Zabbix под вашу ОС.
# Примерный каркас для тестового стенда Ubuntu/Debian.
# Для production всегда сверяйте репозиторий и версии с официальной документацией Zabbix.
sudo apt update
sudo apt install -y zabbix-agent
sudo cp /etc/zabbix/zabbix_agentd.conf /etc/zabbix/zabbix_agentd.conf.backup
sudoedit /etc/zabbix/zabbix_agentd.conf
# Минимальные параметры, которые нужно указать в конфиге:
# Server=<ip_zabbix_server>
# ServerActive=<ip_zabbix_server>
# Hostname=<unique_host_name>
sudo systemctl enable --now zabbix-agent
sudo systemctl status zabbix-agent --no-pager
Важно: перед запуском проверьте код под свою задачу, сохраните важные данные и не используйте административные скрипты из интернета без понимания каждого действия.