Prometheus за начинаещи

1. Въведение в Prometheus
Prometheus е водеща система с отворен код за мониторинг и алармиране, първоначално разработена от SoundCloud, а по-късно присъединена към Cloud Native Computing Foundation (CNCF). Тя е проектирана за събиране на числови метрики от различни източници чрез HTTP, като ги съхранява локално и предоставя мощен език за заявки (PromQL).
2. Как работи Prometheus?
Prometheus използва pull модел за събиране на метрики: той се свързва директно с приложения или експортери, които предоставят метрики на определен HTTP endpoint (обикновено /metrics
). Събраните данни се съхраняват в time-series база и могат да се анализират или визуализират чрез PromQL или Grafana.
Компоненти:
- Prometheus Server: Основният процес, който събира и съхранява метриките.
- Exporters: Малки агенти, които излагат метрики (пример: Node Exporter, MySQL Exporter).
- Pushgateway: Позволява push на метрики от краткотрайни процеси.
- Alertmanager: Управлява изпращането на аларми към имейл, Slack, PagerDuty и други.
- PromQL: Език за заявки, който позволява агрегации, филтриране, изчисления и визуализации.
3. Предимства на Prometheus
- Мощен и изразителен език за заявки (PromQL)
- Вградена time-series база – не изисква външна база данни
- Автоматично откриване на услуги чрез Kubernetes, Consul, EC2 и други
- Интеграция с Grafana за визуализации
- Голям избор от предварително изградени експортери
- Надеждна и доказана в production среди
4. Експортери
Експортерите са основният начин да направим съществуващи системи наблюдаеми от Prometheus. Някои популярни:
- Node Exporter: Метрики за CPU, памет, дискове, мрежа
- Blackbox Exporter: HTTP, TCP, ICMP проверки
- MySQL Exporter: Метрики за MySQL/MariaDB бази
- nginx Exporter: NGINX статус и натоварване
- Kafka Exporter, Redis Exporter, etcd Exporter
5. PromQL – Примерни заявки
PromQL е мощен език за анализ на метрики. Примери:
up == 0
Показва неработещи endpoints
rate(http_requests_total[5m])
Скорост на HTTP заявките за последните 5 минути
avg by(instance) (rate(cpu_usage_seconds_total[1m]))
Средна натовареност на CPU по инстанция
6. Интеграция с Grafana
Grafana е идеалният партньор за Prometheus – той може да визуализира всякакви PromQL заявки в табла (dashboards). Повечето готови dashboards в Grafana са изградени за Prometheus и неговите експортери.
7. Инсталиране на Prometheus в Kubernetes
Най-лесният начин е чрез Helm:
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm install prometheus prometheus-community/kube-prometheus-stack
Този пакет съдържа Prometheus, Alertmanager, Grafana и нужните експортери, конфигурирани автоматично.
8. Alarm-и с Alertmanager
Alertmanager получава аларми от Prometheus и ги маршрутизира към различни канали. Пример:
groups:
- name: instance-down
rules:
- alert: InstanceDown
expr: up == 0
for: 1m
labels:
severity: critical
annotations:
summary: 'Инстанция не отговаря'
description: 'Сървърът {{ $labels.instance }} е недостъпен'
9. Заключение
Prometheus е индустриален стандарт за мониторинг на облачни и Kubernetes среди. Благодарение на мощната архитектура, лесна интеграция и активната общност, той осигурява пълна видимост върху състоянието и производителността на системите. Съчетан с Grafana и Alertmanager, Prometheus изгражда цялостна и мащабируема monitoring система.

Коментари