Войти
Главная→Документация→Подключение к SIEM, Zabbix и Grafana

Подключение к существующим SIEM, Zabbix и Grafana

Пошаговая инструкция: как подключить шлюз SPZGate к SIEM, Zabbix и Grafana, которые уже работают в вашей организации. Ничего устанавливать на сам шлюз не нужно. Шлюз отправляет события в SIEM и отдаёт метрики по HTTP, а серверы мониторинга забирают их.

Как это устроено

СистемаКто инициируетПротокол и портЧто передаётся
SIEMшлюз → SIEMsyslog, UDP, порт приёмника (в примерах 5514)события очереди, SMTP, фильтрации и действия администраторов
ZabbixZabbix-сервер → шлюзHTTP(S), порт панели шлюзаметрики узла (JSON), токен в заголовке
GrafanaPrometheus → шлюз; Grafana → PrometheusHTTP(S), порт панели шлюза; 9090те же метрики в формате Prometheus

Grafana сама метрики у шлюза не забирает: дашборды SPAMOREZ построены на источнике данных Prometheus. Если Prometheus у вас уже есть, добавьте в него шлюз. Если нет, поставьте его рядом с Grafana (шаг 5).

Что понадобится

В командах ниже имена контейнеров даны для типовой установки (spzgate-php, spzgate-qmail). Если вы запускали несколько стеков, посмотрите точные имена командой docker ps (например, spzgate-005-php). Порт панели берётся из вывода установщика (строка Metrics:).

Шаг 1. Включите метрики на шлюзе

Рекомендованный способ: «Настройки → Мониторинг: Zabbix / Prometheus / Grafana», включить эндпоинт, скопировать URL и токен. Если панель недоступна, создайте токен вручную в каталоге установки:

cd /opt/spzgate
openssl rand -hex 24 | tr -d '\n' > data/qmail/control/spamorez/metrics_token
docker exec spzgate-php chown www-data:www-data /var/qmail/control/spamorez/metrics_token
docker exec spzgate-php chmod 600 /var/qmail/control/spamorez/metrics_token
Файл токена должен принадлежать пользователю www-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_server
docker restart spzgate-qmail

Затем включите нужные источники событий: очередь, SMTP, Спаморез и веб-панель (параметры syslog_send, syslog_smtp, syslog_spz, syslog_web). Подробности — в разделе SIEM и Syslog.

В SIEM должен быть включён приём syslog по UDP на выбранном порту. Если SIEM принимает только TCP, укажите перед адресом @@.

Шаг 3. Импортируйте шаблон в Zabbix

  1. Скачайте шаблон в «Настройки → Мониторинг» либо возьмите файл src/monitoring/zabbix/SPAMOREZ_Gateway_Node_by_HTTP.yaml.
  2. В Zabbix откройте «Data collection → Templates → Import», выберите файл и импортируйте. Появится шаблон SPAMOREZ Gateway Node by HTTP.
  3. Откройте «Data collection → Hosts → Create host». Имя — любое, например spz-gate0. Группа — любая (например, Linux servers). Интерфейс не нужен. Во вкладке «Templates» выберите шаблон.
  4. Во вкладке «Macros» задайте:
    • {$SPZ.URL} — http://<шлюз>:<порт панели>/v4/api/metrics.php (для HTTPS замените схему);
    • {$SPZ.TOKEN} — токен из шага 1.

Через минуту в «Monitoring → Latest data» появятся данные узла. Если вместо данных вы видите ошибку, проверьте на самом сервере Zabbix, что команда curl из шага 1 работает.

Шаг 4. Добавьте шлюз в Prometheus

mkdir -p /etc/prometheus
cp 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

  1. Добавьте источник данных Prometheus: «Connections → Data sources → Add». Адрес — ваш Prometheus. Укажите UID spz-prom. Дашборды ссылаются на источник именно по нему. Если источник уже создан с другим UID, измените его или замените UID в JSON дашбордов.
  2. Импортируйте дашборды «Dashboards → New → Import»: файлы src/monitoring/grafana/dashboards/spz-node.json и spz-cluster.json.
  3. Откройте «SPAMOREZ — Gateway node» и выберите узел в переменной Node.

Либо скопируйте каталог src/monitoring/grafana/provisioning в провижининг Grafana, а JSON-файлы дашбордов — в /var/lib/grafana/dashboards/spamorez. Тогда всё подключится автоматически. Если у вас есть и Zabbix, и плагин Zabbix для Grafana, этот же Zabbix можно подключить как отдельный источник данных. Для дашбордов SPAMOREZ он не нужен.

Шаг 6. Проверьте весь путь

  1. Отправьте через шлюз несколько тестовых писем на защищаемый домен.
  2. SIEM: в течение минуты в приёмнике появляются события с хоста шлюза. Очередь и доставка приходят с именем программы spz-send, SMTP-сессии — с spz-smtp, решения фильтрации — с spamorez, события панели — с spz-web.
  3. Zabbix: в «Monitoring → Latest data» у хоста обновляются элементы «SPZ: Queue length», «SPZ: Todo queue length», «Component … up» и счётчики писем (значения меняются после рассылки). У хоста должно быть около 100 элементов без статуса «не поддерживается».
  4. 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).
Syslog по UDP не шифруется и не подтверждает доставку, а токен метрик по HTTP передаётся открытым текстом. Используйте закрытую сеть, VPN или HTTPS-порт панели.