Войти
Главная→Документация→Подключение к 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Включает пересылку. При выключении адрес запоминается, и его не нужно вводить заново.
Тип подключенияUDP (по умолчанию) или TCP. UDP не подтверждает доставку, TCP надёжнее при потерях в сети. Протокол должен совпадать с тем, что принимает ваш SIEM.
Адрес сервера SIEMИмя хоста или IP-адрес (для IPv6 в квадратных скобках).
Порт сервера SIEMПорт приёмника, по умолчанию 514.

Нажмите «Отправить тестовое событие». Для TCP шлюз проверяет соединение, для UDP отправляет одну датаграмму. UDP не подтверждает приём, поэтому событие action=siem_test нужно найти в самом SIEM. Затем сохраните настройки. Шлюз применит их примерно за 10 секунд, перезапускать контейнеры не нужно.

Вручную то же делается файлом (@ — UDP, @@ — TCP):

printf '*.*\t@<siem>:<порт>\n' > data/qmail/control/siem/syslog_server

Затем в «Настройки → SIEM» включите нужные источники событий: очередь, SMTP, Спаморез и веб-панель. Подробности — в разделе SIEM и Syslog.

Шаг 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-порт панели.