Ответ
Плюсы:
- Простая модель данных: Метрика — это временной ряд с набором лейблов. Это интуитивно понятно и мощно.
- Мощный язык запросов PromQL: Позволяет выполнять сложную агрегацию, прогнозирование и создавать производные метрики прямо на лету.
- Pull-модель сбора: Централизованное управление таргетами через service discovery (Kubernetes, Consul). Легко увидеть, что цель недоступна для сбора метрик.
- Надежность и автономность: Один сервер — это полноценное решение. Не зависит от внешних систем для сбора и хранения.
- Огромная экосистема: Официальные и community-экспортеры практически для всего (Node Exporter, cAdvisor, Blackbox Exporter).
Минусы:
- Хранение «на диске»: Нет встроенного кластерингованного долгосрочного хранения. Для масштабирования и долгосрочного хранения нужны надстройки (Thanos, Cortex, VictoriaMetrics).
- Нет поддержки высокочастотных метрик или логов: Оптимизирован под метрики с периодичностью сбора в секунды/минуты. Не подходит для трейсинга или полноценного логирования.
- Ненадежность при потере узла: Потеря данных за период между последним scrape и падением сервера.
Пример типичного правила алертинга в Prometheus:
# prometheus_rules.yml
- alert: HighRequestLatency
expr: job:request_latency_seconds:mean5m{job="myapp"} > 0.5
for: 10m
labels:
severity: page
annotations:
summary: "High latency detected in {{ $labels.job }}"