Мониторинг: Zabbix, Prometheus, Grafana
Каждый узел SPZGate отдаёт метрики по HTTP. Их забирает Zabbix (готовый шаблон) или Prometheus с дашбордами Grafana.
Что мониторится
- компоненты узла: MySQL, Redis, Memcached, SMTP и txnengine — доступность и время ответа;
- очередь qmail, SMTP-соединения, время проверки спама;
- почтовый поток за последние 5 минут: доставлено, спам, ошибки, карантин, зависшие письма;
- состояние Rspamd и ClamAV, возраст антивирусных баз;
- кластер: связи между узлами, отставание репликации, бэклог записи.
Включение метрик
Включите эндпоинт
В панели откройте «Настройки → Мониторинг: Zabbix / Prometheus / Grafana» и включите «Эндпоинт метрик». Появится URL вида https://<узел>/v4/api/metrics.php и Bearer-токен.
Скачайте шаблоны
Там же доступны шаблон Zabbix (YAML), два дашборда Grafana (узел и кластер) и пример конфигурации Prometheus.
Проверьте доступность
Выполните запрос с токеном:
curl -H "Authorization: Bearer <токен>" https://<узел>/v4/api/metrics.phpAuthorization. Вариант ?token=… тоже работает, но токен при этом попадает в журнал доступа веб-сервера. Эндпоинт только читает данные. Пароли и коды спаривания узлов в метрики не попадают.Zabbix
- Импортируйте шаблон: «Data collection → Templates → Import» (Zabbix 6.0 и новее).
- Создайте хост для каждого узла (сетевой интерфейс не нужен) и подключите шаблон.
- В макросах хоста задайте
{$SPZ.TOKEN}— токен из панели. Если узел доступен по HTTPS, измените схему в макросе{$SPZ.URL}(по умолчаниюhttp://{HOST.CONN}/v4/api/metrics.php).
Шаблон делает один HTTP-запрос в минуту на узел. В нём 75 элементов данных, правила автоматического обнаружения компонентов и пиров кластера, триггеры и графики. Пороги настраиваются макросами шаблона ({$SPZ.QUEUE.WARN}, {$SPZ.LAG.WARN} и другие). Если узел молчит, остальные триггеры не срабатывают, чтобы не создавать лавину оповещений.
Prometheus и Grafana
cp prometheus.yml spz_alerts.yml spz_targets.yml /etc/prometheus/echo -n '<токен>' > /etc/prometheus/spz_token- В
spz_targets.ymlперечислите адреса узлов. - Добавьте Prometheus как источник данных в Grafana и импортируйте два дашборда: «SPAMOREZ — Gateway node» и «SPAMOREZ — Gateway cluster».
- Правила
spz_alerts.ymlдублируют триггеры Zabbix. Используйте их, если Zabbix у вас нет.
Основные метрики
Все метрики имеют префикс spz_.
| Группа | Примеры |
|---|---|
| Компоненты | spz_component_up{component}, spz_component_latency_seconds |
| Очередь и SMTP | spz_queue_messages, spz_smtp_connections |
| Почтовый поток (5 мин) | spz_messages_window{class}, spz_quarantined_window |
| Антивирус | spz_av_rspamd_up, spz_av_clamd_up, spz_av_clamd_db_age_seconds |
| Кластер | spz_peer_up{peer}, spz_peer_lag_records, spz_cluster_peers |
Смена токена
Кнопка «Перегенерировать токен» в настройках мониторинга создаёт новый токен. Старый перестаёт работать сразу, поэтому обновите макрос {$SPZ.TOKEN} в Zabbix и файл токена Prometheus. Смена токена фиксируется в SIEM (действие regen_metrics_token).
Ограничения
- Состояние Rspamd и ClamAV шлюз проверяет раз в минуту и записывает результат в файл. Если файл не обновлялся более 120 секунд, срабатывает триггер «AV health check is not updating».
- Данные об очереди и SMTP-соединениях собираются десятиминутными выборками.
- Значения, которые узел ещё не может определить (например, пир ничего не подтверждал), не отдаются вместо нуля.