tgoop.com/devopslib/70
Create:
Last Update:
Last Update:
Привет, друзья! Сегодня хочу поделиться своим опытом настройки мониторинга Kubernetes-кластеров с помощью связки Prometheus + Grafana. Это один из самых востребованных сценариев в современных DevOps-стэках, и правильная реализация позволит вам оперативно реагировать на сбои и проседание производительности.
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
BY Библиотека девопса | DevOps, SRE, Sysadmin
Share with your friend now:
tgoop.com/devopslib/70