Definicja #
Prometheus to open-source'owy system monitoringu i alertowania z bazą danych szeregów czasowych (time-series database), stworzony przez SoundCloud w 2012 roku. W 2016 roku dołączył do CNCF (Cloud Native Computing Foundation) jako drugi projekt po Kubernetes. Dziś Prometheus jest standardem monitoringu w ekosystemie Cloud Native.
Kluczowe cechy Prometheusa:
- Model pull (scraping) — Prometheus sam odpytuje (scrape) aplikacje i eksportery w regularnych interwałach (domyślnie co 15 sekund); w odróżnieniu od modelu push stosowanego w Graphite czy InfluxDB
- Time-series database (TSDB) — wydajna lokalna baza danych metryczny z kompresją; dane przechowywane jako próbki: (timestamp, float64 value) + labels
- PromQL — potężny język zapytań (Prometheus Query Language) do eksploracji i agregacji metryk time-series; używany przez Grafanę do tworzenia dashboardów
- Labels — wielowymiarowe etykietowanie metryk (np.
http_requests_total{method="GET", status="200", endpoint="/api/offers"}); umożliwia filtrowanie i agregację - Alertmanager — oddzielny komponent do zarządzania alertami: deduplication, routing, powiadomienia (Slack, PagerDuty, email)
- Exporters — agenci eksponujący metryki w formacie Prometheus dla systemów, które natywnie go nie wspierają: node_exporter (OS metryki), blackbox_exporter, nginx-prometheus-exporter, postgres_exporter
Format metryk Prometheus: metric_name{label1="val1", label2="val2"} value [timestamp]
Zastosowania #
Prometheus stosuje się do:
- Monitorowania aplikacji i mikroserwisów — instrumentowanie kodu (biblioteki klienckie dla Go, Java, Python, .NET) i scraping metryk: latencja, throughput, błędy (RED: Rate, Errors, Duration)
- Monitorowania infrastruktury Kubernetes — kube-prometheus-stack (Helm chart) dostarcza Prometheusa, Alertmanagera i gotowe dashboardy Grafany dla klastra K8s i wszystkich workloadów
- Alertowania przy przekroczeniu progów — reguły alertów w PromQL (np. wysoki error rate, wysoka latencja, mało pamięci)
- Długoterminowego przechowywania metryk — Prometheus lokalnie (krótkoterminowo) + Thanos lub Cortex do long-term storage i HA
- SLO/SLA monitoring — śledzenie celów poziomu usług opartych na Error Budget i Burn Rate
Ścieżka nauki #
Prometheus jest najczęściej uczony razem z Grafaną i Kubernetes — naturalny stos observability.
Zacznij od:
- Instalacja:
docker run -p 9090:9090 prom/prometheus— dostępne UI pod localhost:9090 - Podstawy PromQL:
up,rate(),sum by(),histogram_quantile() - Dodanie node_exporter — metryki systemu operacyjnego (CPU, RAM, dysk, sieć)
- Scrape config:
prometheus.ymlz targets i interwałami - Integracja z Grafaną — Prometheus jako Data Source, pierwsze dashboardy
Następnie pogłębiaj:
- Instrumentowanie aplikacji: Prometheus .NET client, micrometer (Java), prometheus_client (Python)
- Alertmanager — reguły alertów w YAML, routing do Slacka/PagerDuty
- kube-prometheus-stack — Helm chart dla Kubernetes; ServiceMonitor, PodMonitor
- Long-term storage: Thanos lub VictoriaMetrics jako alternatywa dla natywnego TSDB
- Certyfikacja: KCNA lub CKA (Kubernetes) — Prometheus jest integralną częścią K8s stack
FAQ #
- Czym różni się Prometheus od Graphite i InfluxDB?
- Prometheus używa modelu pull — sam scrapuje metryki w regularnych interwałach. Graphite i InfluxDB używają modelu push — aplikacje wysyłają metryki do bazy. Prometheus ma wbudowane PromQL i Alertmanager. InfluxDB jest bazą ogólnego przeznaczenia (IoT, metryki biznesowe); Prometheus jest zoptymalizowany dla monitoringu aplikacji i infrastruktury.
- Czy Prometheus może przechowywać metryki długoterminowo?
- Natywnie Prometheus przechowuje metryki lokalnie — domyślnie 15 dni. Do długoterminowego przechowywania (miesiące, lata) i wysokiej dostępności używa się Thanos, Cortex lub VictoriaMetrics jako remote storage. Grafana Cloud oferuje Prometheus-compatible long-term storage jako SaaS.
- Co to jest PromQL?
- PromQL (Prometheus Query Language) to język zapytań do eksploracji i agregacji metryk time-series w Prometheusie. Obsługuje: selekcję metryk z filtrowaniem po labelach, funkcje rate(), increase(), histogram_quantile(), agregacje sum/avg/max by(). Grafana używa PromQL do budowania dashboardów z danych Prometheusa.
- Ile zarabia DevOps/SRE znający Prometheusa?
- DevOps Engineer lub SRE znający Prometheus, Grafana i Kubernetes zarabia w Polsce od 14 000 do 28 000 zł brutto. Observability (metryki, logi, traces) i Kubernetes to najcenniejsze kompetencje w rolach Platform Engineer i SRE w firmach z dużą infrastrukturą.