1. Развертывание Prometheus в Kubernetes
Я использую официальный Helm-чарт
prometheus-community/prometheus. Он сразу поднимает основные компоненты: prometheus-server, alertmanager, node-exporter, kube-state-metrics. Чтобы установить чарт:
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
helm install prometheus prometheus-community/kube-prometheus-stack
После этого Prometheus автоматически начинает собирать метрики с узлов и pod’ов.
2. Сбор метрик с приложений
Помимо стандартных метрик Kubernetes (CPU, память, статус pod’ов), часто нужно мониторить собственные сервисы. Для этого я внедряю в приложения клиентскую библиотеку Prometheus (например,
prometheus_client в Go или prom-client в Node.js) и экспонирую endpoint /metrics. В Kubernetes достаточно описать ServiceMonitor:
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: myapp-monitor
labels:
release: prometheus
spec:
selector:
matchLabels:
app: myapp
endpoints:
- port: http
path: /metrics
interval: 15s
Так Prometheus начнёт подтягивать кастомные метрики.
3. Настройка alerting’а через Alertmanager
Важно не просто собирать метрики, но и уметь вовремя получать уведомления. С помощью
Alertmanager я настраиваю правила в Prometheus:
groups:
- name: pod-alerts
rules:
- alert: PodCrashLooping
expr: kube_pod_container_status_restarts_total > 5
for: 10m
labels:
severity: warning
annotations:
summary: "Pod {{ $labels.namespace }}/{{ $labels.pod }} в состоянии CrashLoopBackOff"
description: "Контейнер {{ $labels.container }} перезапускался более 5 раз за последние 10 минут."
Эти алерты отправляются в Slack или Telegram-бота, чтобы команда всегда была в курсе.
4. Визуализация данных в Grafana
Helm-чарт сразу разворачивает Grafana с готовыми дашбордами: Kubernetes Cluster Monitoring, Node Exporter, Kube State Metrics и т.д. Я дорабатываю эти дашборды под свои нужды: добавляю графики latency запросов, ошибок HTTP-кодов, значение очередей в RabbitMQ и другие ключевые метрики нашего окружения.
5. Советы по оптимизации производительности
▪️Увеличьте retention данных в Prometheus, если у вас достаточно дискового пространства. Например,
--storage.tsdb.retention.time=30d.▪️Настройте сервисы сбора метрик так, чтобы они не генерировали слишком «шумные» метрики (агрегация по нужным лейблам).
▪️Используйте
Thanos или Cortex для долгосрочного хранения метрик, если у вас мультидатацентровая архитектура.Надеюсь, эта инструкция поможет вам быстро поднять качественный мониторинг Kubernetes. Если есть вопросы или примеры ваших реализаций — пишите в комментариях!
Подпишись 👉@devopslib