Подключение к существующим SIEM, Zabbix и Grafana
Пошаговая инструкция: как подключить шлюз SPZGate к SIEM, Zabbix и Grafana, которые уже работают в вашей организации. Ничего устанавливать на сам шлюз не нужно. Шлюз отправляет события в SIEM и отдаёт метрики по HTTP, а серверы мониторинга забирают их.
Как это устроено
| Система | Кто инициирует | Протокол и порт | Что передаётся |
|---|---|---|---|
| SIEM | шлюз → SIEM | syslog, UDP, порт приёмника (в примерах 5514) | события очереди, SMTP, фильтрации и действия администраторов |
| Zabbix | Zabbix-сервер → шлюз | HTTP(S), порт панели шлюза | метрики узла (JSON), токен в заголовке |
| Grafana | Prometheus → шлюз; Grafana → Prometheus | HTTP(S), порт панели шлюза; 9090 | те же метрики в формате Prometheus |
Grafana сама метрики у шлюза не забирает: дашборды SPAMOREZ построены на источнике данных Prometheus. Если Prometheus у вас уже есть, добавьте в него шлюз. Если нет, поставьте его рядом с Grafana (шаг 5).
Что понадобится
- Шлюз SPZGate 2.0.5 или новее с доступом к панели и к каталогу установки.
- SIEM или любой syslog-приёмник. Подойдёт Kaspersky KUMA, MaxPatrol SIEM, RuSIEM, Splunk, Graylog, Vector или Loki.
- Zabbix 6.0 или новее (проверено на 7.0) с правами администратора.
- Grafana 10 или новее и Prometheus 2.40 или новее.
- Сетевая доступность. Шлюз должен достучаться до syslog-приёмника по UDP, а Zabbix-сервер и Prometheus — до панели шлюза по HTTP(S).
spzgate-php, spzgate-qmail). Если вы запускали несколько стеков, посмотрите точные имена командой docker ps (например, spzgate-005-php). Порт панели берётся из вывода установщика (строка Metrics:).Шаг 1. Включите метрики на шлюзе
Рекомендованный способ: «Настройки → Мониторинг: Zabbix / Prometheus / Grafana», включить эндпоинт, скопировать URL и токен. Если панель недоступна, создайте токен вручную в каталоге установки:
cd /opt/spzgateopenssl rand -hex 24 | tr -d '\n' > data/qmail/control/spamorez/metrics_tokendocker exec spzgate-php chown www-data:www-data /var/qmail/control/spamorez/metrics_tokendocker exec spzgate-php chmod 600 /var/qmail/control/spamorez/metrics_tokenwww-data. Иначе php-fpm не прочитает его, и эндпоинт ответит «metrics disabled».Проверьте, что метрики отдаются:
TOKEN=$(cat data/qmail/control/spamorez/metrics_token)curl -H "Authorization: Bearer $TOKEN" http://<шлюз>:<порт панели>/v4/api/metrics.php | headДолжны появиться строки spz_node_info и spz_component_up. Для проверки всех метрик, которые используют шаблон и дашборды, запустите python3 check_monitoring.py <URL> <токен> из каталога src/monitoring.
Шаг 2. Подключите SIEM
Рекомендованный способ: «Настройки → SIEM / Syslog», поле «Публикация событий в SIEM». Введите host:порт приёмника и сохраните. Вручную то же делается так:
printf '*.*\t@<siem>:<порт>\n' > data/qmail/control/siem/syslog_serverdocker restart spzgate-qmailЗатем включите нужные источники событий: очередь, SMTP, Спаморез и веб-панель (параметры syslog_send, syslog_smtp, syslog_spz, syslog_web). Подробности — в разделе SIEM и Syslog.
В SIEM должен быть включён приём syslog по UDP на выбранном порту. Если SIEM принимает только TCP, укажите перед адресом @@.
Шаг 3. Импортируйте шаблон в Zabbix
- Скачайте шаблон в «Настройки → Мониторинг» либо возьмите файл
src/monitoring/zabbix/SPAMOREZ_Gateway_Node_by_HTTP.yaml. - В Zabbix откройте «Data collection → Templates → Import», выберите файл и импортируйте. Появится шаблон SPAMOREZ Gateway Node by HTTP.
- Откройте «Data collection → Hosts → Create host». Имя — любое, например
spz-gate0. Группа — любая (например,Linux servers). Интерфейс не нужен. Во вкладке «Templates» выберите шаблон. - Во вкладке «Macros» задайте:
{$SPZ.URL}—http://<шлюз>:<порт панели>/v4/api/metrics.php(для HTTPS замените схему);{$SPZ.TOKEN}— токен из шага 1.
Через минуту в «Monitoring → Latest data» появятся данные узла. Если вместо данных вы видите ошибку, проверьте на самом сервере Zabbix, что команда curl из шага 1 работает.
Шаг 4. Добавьте шлюз в Prometheus
mkdir -p /etc/prometheuscp src/monitoring/prometheus/{prometheus.yml,spz_alerts.yml,spz_targets.yml} /etc/prometheus/echo -n '<токен>' > /etc/prometheus/spz_tokenВ spz_targets.yml укажите адрес и порт панели шлюза и имя узла:
- targets: ['<шлюз>:<порт панели>'] labels: { node: gate0 }Если Prometheus у вас уже работает, добавьте в его конфигурацию только блок job_name: spz и подключите spz_alerts.yml. После этого перезапустите Prometheus и убедитесь, что на странице «Status → Targets» цель в состоянии UP.
Шаг 5. Подключите дашборды в Grafana
- Добавьте источник данных Prometheus: «Connections → Data sources → Add». Адрес — ваш Prometheus. Укажите UID
spz-prom. Дашборды ссылаются на источник именно по нему. Если источник уже создан с другим UID, измените его или замените UID в JSON дашбордов. - Импортируйте дашборды «Dashboards → New → Import»: файлы
src/monitoring/grafana/dashboards/spz-node.jsonиspz-cluster.json. - Откройте «SPAMOREZ — Gateway node» и выберите узел в переменной Node.
Либо скопируйте каталог src/monitoring/grafana/provisioning в провижининг Grafana, а JSON-файлы дашбордов — в /var/lib/grafana/dashboards/spamorez. Тогда всё подключится автоматически. Если у вас есть и Zabbix, и плагин Zabbix для Grafana, этот же Zabbix можно подключить как отдельный источник данных. Для дашбордов SPAMOREZ он не нужен.
Шаг 6. Проверьте весь путь
- Отправьте через шлюз несколько тестовых писем на защищаемый домен.
- SIEM: в течение минуты в приёмнике появляются события с хоста шлюза. Очередь и доставка приходят с именем программы
spz-send, SMTP-сессии — сspz-smtp, решения фильтрации — сspamorez, события панели — сspz-web. - Zabbix: в «Monitoring → Latest data» у хоста обновляются элементы «SPZ: Queue length», «SPZ: Todo queue length», «Component … up» и счётчики писем (значения меняются после рассылки). У хоста должно быть около 100 элементов без статуса «не поддерживается».
- Grafana: на дашборде «Gateway node» меняются очередь и число писем за окно 5 минут, компоненты показывают UP. Часть панелей может остаться пустой, если узел ещё не знает значения (SMTP-выборки без входящих сессий, подтверждения пиров без кластера). Это нормально.
Если данных нет
| Симптом | Причина и решение |
|---|---|
metrics disabled | Нет файла metrics_token или он недоступен пользователю www-data (шаг 1). |
403 / 401 | Неверный токен. После смены токена обновите {$SPZ.TOKEN} в Zabbix и файл spz_token Prometheus. |
| В SIEM пусто | Проверьте порт и протокол (UDP), файрвол между шлюзом и SIEM, содержимое control/siem/syslog_server. |
| Цель Prometheus DOWN | Нет сети до панели или схема http/https не совпадает с портом. |
| Графики пустые при работающей цели | У источника данных Grafana не тот UID (нужен spz-prom). |