← Назад к вопросам
Расскажи про опыт работы с Prometheus
2.0 Middle🔥 211 комментариев
#Мониторинг и логирование
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI21 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
# Prometheus: Практический опыт и применение
Что такое Prometheus
Prometheus — это open-source система мониторинга и алертинга, основанная на pull-модели метрик. За 10+ лет работы я внедрил Prometheus в различных инфраструктурных сценариях, от малых стартапов до крупных enterprise систем.
Архитектура и компоненты
В своей практике я часто развёртываю следующую архитектуру:
version: "3.9"
services:
prometheus:
image: prom/prometheus:latest
ports:
- "9090:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus_data:/prometheus
command:
- "--config.file=/etc/prometheus/prometheus.yml"
- "--storage.tsdb.path=/prometheus"
- "--storage.tsdb.retention.time=30d"
alertmanager:
image: prom/alertmanager:latest
ports:
- "9093:9093"
volumes:
- ./alertmanager.yml:/etc/alertmanager/alertmanager.yml
node-exporter:
image: prom/node-exporter:latest
ports:
- "9100:9100"
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
command:
- "--path.procfs=/host/proc"
- "--path.sysfs=/host/sys"
- "--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)"
Конфигурация Prometheus
Типичная конфигурация, которую я использую:
global:
scrape_interval: 15s
evaluation_interval: 15s
external_labels:
cluster: "prod"
environment: "production"
alerting:
alertmanagers:
- static_configs:
- targets:
- localhost:9093
rule_files:
- "rules/*.yml"
scrape_configs:
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090"]
- job_name: "node"
static_configs:
- targets: ["localhost:9100"]
- job_name: "kubernetes"
kubernetes_sd_configs:
- role: node
Написание правил алертинга
Применяю PromQL для создания предупреждений:
groups:
- name: System
interval: 30s
rules:
- alert: HighMemoryUsage
expr: (1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100 > 80
for: 5m
labels:
severity: warning
annotations:
summary: "Высокое использование памяти"
- alert: DiskSpaceLow
expr: (node_filesystem_avail_bytes / node_filesystem_size_bytes) < 0.1
for: 10m
labels:
severity: critical
Экспортеры и интеграции
В своей работе интегрировал следующие экспортеры:
- Node Exporter — метрики ОС (CPU, память, диск, сеть)
- cAdvisor — метрики контейнеров Docker
- KubeStateMetrics — состояние K8s объектов
- Custom Exporter — пользовательские метрики приложений
Kubernetes и Prometheus
В K8s окружении использую Prometheus Operator для управления scrape конфигурациями:
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: app-metrics
spec:
selector:
matchLabels:
app: my-app
endpoints:
- port: metrics
interval: 30s
path: /metrics
Лучшие практики
- Retention Policy — храню метрики 30 дней, для долгосрочного анализа использую Thanos
- Labeling Strategy — правильная схема меток (job, instance, service)
- Recording Rules — pre-compute сложные запросы для оптимизации
- HA Setup — федерация для распределённых систем
- Resourcing — Prometheus требует 4GB+ RAM для миллионов метрик
Prometheus — мощный инструмент, и правильная архитектура мониторинга критична для production систем.