← Ко всем статьям
Observability в Kubernetes — Prometheus, Loki и Grafana без боли
Почему в K8s ломаются старые подходы к мониторингу, минимальный стек Prometheus, стратегии логов (Fluent Bit / Loki / EFK) и чек-лист старта.
Содержание
Observability в Kubernetes — Prometheus, Loki и Grafana без боли
Поды живут минуты, ноды «танцуют», логи умирают вместе с контейнером. Без нормальной observability вы слепы.
Почему в K8s сложнее
- Эфемерность — логи в файле внутри контейнера = потеря при рестарте.
- Динамика — HPA, деплои, CrashLoop.
- Масштаб — десятки нод, сотни подов, тысячи метрик.
Метрики: Prometheus-стек
Минимум:
- Prometheus Server
- Node Exporter (DaemonSet)
- kube-state-metrics
- Alertmanager
- Grafana
Практика:
- Мониторьте всё критичное: ноды, поды, ключевые приложения.
- Используйте ServiceMonitor / PodMonitor (declarative scrape).
- Алерты на устойчивое состояние («не Ready > 3 мин»), не на каждый spike.
- Долгое хранение — Thanos / VictoriaMetrics.
- Импортируйте готовые Grafana-дашборды, не рисуйте с нуля.
Быстрый старт: kube-prometheus-stack через Helm.
Логи: только stdout/stderr
Три стратегии сбора:
- DaemonSet-агент (Fluent Bit) — дефолт для большинства.
- Sidecar — если нужна предобработка или приложение пишет в файл.
- SDK из приложения — редко, усложняет код.
Стеки:
Стек | Плюсы |
|---|---|
PLG (Promtail/Fluent Bit + Loki + Grafana) | Проще, дешевле, один UI с метриками |
EFK (Fluent Bit/Fluentd + ES + Kibana) | Мощный полнотекстовый поиск |
Обязательно:
- JSON-логи;
- обогащение
pod/namespace/ labels; - TTL хранения.
Магия интеграции
Цель: из алерта в причину за 2 клика.
- Grafana = SPOG (Prometheus + Loki).
- Общие labels (
pod,app) для drill-down. - Loki Ruler — алерты на
panic:/FATAL.
Чек-лист на вечер
- Поставить
kube-prometheus-stack. - Fluent Bit DaemonSet → Loki (или ES).
- 5–10 критичных алертов, не 500 шумных.
- Импорт дашбордов кластера.
Лучше простая рабочая система, чем недоделанный монстр.