Skip to content

Мониторинг, пробы здоровья и алерты ​

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) ​

  • Выполняет комплексную проверку ключевых компонентов:
    1. Доступность BadgerDB: База данных доступна на запись и не находится в состоянии восстановления.
    2. Доступность диска: Директория архива смонтирована и доступна для записи.
    3. Стриминговый движок: Маршрутизатор потоков успешно инициализирован.
  • Возвращает 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: "Дисковое пространство на исходе. Проверьте параметры ретенции."

Связанная документация ​

Released under the MIT License.