Наблюдение
Prometheus и Grafana
docker compose -f docker-compose.prod.yml -f docker-compose.monitoring.yml --env-file .env up -d
- Prometheus (
127.0.0.1:9090) събира метрики от всяка реплика на бекенда на:9091. - Grafana (
127.0.0.1:3000, администраторска паролаGRAFANA_ADMIN_PASSWORD) зарежда таблото Entrosity Axis overview. - И двете слушат само на localhost; достъпвайте ги през SSH тунел.
- Свържете Prometheus с вашия Alertmanager (вижте коментара в
deploy/monitoring/prometheus.yml).
Правила за аларми
deploy/monitoring/alerts.yml:
| Аларма | Задейства се, когато |
|---|---|
RMMQueueBacklog | Дълбочината на опашката със задачи е над 1 000 в продължение на 10 минути |
RMMAgentConnectionsDropping | WebSocket връзките намаляват с повече от 20 % за 5 минути |
RMMHighErrorRate | HTTP 5xx над 2 % |
RMMDatabasePoolSaturated | Пулът на базата данни е запълнен над 80 % |
RMMBackendDown | Бекенд спира да отговаря на заявките за събиране на метрики |
RMMSlowAPI | Закъснението p95 на API е твърде високо |
RMMJobDispatchSlow | Изпращането на задачи е твърде бавно |
RMMPlatformSyncStale | Копието на потребителите, тенантите и ролите от Entrosity Hub е по-старо от 5 минути в продължение на 5 минути |
Метрики
| Метрика | Значение |
|---|---|
rmm_ws_connections{kind} | Свързани агенти и конектори за всяка реплика |
rmm_ws_disconnects_total | Прекъсвания на WebSocket връзки |
rmm_agents_online | Агенти онлайн |
rmm_jobs_total{type,status} | Приключили задачи по тип и резултат |
rmm_job_dispatch_seconds | Време от създаването на задачата до доставката ѝ |
rmm_http_request_duration_seconds{method,route,status} | Закъснение по маршрут |
rmm_river_queue_depth{state} | Опашка с фонови задачи |
rmm_db_pool_connections{state} | Използване на пула |
rmm_deployments_active | Текущи внедрявания |
rmm_sse_subscribers | Отворени потоци от събития на портала |
rmm_adsync_runs_total{status} | Изпълнения на синхронизацията с AD |
rmm_retention_rows_deleted_total{category} | Напредък на почистването по срок на съхранение |
rmm_platform_sync_age_seconds | Възраст на копието на данните от Entrosity Hub в репликата |
rmm_platform_syncs_total{result} | Изтегляния на моментни снимки: applied, unchanged, error |
Профилите са на :9091/debug/pprof/ (само вътрешно). Няма публичен
маршрут /metrics.
Проверки на състоянието
| Крайна точка (endpoint) | Значение |
|---|---|
/healthz (също /api/v1/healthz) | Процесът работи. |
/readyz | Базата данни е достъпна (използва се от Caddy и от проверката на състоянието на контейнера). checks.platform_sync също отчита ok, stale (<age>) или never; остаряло копие не проваля проверката, така че прекъсване на Hub не изважда Axis от ротацията. |
Проверката на състоянието на контейнера изпълнява rmm-server healthcheck.
Журнали
docker compose -f docker-compose.prod.yml logs -f backend
В продукционна среда журналите са в JSON формат и се ротират от Docker
(20 MB × 5 за контейнер). Тайните се маскират. PostgreSQL записва в
журнала заявките, по-бавни от 1 s, заедно с техния план (auto_explain), а
pg_stat_statements е активиран.