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

От Иван Петров | 05 юли 2025 | 14 мин Български

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 система.

Демонстрационна снимка
За автора
Иван Петров
Иван Петров

Технически писател и разработчик с опит в различни технологии и фреймуърци.

Коментари