Prometheus мониторинг для iobackup

Этот документ описывает, как подключить iobackup-agent к Prometheus, какие метрики доступны и как построить базовые алерты/дашборды.

1) Endpoint метрик

Агент экспортирует метрики на:

Пример проверки:

curl -sS http://127.0.0.1:8735/metrics

В ответе есть:

2) Подключение Prometheus

Пример prometheus.yml:

scrape_configs:
  - job_name: iobackup-agent
    metrics_path: /metrics
    scrape_interval: 15s
    scrape_timeout: 10s
    static_configs:
      - targets:
          - 127.0.0.1:8735
        labels:
          service: iobackup
          env: dev

Если агент доступен не локально, замените target на адрес узла с агентом.

3) Модель метрик

Cardinality policy (0.17-fix.50)

Allowed labels (expected low-cardinality / safe):

Forbidden / high-risk labels (do not add; may explode cardinality or leak sensitive info):

Note: current metrics include job_id, task_id and webhook (webhook name) labels. Это допустимо только если имена webhook и job/task конфигов ограничены конфигом (не генерируются динамически на каждый run). Если потребуется более строгая политика — пересмотрим label set в 0.17-fix.60+.

3.1 API метрики

3.2 Job / Run / Task lifecycle

Task-уровень:

3.3 Provider operations

Где:

3.4 Backup data и artifacts

3.5 Webhook notifications

3.6 Runtime/build

4) Примеры PromQL

4.1 Ошибки run/task

Run failed за 15 минут:

sum(increase(iobackup_runs_finished_total{status="failed"}[15m]))

Task failed по destination за 15 минут:

sum by (destination_type) (
  increase(iobackup_tasks_finished_total{status="failed"}[15m])
)

4.2 Успешность и SLI

Run success ratio за 1 час:

sum(increase(iobackup_runs_finished_total{status="success"}[1h]))
/
sum(increase(iobackup_runs_finished_total[1h]))

Webhook success ratio за 30 минут:

sum(increase(iobackup_notifications_total{status="success"}[30m]))
/
sum(increase(iobackup_notifications_total[30m]))

4.3 Длительность

P95 API latency (в секундах):

histogram_quantile(
  0.95,
  sum by (le, route, method) (
    rate(iobackup_api_request_duration_seconds_bucket[5m])
  )
)

P95 task duration по source/destination:

histogram_quantile(
  0.95,
  sum by (le, source_type, destination_type) (
    rate(iobackup_task_duration_seconds_bucket[15m])
  )
)

4.4 Throughput / объемы

Скорость записи backup-данных (bytes/sec) по destination:

sum by (destination_type) (
  rate(iobackup_backup_bytes_total[5m])
)

5) Пример alert rules

Файл iobackup-alerts.yml:

groups:
  - name: iobackup.rules
    rules:
      - alert: IobackupRunFailures
        expr: sum(increase(iobackup_runs_finished_total{status="failed"}[10m])) > 0
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "Есть failed run в iobackup"
          description: "За последние 10m обнаружены неуспешные run."

      - alert: IobackupTaskFailuresHigh
        expr: sum(increase(iobackup_tasks_finished_total{status="failed"}[15m])) > 3
        for: 5m
        labels:
          severity: critical
        annotations:
          summary: "Высокий уровень task failures"
          description: "Более 3 failed task за 15m."

      - alert: IobackupWebhookFailures
        expr: sum(increase(iobackup_notifications_total{status="failed"}[10m])) > 0
        for: 2m
        labels:
          severity: warning
        annotations:
          summary: "Webhook delivery errors"
          description: "Есть failed webhook notifications."

      - alert: IobackupAPILatencyP95High
        expr: |
          histogram_quantile(
            0.95,
            sum by (le) (rate(iobackup_api_request_duration_seconds_bucket[5m]))
          ) > 1
        for: 10m
        labels:
          severity: warning
        annotations:
          summary: "Высокая latency API"
          description: "P95 API latency выше 1s в течение 10m."

6) Рекомендации по эксплуатации

7) Быстрый чек-лист внедрения

  1. Проверить curl http://<agent>/metrics.
  2. Добавить scrape_config в Prometheus.
  3. Проверить target в /targets Prometheus UI.
  4. Убедиться, что появляются iobackup_runs_finished_total и iobackup_tasks_finished_total.
  5. Подключить alert rules и протестировать тестовым failed run.