DEVOPSLIB Telegram 70
Привет, друзья! Сегодня хочу поделиться своим опытом настройки мониторинга 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
👍8



tgoop.com/devopslib/70
Create:
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

View MORE
Open in Telegram


Telegram News

Date: |

bank east asia october 20 kowloon Your posting frequency depends on the topic of your channel. If you have a news channel, it’s OK to publish new content every day (or even every hour). For other industries, stick with 2-3 large posts a week. Choose quality over quantity. Remember that one high-quality post is better than five short publications of questionable value. In 2018, Telegram’s audience reached 200 million people, with 500,000 new users joining the messenger every day. It was launched for iOS on 14 August 2013 and Android on 20 October 2013. The public channel had more than 109,000 subscribers, Judge Hui said. Ng had the power to remove or amend the messages in the channel, but he “allowed them to exist.”
from us


Telegram Библиотека девопса | DevOps, SRE, Sysadmin
FROM American