Мониторинг здоровья агентов
Health checks, heartbeat конфигурация, статусы, алерты, auto-recovery и API мониторинга
Обзор
FlowLink автоматически собирает 12 метрик здоровья с каждого подключённого агента через heartbeat. Данные доступны через API, CLI и dashboard в реальном времени. 4 статуса здоровья: healthy, degraded, critical, offline. При переходе в degraded/critical/offline генерируются алерты, а при поддержке auto-recovery — автоматические действия.
12 метрик
CPU, RAM, disk, load, network, uptime
Все тарифы
Heartbeat
Настраиваемый интервал (10-60s)
Все тарифы
Auto-recovery
Автоматические действия при сбоях
Team+
Prometheus
/metrics endpoint для scraping
Все тарифы
Как работает мониторинг
Агент FlowLink периодически отправляет heartbeat на Relay сервер. Heartbeat содержит 12 метрик, собранных с хоста. Relay вычисляет агрегированный статус здоровья на основе пороговых значений. При отсутствии heartbeat в течение настроенного интервала — агент помечается как offline.
# Heartbeat pipeline
1. Agent → collect metrics (CPU, RAM, disk, ...)
2. Agent → send heartbeat to Relay (POST /health)
3. Relay → evaluate thresholds → compute status
4. Relay → store in timeseries DB
5. Relay → check status transition (healthy→degraded→critical→offline)
6. Relay → trigger alerts / auto-recovery if needed
7. Relay → expose /metrics for Prometheus
12 метрик здоровья
cpu_percentЗагрузка CPU (%)
0-100%
ram_percentИспользование RAM (%)
0-100%
ram_used_gbRAM used (GB)
0-N GB
disk_percentИспользование диска (%)
0-100%
disk_free_gbСвободное место (GB)
0-N GB
load_avg_1mLoad average (1 min)
0-N
uptime_secondsUptime
seconds
open_connectionsОткрытые соединения
0-N
process_countКоличество процессов
0-N
container_countКоличество контейнеров (Docker)
0-N
error_rateRate ошибок (5 min window)
0-100%
command_count_1hКоманд за последний час
0-N
Статусы здоровья
CPU < 80%, RAM < 85%, Disk < 90%
Мониторинг
CPU > 80% или RAM > 85%
Алерт admin
CPU > 95% или Disk > 95%
Алерт + auto-recovery
Нет heartbeat > 60s
Алерт + escalation
Конфигурация heartbeat
Интервал heartbeat и порог offline-детекции настраиваются на стороне агента и сервера. Рекомендуется 10-30 секунд для production deployments.
1# Конфигурация агента (flowlink-agent.yml)2agent:3 heartbeat_interval_seconds: 15 # Интервал отправки heartbeat4 health_check_timeout_seconds: 5 # Timeout сбора метрик56 # Метрики для сбора7 metrics:8 enabled: [cpu, ram, disk, load, network, processes, containers, connections, error_rate]910 # Настройки сервера (flowlink.config.yml)11server:12 health:13 offline_threshold_seconds: 60 # Нет heartbeat → offline14 degraded_threshold_seconds: 30 # Задержка heartbeat → degraded warning15 timeseries_retention_days: 30 # Хранение timeseries данных
API Reference
Обзор здоровья всех агентов
1curl -s "https://api.flowlink.io/v1/agents/health/overview" \2 -H "Authorization: Bearer $TOKEN" | jq
1{2 "total_agents": 15,3 "healthy": 12,4 "degraded": 2,5 "critical": 0,6 "offline": 1,7 "last_updated": "2026-01-15T14:30:00Z",8 "agents": [9 {10 "agent_id": "agent-prod-01",11 "agent_name": "prod-deploy-agent",12 "status": "healthy",13 "cpu_percent": 23.5,14 "ram_percent": 61.2,15 "disk_percent": 45.8,16 "load_avg_1m": 1.24,17 "uptime_seconds": 345600,18 "open_connections": 15,19 "process_count": 142,20 "container_count": 3,21 "error_rate": 0.2,22 "command_count_1h": 45,23 "last_heartbeat": "2026-01-15T14:30:00Z",24 "reported_at": "2026-01-15T14:30:00Z"25 },26 {27 "agent_id": "agent-prod-02",28 "agent_name": "prod-db-agent",29 "status": "degraded",30 "cpu_percent": 87.3,31 "ram_percent": 91.5,32 "disk_percent": 72.1,33 "load_avg_1m": 4.87,34 "uptime_seconds": 864000,35 "last_heartbeat": "2026-01-15T14:30:00Z",36 "degraded_reasons": ["cpu_percent > 80%", "ram_percent > 85%"]37 }38 ]39}
Здоровие конкретного агента
1curl -s "https://api.flowlink.io/v1/agents/agent-prod-01/health" \2 -H "Authorization: Bearer $TOKEN" | jq
1{2 "agent_id": "agent-prod-01",3 "agent_name": "prod-deploy-agent",4 "status": "healthy",5 "status_history": [6 { "status": "healthy", "since": "2026-01-14T10:00:00Z" },7 { "status": "degraded", "from": "2026-01-13T15:00:00Z", "to": "2026-01-14T10:00:00Z" }8 ],9 "current_metrics": {10 "cpu_percent": 23.5,11 "ram_percent": 61.2,12 "ram_used_gb": 10.0,13 "disk_percent": 45.8,14 "disk_free_gb": 54.2,15 "load_avg_1m": 1.24,16 "uptime_seconds": 345600,17 "open_connections": 15,18 "process_count": 142,19 "container_count": 3,20 "error_rate": 0.2,21 "command_count_1h": 4522 },23 "last_heartbeat": "2026-01-15T14:30:00Z"24}
Timeseries данные
1curl -s "https://api.flowlink.io/v1/agents/agent-prod-01/health/timeseries?hours=24&metrics=cpu_percent,ram_percent" \2 -H "Authorization: Bearer $TOKEN" | jq
1{2 "agent_id": "agent-prod-01",3 "period": { "from": "2026-01-14T14:30:00Z", "to": "2026-01-15T14:30:00Z" },4 "resolution": "1m",5 "metrics": {6 "cpu_percent": [7 { "timestamp": "2026-01-15T14:00:00Z", "value": 22.1 },8 { "timestamp": "2026-01-15T14:01:00Z", "value": 23.5 },9 { "timestamp": "2026-01-15T14:02:00Z", "value": 21.8 }10 ],11 "ram_percent": [12 { "timestamp": "2026-01-15T14:00:00Z", "value": 60.8 },13 { "timestamp": "2026-01-15T14:01:00Z", "value": 61.2 },14 { "timestamp": "2026-01-15T14:02:00Z", "value": 61.5 }15 ]16 }17}
Алерты
При переходе статуса здоровья генерируется алерт с детальной информацией. Алерты отправляются через настроенные каналы: Telegram, email, webhook.
1{2 "alert_type": "agent_health_change",3 "agent_id": "agent-prod-02",4 "previous_status": "healthy",5 "current_status": "degraded",6 "reasons": ["cpu_percent > 80% (87.3%)", "ram_percent > 85% (91.5%)"],7 "metrics_snapshot": {8 "cpu_percent": 87.3,9 "ram_percent": 91.5,10 "disk_percent": 72.1,11 "load_avg_1m": 4.8712 },13 "recommendations": [14 "Check for memory leaks",15 "Review running processes",16 "Consider scaling resources"17 ],18 "timestamp": "2026-01-15T14:30:00Z"19}
Auto-recovery
Auto-recovery автоматически выполняет предопределённые действия при переходе агента в degraded или critical статус. Действия настраиваются и требуют явного включения.
1# Конфигурация auto-recovery2auto_recovery:3 enabled: true45 # Действия при degraded6 degraded:7 - action: "notify"8 channel: "telegram"9 - action: "log_rotate"10 condition: "disk_percent > 85"11 - action: "restart_services"12 condition: "error_rate > 10"13 services: ["nginx", "node-app"]1415 # Действия при critical16 critical:17 - action: "notify"18 channel: ["telegram", "email"]19 - action: "restart_agent"20 max_attempts: 321 - action: "drain_connections"22 condition: "open_connections > 1000"23 - action: "escalate"24 channel: "pagerduty"
Prometheus
1# Базовые метрики на /metrics endpoint2curl -s "https://api.flowlink.io/metrics" | grep flowlink_agent34# flowlink_agent_cpu_percent{agent_id="agent-prod-01"} 23.55# flowlink_agent_ram_percent{agent_id="agent-prod-01"} 61.26# flowlink_agent_disk_percent{agent_id="agent-prod-01"} 45.87# flowlink_agent_status{agent_id="agent-prod-01",status="healthy"} 18# flowlink_agent_uptime_seconds{agent_id="agent-prod-01"} 345600
1# Prometheus scrape config2scrape_configs:3 - job_name: 'flowlink-agents'4 scrape_interval: 15s5 static_configs:6 - targets: ['flowlink-relay:9090']7 metrics_path: '/metrics'
Устранение неполадок
Агент показывает offline, но запущен
Проверьте сетевое соединение до Relay. Убедитесь что heartbeat_interval_seconds < offline_threshold_seconds. Проверьте логи агента на ошибки отправки.
Метрики обновляются редко
Уменьшите heartbeat_interval_seconds. Проверьте что агент не throttled. При большом количестве агентов (> 100) рекомендуется интервал 30 секунд.
Ложные critical алерты
Проверьте пороги в конфигурации. Если агент стабильно работает на высокой нагрузке, увеличьте пороги degraded/critical. Используйте кастомные пороги для конкретных агентов.
Лучшие практики
Настройте пороги под нагрузку
Агенты с высокой базовой нагрузкой (database servers) требуют повышенных порогов. Не используйте дефолтные значения для всех агентов.
Интегрируйте с Prometheus/Grafana
Экспорт /metrics endpoint в Prometheus позволяет строить кастомные дашборды и настраивать alerting правила в Grafana.
Включите auto-recovery для production
Auto-recovery автоматически реагирует на degradation. Начните с notify-only и постепенно добавляйте действия.
Мониторьте сам Relay
Убедитесь что Relay сервер тоже мониторится. Добавьте health check для Relay в вашу monitoring систему.