Мониторинг, пробы здоровья и алерты
RUSEON Core предоставляет встроенные возможности мониторинга через выделенный эндпоинт метрик (http://<host>:9090/metrics) и стандартизированные пробы здоровья, совместимые с Kubernetes.
1. Пробы здоровья и готовности к нагрузке
На порту 9090 RUSEON Core отдаёт две независимые пробы состояния:
Liveness Probe (GET /livez)
- Проверяет, что процесс сервера запущен, отвечает на запросы и в рантайме Go отсутствуют взаимные блокировки.
- Возвращает
HTTP 200 OKс телом{"status": "healthy"}. - Используется оркестраторами (Kubernetes, Docker) для автоматического перезапуска зависшего контейнера.
Readiness Probe (GET /readyz)
- Выполняет комплексную проверку ключевых компонентов:
- Доступность BadgerDB: База данных доступна на запись и не находится в состоянии восстановления.
- Доступность диска: Директория архива смонтирована и доступна для записи.
- Стриминговый движок: Маршрутизатор потоков успешно инициализирован.
- Возвращает
HTTP 200 OK, если сервер готов обслуживать трафик, илиHTTP 503 Service Unavailableпри сбое критического компонента.
2. Конфигурация сбора метрик в Prometheus
Добавьте задание сбора в ваш файл prometheus.yml:
yaml
scrape_configs:
- job_name: "ruseon"
scrape_interval: 10s
scrape_timeout: 5s
static_configs:
- targets: ["ruseon.internal:9090"]
relabel_configs:
- source_labels: [__address__]
target_label: instance
regex: "([^:]+)(?::\\d+)?"
replacement: "${1}"3. Рекомендуемые правила алертинга (Prometheus Alertmanager)
Создайте файл правил ruseon_alerts.yml:
yaml
groups:
- name: ruseon_core_alerts
rules:
- alert: RuseonCameraStreamOffline
expr: ruseon_stream_online == 0
for: 1m
labels:
severity: warning
annotations:
summary: "Потерян поток с камеры: {{ $labels.camera_id }}"
description: "Камера {{ $labels.camera_id }} отключена более 1 минуты."
- alert: RuseonBufferFrameDrops
expr: rate(ruseon_buffer_drops_total[5m]) > 0
for: 2m
labels:
severity: critical
annotations:
summary: "Обнаружены дропы кадров в буфере: {{ $labels.camera_id }}"
description: "Обнаружен медленный потребитель. Буфер сбрасывает P-кадры для защиты пайплайна."
- alert: RuseonStorageSpaceLow
expr: ruseon_storage_free_bytes / ruseon_storage_total_bytes < 0.10
for: 5m
labels:
severity: critical
annotations:
summary: "Осталось менее 10% свободного места на диске записей"
description: "Дисковое пространство на исходе. Проверьте параметры ретенции."