Перейти к содержанию

Zabbix, Graylog и n8n: мониторинг, логи, алерты и разбор инцидентов

Обновлено: 2026-05-29

Открыть мой план

Zabbix и Graylog закрывают разные части эксплуатации. Zabbix отвечает за метрики, доступность и триггеры, Graylog — за поиск по логам и событиям. n8n в такой схеме не должен заменять monitoring stack: его задача — принять сигнал, обогатить контекстом, открыть задачу, уведомить дежурного и сохранить следы инцидента.

Архитектура мониторинга

КомпонентЗадачаЧто делает n8n
Zabbixметрики, host status, triggersполучает webhook или спрашивает JSON-RPC API
Graylogлоги, search, streamsполучает GELF/HTTP события или ищет контекст
n8nавтоматизация реакцииTelegram alert, Jira task, CRM note, runbook step
Postgresжурнал обработкиincident_id, dedupe_key, status, timestamps

Zabbix → n8n webhook

Самый простой сценарий — создать media type/webhook в Zabbix и отправлять событие в n8n Webhook. Payload лучше сразу нормализовать.

{
  "source": "zabbix",
  "event_id": "{EVENT.ID}",
  "severity": "{EVENT.SEVERITY}",
  "host": "{HOST.NAME}",
  "trigger": "{TRIGGER.NAME}",
  "status": "{EVENT.STATUS}",
  "started_at": "{EVENT.DATE} {EVENT.TIME}"
}

Ключ дедупликации: source + event_id + status. Без него alert recovery и повторные уведомления будут дублироваться.

n8n → Zabbix JSON-RPC API

Если нужно получить details по host/item/trigger, используйте HTTP Request к Zabbix API. API работает по JSON-RPC: метод, params, auth token и id запроса.

{
  "jsonrpc": "2.0",
  "method": "host.get",
  "params": {"output": ["hostid", "host"], "filter": {"host": ["n8n-prod"]}},
  "auth": "ZABBIX_API_TOKEN",
  "id": 1
}

Логи n8n в Graylog

Для Graylog можно использовать Docker logging driver, sidecar/agent или HTTP/GELF input. В сообщениях должны быть поля, по которым реально искать: workflow_id, execution_id, node_type, error_message, environment.

{
  "short_message": "n8n execution failed",
  "host": "n8n-prod-1",
  "_workflow_id": "42",
  "_execution_id": "90123",
  "_severity": "error"
}

Runbook реакции на инцидент

  1. Webhook получает alert.
  2. IF отделяет problem от recovery.
  3. Postgres проверяет, был ли alert уже обработан.
  4. HTTP Request запрашивает Zabbix details и последние ошибки из Graylog.
  5. Telegram/Jira получает короткий alert: что, где, с какого времени, ссылка на runbook.
  6. После recovery workflow закрывает или обновляет задачу.

Ошибки внедрения

СимптомПричинаФикс
алерты дублируютсянет event_id/status dedupeхранить ключ инцидента в Postgres
Zabbix API возвращает auth errorтокен не тот или истёксоздать отдельный API token и ограничить права
Graylog не принимает логиinput выключен, wrong port, TLSпроверить input, firewall, format GELF/HTTP
дежурный получает стену текстаpayload не отфильтровансобрать короткое сообщение и ссылку на детали

Практический контекст для внедрения

Эта страница полезна не как абстрактная справка, а как рабочая инструкция под интеграцию Zabbix, Graylog и n8n: мониторинг, логи, алерты и разбор инцидентов с реальными credentials, rate limits и понятным owner процесса. Перед изменением workflow зафиксируйте источник события: входные данные по теме zabbix graylog: webhook, schedule, ручной запуск или событие внешнего сервиса. Так проще отделить ошибку данных от ошибки настройки n8n и не превратить исправление в набор случайных правок.

Минимальная проверка перед публикацией workflow: один happy path, один пустой payload, один повтор события и одна ошибка внешнего сервиса. Для мониторинга используйте successful executions, skipped items, retry count, error branch usage; эти показатели быстро покажут, что сценарий работает иначе, чем ожидалось.

Связанные материалы

Документация и источники

Вопросы и ответы

n8n может заменить Zabbix или Graylog?

Нет. n8n лучше использовать как слой реакции: принять alert, обогатить, уведомить, открыть задачу и записать результат.

Какой ключ использовать для дедупликации Zabbix alert?

Обычно source + event_id + status. Для recovery не создавайте новый инцидент, а обновляйте существующий.

Как связать Graylog и n8n?

Через HTTP/GELF input для отправки событий или через REST/search API для получения контекста по инциденту.