Перейти до вмісту

Моніторинг

Railhook віддає перевірки здоров’я на публічному порту, а метрики Prometheus — на внутрішніх портах. У репозиторії є готовий стек моніторингу, який можна запустити поруч.

RAILHOOK_URL — адреса вашого інстансу: http://localhost після типового встановлення, http://localhost:<port>, якщо ви передали --port, https://<ваш домен> з --domain.

Terminal window
curl -f "$RAILHOOK_URL/actuator/health/liveness"
curl -f "$RAILHOOK_URL/actuator/health/readiness"

nginx проксує лише шляхи health. Решта шляхів /actuator/ на публічному порту відповідає 404.

Метрики доступні на окремих керувальних портах, лише всередині мережі Docker, і не потребують облікових даних:

Сервіс Адреса метрик
API http://api:8082/actuator/prometheus
Воркер http://worker:8081/actuator/prometheus

На публічний порт їх навмисно не проксовано: метрики розкрили б назви ендпоінтів і обсяги трафіку будь-кому, хто спитає.

Каталог monitoring/ у репозиторії містить уже налаштовані Prometheus, Alertmanager, Grafana, Loki та Promtail.

  1. Спершу запустіть Railhook з клону командою make up.

  2. Запустіть стек моніторингу

    Terminal window
    make monitoring-up
  3. Відкрийте Grafana на http://localhost:3001 і увійдіть як railhook / railhook_monitor_2024. Пароль змінюється так: GF_ADMIN_PASSWORD=... make monitoring-up.

Сервіс Адреса (лише loopback)
Grafana 127.0.0.1:3001 (GRAFANA_PORT)
Prometheus 127.0.0.1:9090
Alertmanager 127.0.0.1:9093
Loki 127.0.0.1:3100

Grafana постачається з дашбордами для огляду, воркера й запобіжника, JVM, Kafka та журналів. Alertmanager надсилає вбудовані правила сповіщень у Slack, на загальний вебхук або поштою, щойно ви задасте змінні ALERTMANAGER_*.

На що ставити сповіщення

Section titled “На що ставити сповіщення”
Метрика Чому
delivery_oldest_pending_age_seconds Вік найстарішої незавершеної доставки. Будь-яка причина проблем проявляється тут. forward_oldest_pending_age_seconds — вхідний відповідник
webhook_dlq_depth, incoming_forward_dlq_depth Доставки й пересилання, яким забракло повторів і які потребують людини
outbox_oldest_pending_age_seconds Прийняті події, які ще не дійшли до Kafka
circuit_breaker_degraded_total Redis був недоступний, і запобіжник пропускав виклики без захисту

Увімкніть інтеграції чарта з kube-prometheus-stack:

values.yaml
monitoring:
serviceMonitor:
enabled: true
prometheusRule:
enabled: true
grafanaDashboards:
enabled: true

ServiceMonitor збирає метрики з порту management API та воркера.