Руководство по мониторингу Quality Validator¶
Это руководство охватывает мониторинг, алертинг и observability для Quality Validator.
Быстрый старт¶
-
Импорт дашборда Grafana
-
Загрузка правил алертинга
-
Проверка метрик
Справочник метрик¶
Счётчики (Counters)¶
| Метрика | Лейблы | Описание |
|---|---|---|
quality_validation_total | contract_namespace, contract_name | Всего валидированных записей |
quality_validation_failed | contract_namespace, contract_name | Записей, не прошедших валидацию |
quality_dlq_records_total | contract_namespace, contract_name | Записей, отправленных в DLQ |
quality_rule_failures | contract_namespace, contract_name, rule_name, severity | Ошибки по правилам |
Гистограммы (Histograms)¶
| Метрика | Лейблы | Бакеты | Описание |
|---|---|---|---|
quality_validation_duration_seconds | contract_namespace, contract_name | 1мс до 10с | Латентность валидации записи |
quality_batch_size | contract_namespace, contract_name | 1 до 10000 | Записей в пакете |
Gauge метрики¶
| Метрика | Лейблы | Описание |
|---|---|---|
quality_pass_rate | contract_namespace, contract_name | Текущий процент успеха (0-1) |
quality_contract_version | contract_namespace, contract_name, version | Активная версия контракта |
Основные дашборды¶
Обзорный дашборд¶
Главный дашборд показывает: - Gauge процента успеха: Текущий процент успешных валидаций с цветовой кодировкой - Пропускная способность: Записей/секунду во времени - Скорость DLQ: Рост Dead Letter Queue - Персентили латентности: p50, p95, p99 времени валидации
Панель ошибок по правилам¶
Показывает разбивку ошибок по: - Названию правила - Severity (error/warning) - Трендам во времени
Мониторинг DLQ¶
Отслеживает: - Скорость записей в DLQ в минуту - Кумулятивный рост DLQ - Разбивку DLQ по контрактам
Алертинг¶
Уровни severity алертов¶
| Severity | Время реакции | Уведомление |
|---|---|---|
critical | Немедленно | PagerDuty + Slack |
warning | 1 час | Только Slack |
info | Следующий рабочий день | Email дайджест |
Определения алертов¶
HighValidationFailureRate¶
- Условие: Процент ошибок > 5% за 5 минут
- Severity: Warning
- Действие: Исследовать источник данных, проверить недавние изменения
CriticalValidationFailureRate¶
- Условие: Процент ошибок > 20% за 5 минут
- Severity: Critical
- Действие: Немедленное расследование, рассмотреть приостановку ingestion
ValidationLatencyHigh¶
- Условие: p99 латентность > 100мс за 5 минут
- Severity: Warning
- Действие: Проверить утилизацию ресурсов, сложность правил
DLQBacklogGrowing¶
- Условие: Скорость DLQ > 100 записей/минуту
- Severity: Warning
- Действие: Проверить записи DLQ, планировать переобработку
NoValidationsReceived¶
- Условие: Нет валидаций 15 минут
- Severity: Warning
- Действие: Проверить Kafka consumer, здоровье исходного топика
Каналы уведомлений¶
Mattermost/Slack¶
Конфигурация в Alertmanager:
receivers:
- name: 'data-quality-slack'
slack_configs:
- channel: '#data-quality-alerts'
send_resolved: true
title: '{{ .Status | toUpper }}: {{ .CommonAnnotations.summary }}'
text: '{{ .CommonAnnotations.description }}'
Telegram¶
receivers:
- name: 'data-quality-telegram'
telegram_configs:
- bot_token: 'YOUR_BOT_TOKEN'
chat_id: YOUR_CHAT_ID
message: |
{{ .Status | toUpper }}
{{ .CommonAnnotations.summary }}
{{ .CommonAnnotations.description }}
PagerDuty¶
receivers:
- name: 'data-quality-pagerduty'
pagerduty_configs:
- service_key: 'YOUR_SERVICE_KEY'
severity: '{{ .CommonLabels.severity }}'
Рецепты PromQL¶
Процент успеха во времени¶
sum(rate(quality_validation_total[5m]) - rate(quality_validation_failed[5m]))
by (contract_name)
/
sum(rate(quality_validation_total[5m])) by (contract_name)
Топ ошибающихся правил¶
Персентили латентности¶
histogram_quantile(0.99,
sum(rate(quality_validation_duration_seconds_bucket[5m])) by (le, contract_name)
)
Тренд скорости DLQ¶
Дрейф версии контракта¶
Диагностика проблем¶
Метрики не отображаются¶
-
Проверить, запущен ли валидатор:
-
Проверить конфигурацию scrape в Prometheus:
-
Проверить ошибки scrape:
Расследование высокой латентности¶
-
Проверить размеры пакетов:
-
Определить медленные правила:
-
Проверить утилизацию ресурсов:
Расследование DLQ¶
-
Получить разбивку ошибок:
-
Сравнить с общим количеством:
-
Проверить конкретный контракт:
Определения SLI/SLO¶
Процент успешных валидаций¶
- SLI:
quality:validation_pass_rate:5m - SLO: >= 95% за 30 дней
- Error Budget: 5% валидаций могут быть неуспешными
Латентность валидации¶
- SLI:
quality:validation_p99_latency:5m - SLO: p99 < 100мс
- Error Budget: 1% валидаций могут превышать 100мс
Доступность¶
- SLI: Uptime валидатора
- SLO: 99.9% доступности
- Error Budget: 43.8 минут/месяц простоя
Планирование ёмкости¶
Оценка пропускной способности¶
# Текущая пропускная способность
sum(rate(quality_validation_total[1h]))
# Пиковая пропускная способность (за 7 дней)
max_over_time(sum(rate(quality_validation_total[5m]))[7d:5m])
Требования к ресурсам¶
| Пропускная способность | CPU | Память | Инстансы |
|---|---|---|---|
| 1K записей/с | 0.5 ядра | 512MB | 1 |
| 10K записей/с | 2 ядра | 2GB | 2-3 |
| 100K записей/с | 8 ядер | 8GB | 5-10 |
Интеграция с каталогом данных¶
Метрики можно экспортировать в каталог данных для lineage: