Ответ
В моей практике я разделяю стек на две ключевые группы.
Для мониторинга метрик и производительности:
- Prometheus — основной инструмент для сбора и хранения метрик по pull-модели. Я настраиваю его для сбора данных с приложений (через клиентские библиотеки), узлов (Node Exporter) и оркестратора (cAdvisor, kube-state-metrics).
- Grafana — для визуализации. Я создаю дашборды с использованием PromQL для отображения ключевых метрик: загрузка CPU/памяти, latency, error rate, бизнес-показатели.
- Alertmanager (часть экосистемы Prometheus) — для управления алертами и маршрутизации уведомлений в Slack, PagerDuty, Email.
Для централизованного логирования:
- ELK/EFK Stack — классическое решение. Я использовал Fluentd/Fluent Bit (как легковесный агент) для сбора логов из контейнеров и систем, Elasticsearch для индексации и хранения, Kibana для поиска и визуализации.
- Grafana Loki — предпочитаю его для современных Kubernetes-сред. Он более экономичен по ресурсам, так как не индексирует содержимое логов, а только их метки. Отлично интегрируется с Grafana для единой панели наблюдений.
Пример конфигурации Fluent Bit для отправки логов в Loki в Kubernetes:
apiVersion: v1
kind: ConfigMap
metadata:
name: fluent-bit-config
namespace: logging
data:
fluent-bit.conf: |
[SERVICE]
Parsers_File parsers.conf
[INPUT]
Name tail
Path /var/log/containers/*.log
Parser docker
Tag kube.*
[OUTPUT]
Name loki
Match *
Host loki.logging.svc.cluster.local
Port 3100
Labels job=fluentbit
Дополнительно я оценивал коммерческие SaaS-решения, такие как Datadog, для комплексного наблюдения, когда требовалась быстрая настройка без глубокого погружения в инфраструктуру.