Моніторинг
Railhook віддає перевірки здоров’я на публічному порту, а метрики Prometheus — на внутрішніх портах. У репозиторії є готовий стек моніторингу, який можна запустити поруч.
Перевірки здоров’я
Section titled “Перевірки здоров’я”RAILHOOK_URL — адреса вашого інстансу: http://localhost після типового встановлення, http://localhost:<port>, якщо ви передали --port, https://<ваш домен> з --domain.
curl -f "$RAILHOOK_URL/actuator/health/liveness"curl -f "$RAILHOOK_URL/actuator/health/readiness"nginx проксує лише шляхи health. Решта шляхів /actuator/ на публічному порту відповідає 404.
Метрики
Section titled “Метрики”Метрики доступні на окремих керувальних портах, лише всередині мережі Docker, і не потребують облікових даних:
| Сервіс | Адреса метрик |
|---|---|
| API | http://api:8082/actuator/prometheus |
| Воркер | http://worker:8081/actuator/prometheus |
На публічний порт їх навмисно не проксовано: метрики розкрили б назви ендпоінтів і обсяги трафіку будь-кому, хто спитає.
Вбудований стек
Section titled “Вбудований стек”Каталог monitoring/ у репозиторії містить уже налаштовані Prometheus, Alertmanager, Grafana, Loki та Promtail.
-
Спершу запустіть Railhook з клону командою
make up. -
Запустіть стек моніторингу
Terminal window make monitoring-up -
Відкрийте 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 був недоступний, і запобіжник пропускав виклики без захисту |
Kubernetes
Section titled “Kubernetes”Увімкніть інтеграції чарта з kube-prometheus-stack:
monitoring: serviceMonitor: enabled: true prometheusRule: enabled: true grafanaDashboards: enabled: trueServiceMonitor збирає метрики з порту management API та воркера.