Prometheus – monitoring infrastruktury i aplikacji
Informatyka

Prometheus – monitoring infrastruktury i aplikacji

Prometheus – monitoring infrastruktury i aplikacji

Prometheus to system monitoringu i alertingu zaprojektowany przede wszystkim dla środowisk dynamicznych, takich jak Linux, Docker, Kubernetes i infrastruktura chmurowa.

Jego podstawowa funkcja jest prosta:

                 Prometheus
                     |
          +----------+----------+
          |          |          |
        Linux      Docker    Kubernetes
          |          |          |
       Metrics    Metrics    Metrics

Prometheus zbiera metryki liczbowe i przechowuje je jako szeregi czasowe (time series).


Jak działa Prometheus?

Najważniejszą cechą Prometheusa jest model pull.

Zamiast czekać, aż każdy serwer wyśle dane, Prometheus okresowo pyta monitorowane systemy o metryki:

Prometheus
    |
    | HTTP GET /metrics
    v
Target
    |
    v
Metrics

Przykład:

node_cpu_seconds_total
node_memory_MemAvailable_bytes
node_filesystem_avail_bytes

Prometheus pobiera te wartości i zapisuje je wraz z timestampem.


Architektura

Typowa infrastruktura:

                    Prometheus
                         |
        +----------------+----------------+
        |                |                |
        v                v                v
   Linux Server      Kubernetes       Application
        |                |                |
   node_exporter    kube-state-metrics   /metrics
        |                |                |
        +----------------+----------------+
                         |
                         v
                      Grafana
                         |
                         v
                    Administrator

Prometheus odpowiada przede wszystkim za zbieranie i przechowywanie metryk, a Grafana za ich wygodną wizualizację.


/metrics

Aplikacja lub exporter udostępnia endpoint:

http://server:9100/metrics

który może zwracać np.:

node_memory_MemAvailable_bytes 4294967296
node_load1 0.42

Prometheus cyklicznie pobiera ten endpoint.


Node Exporter

Do monitorowania Linuxa bardzo często wykorzystuje się Node Exporter.

Schemat:

Linux
  |
  v
Node Exporter
  |
  | /metrics
  v
Prometheus

Node Exporter może dostarczać informacje m.in. o:

  • CPU,
  • RAM,
  • dyskach,
  • filesystemach,
  • sieci,
  • load average,
  • systemie operacyjnym.

Monitoring CPU

Przykładowo możemy obserwować:

CPU Usage
   |
100% |                 ███
 80% |           ███   ███
 60% |      ███  ███   ███
 40% | ███  ███  ███   ███
 20% | ███  ███  ███   ███
     +----------------------
          time →

Samo wysokie CPU nie musi oznaczać problemu.

Dlatego monitoring powinien analizować również:

  • load,
  • memory pressure,
  • I/O,
  • network,
  • procesy.

PromQL

Jedną z najważniejszych części Prometheusa jest PromQL – Prometheus Query Language.

Przykładowe zapytanie:

up

pokazuje, czy target jest dostępny.

Możemy również filtrować:

up{job="node"}

CPU

Przykładowe zapytanie pozwalające policzyć wykorzystanie CPU:

100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)

Pozwala obserwować procentowy poziom wykorzystania CPU dla hostów.


RAM

Możemy analizować dostępność pamięci:

node_memory_MemAvailable_bytes

albo procent wykorzystania pamięci:

100 * (1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)

Dysk

Przykład:

node_filesystem_avail_bytes

może pokazywać ilość dostępnego miejsca.

Można również stworzyć alert:

Filesystem
    |
    v
< 10% free
    |
    v
ALERT

Monitoring usług

Prometheus może monitorować również dostępność usług.

Przykład:

Prometheus
    |
    +--> Web Server
    |
    +--> Database
    |
    +--> API
    |
    +--> DNS

Jeżeli endpoint przestanie odpowiadać:

up == 0

można wygenerować alert.


Alertmanager

Sam Prometheus zbiera metryki i może oceniać reguły, ale do zarządzania alertami bardzo często wykorzystuje się Alertmanager.

Architektura:

Targets
   |
   v
Prometheus
   |
   | Alert
   v
Alertmanager
   |
   +--> Email
   +--> Slack
   +--> PagerDuty
   +--> Webhook

Przykład alertu

Załóżmy:

CPU > 90%

przez określony czas.

Logika:

IF CPU > 90%
FOR 5m
THEN ALERT

Dzięki temu chwilowy skok CPU nie musi od razu generować alarmu.


Prometheus + Kubernetes

To jedno z najważniejszych zastosowań.

Schemat:

                    Kubernetes
                        |
        +---------------+---------------+
        |               |               |
      Node            Pod             API
        |               |               |
   node-exporter    /metrics       kube-state
        |               |               |
        +---------------+---------------+
                        |
                    Prometheus
                        |
                      Grafana

Prometheus może monitorować:

  • nodes,
  • pods,
  • deployments,
  • services,
  • containers,
  • CPU,
  • RAM,
  • restarty,
  • dostępność workloadów.

Kubernetes i kube-state-metrics

kube-state-metrics dostarcza informacje o stanie obiektów Kubernetes.

Przykładowo:

Deployment
   |
   +--> desired replicas: 5
   +--> available: 3

Możemy wtedy wykryć:

Desired:   5
Available: 3

ALERT

Prometheus + Docker

W środowisku Docker można monitorować kontenery:

Docker Host
    |
    +--> Container A
    +--> Container B
    +--> Container C
    |
    v
Metrics
    |
    v
Prometheus

Interesujące są m.in.:

  • CPU,
  • RAM,
  • network,
  • filesystem,
  • restart count.

Prometheus + aplikacja

Prometheus nie jest ograniczony do infrastruktury.

Aplikacja może udostępniać własne metryki:

Application
    |
    +--> requests_total
    +--> errors_total
    +--> request_duration
    |
    v
/metrics

Prometheus je pobiera.


RED Method

W monitoringu aplikacji często wykorzystuje się metodę RED:

R – Rate
E – Errors
D – Duration

Czyli:

Requests/sec
Errors/sec
Latency

Przykładowo:

Requests: 1500/s
Errors:      2/s
p95:       120 ms

To daje znacznie lepszy obraz działania aplikacji niż samo CPU.


Monitoring HTTP

Możemy monitorować:

HTTP Requests
      |
      +--> 2xx
      +--> 4xx
      +--> 5xx
      |
      +--> Latency

Przykładowo alarm:

HTTP 5xx > 5%

może oznaczać poważny problem aplikacji.


Histogramy

Prometheus szczególnie dobrze nadaje się do analizowania rozkładów wartości, np. czasu odpowiedzi.

Request latency

0–50 ms      █████████████
50–100 ms    █████████
100–250 ms   ████
250–500 ms   ██
500ms+       █

Dzięki histogramom można analizować m.in. percentyle:

p50
p90
p95
p99

Prometheus i obserwowalność

W nowoczesnej infrastrukturze warto rozdzielić:

Metrics
Logs
Traces

czyli:

             Observability
                  |
       +----------+----------+
       |          |          |
    Metrics      Logs      Traces
       |          |          |
 Prometheus     Loki      Tempo/Jaeger
       |
     Grafana

Prometheus odpowiada przede wszystkim za metrics.


Prometheus vs logi

Prometheus:

CPU = 82%
RAM = 74%
Requests = 1500/s

Log:

2026-08-02 18:21:43
ERROR database connection timeout

Oba źródła informacji są potrzebne, ale rozwiązują różne problemy.

Prometheus – monitoring infrastruktury i aplikacji
Prometheus – monitoring infrastruktury i aplikacji

Prometheus + Grafana

Jedno z najpopularniejszych połączeń:

Servers
   |
   v
Prometheus
   |
   v
Grafana
   |
   v
Dashboard

Dashboard może prezentować:

CPU       ████████░░ 82%
RAM       ███████░░░ 71%
Disk      █████░░░░░ 52%
Network   ██████░░░░ 61%

Monitoring infrastruktury

Przykładowy dashboard:

Infrastructure
├── CPU
├── Memory
├── Disk
├── Network
├── Load
├── Processes
└── Availability

Dla Kubernetes:

Kubernetes
├── Nodes
├── Pods
├── Deployments
├── Containers
├── Restarts
└── API Server

Prometheus a bezpieczeństwo

Prometheus nie jest systemem IDS/IPS.

Nie zastępuje:

  • Suricata,
  • Snort,
  • Zeek,
  • EDR,
  • SIEM.

Ale może dostarczać bardzo wartościowe metryki bezpieczeństwa.

Przykład:

SSH Connections
      |
      v
Prometheus
      |
      v
Abnormal spike
      |
      v
Alert

Wykrywanie anomalii

Załóżmy, że serwer normalnie wykonuje:

10 SSH connections/hour

nagle:

1500 SSH connections/hour

Może to być sygnał:

  • brute force,
  • skanowania,
  • błędnej konfiguracji,
  • kompromitacji.

Prometheus może pomóc wykryć zmianę zachowania.


Prometheus + Node Exporter + Security

Przykładowa architektura:

                  Linux Server
                       |
          +------------+------------+
          |                         |
    Node Exporter                 Logs
          |                         |
          v                         v
     Prometheus                   SIEM
          |
       Grafana
          |
       Alerting

Monitoring i bezpieczeństwo pozostają osobnymi warstwami, ale mogą się uzupełniać.


Prometheus Federation

W większych środowiskach można mieć wiele instancji Prometheusa:

Prometheus EU
       |
Prometheus US
       |
Prometheus Asia
       |
       v
Global Prometheus

Pozwala to budować większą infrastrukturę monitoringu.


High Availability

Prometheus może być uruchomiony w wielu instancjach:

             Targets
                |
        +-------+-------+
        |               |
   Prometheus A     Prometheus B
        |               |
        +-------+-------+
                |
             Storage

W większych środowiskach wykorzystuje się dodatkowe rozwiązania do długoterminowego i skalowalnego przechowywania metryk.


Retencja danych

Prometheus przechowuje dane jako time series.

Przykład:

CPU
 |
 +-- 10:00
 +-- 10:01
 +-- 10:02
 +-- 10:03
 ...

Dłuższa retencja oznacza większe wymagania dotyczące storage.

Dlatego w dużych środowiskach często stosuje się rozwiązania takie jak:

Prometheus
    |
    v
Long-term Storage

Prometheus – typowe problemy

Cardinality

To jeden z najważniejszych problemów.

Niebezpieczne może być generowanie ogromnej liczby unikalnych etykiet:

user_id
request_id
session_id

Każda kombinacja labeli może tworzyć kolejną serię czasową.

W efekcie:

10 000 series
      ↓
1 000 000 series
      ↓
Storage / RAM pressure

Dlatego trzeba bardzo uważać na high-cardinality labels.


Prometheus nie powinien zbierać wszystkiego

Dobra metryka:

http_requests_total{method="GET",status="200"}

Potencjalnie problematyczna:

http_requests_total{user_id="123456789"}

Jeżeli użytkowników są miliony, liczba serii może gwałtownie wzrosnąć.


Prometheus – najlepsze praktyki

1. Monitoruj to, co ma znaczenie

Nie zbieraj bez potrzeby tysięcy metryk.

2. Kontroluj cardinality

Unikaj dynamicznych wartości w labelach.

3. Twórz sensowne alerty

Nie:

CPU > 80%

dla każdego chwilowego skoku.

Lepiej:

CPU > 90%
FOR 10m

jeżeli odpowiada to rzeczywistemu problemowi.

4. Monitoruj aplikację, nie tylko serwer

CPU może być prawidłowe, podczas gdy:

HTTP 5xx = 20%

5. Monitoruj dostępność

up == 0

jest często ważniejsze niż sama wartość CPU.


Przykładowy stack

Dla małego środowiska:

Linux
 |
Node Exporter
 |
Prometheus
 |
Grafana
 |
Alertmanager

Dla Kubernetes:

Kubernetes
 |
Prometheus
 |
kube-state-metrics
 |
node-exporter
 |
Grafana
 |
Alertmanager

Dla większego środowiska:

              Infrastructure
                     |
        +------------+------------+
        |            |            |
      Linux       Kubernetes     Apps
        |            |            |
        +------------+------------+
                     |
                 Prometheus
                     |
             +-------+-------+
             |               |
          Grafana       Alertmanager
             |
             v
            SOC

Prometheus w architekturze bezpieczeństwa

Jeżeli połączymy go z tematami, które omawialiśmy wcześniej:

                         INTERNET
                            |
                         Firewall
                            |
                     GeoIP Blocking
                            |
                      DNS Filtering
                            |
                     TLS Inspection
                            |
                        Suricata
                            |
                          Zeek
                            |
                    Microsegmentation
                            |
              +-------------+-------------+
              |             |             |
            Linux        Kubernetes      Apps
              |             |             |
           Exporter     Exporters       /metrics
              |             |             |
              +-------------+-------------+
                            |
                        Prometheus
                            |
                         Grafana
                            |
                       Alertmanager
                            |
                           SIEM

To bardzo dobra architektura observability + security.


Prometheus – najważniejsza rzecz

Prometheus odpowiada na pytanie:

„Jak zachowuje się moja infrastruktura i aplikacja w czasie?”

Przykładowo:

CPU
RAM
Disk
Network
Requests
Errors
Latency
Availability
Containers
Pods

Natomiast:

Suricata → Czy występuje podejrzany ruch?
Zeek     → Co dzieje się w sieci?
SIEM     → Jak połączyć wiele źródeł zdarzeń?
EDR      → Co dzieje się na endpointach?

Dlatego Prometheus jest przede wszystkim systemem monitoringu metryk, a nie narzędziem bezpieczeństwa.

Największą wartość daje wtedy, gdy jest częścią większego stosu:

Metrics + Logs + Traces + Security Events

czyli pełnej observability i security telemetry.

Polecane wpisy
Jak Discord integruje się z nowymi technologiami, takimi jak AI, Web3 i rozszerzona rzeczywistość
Jak Discord integruje się z nowymi technologiami, takimi jak AI, Web3 i rozszerzona rzeczywistość

Jak Discord integruje się z nowymi technologiami, takimi jak AI, Web3 i rozszerzona rzeczywistość Discord, jedna z najpopularniejszych platform komunikacyjnych Czytaj dalej

Rozszerzenia i dodatki do Firefoksa – Jak wzbogacić doświadczenie przeglądania internetu?
Rozszerzenia i dodatki do Firefoksa – Jak wzbogacić doświadczenie przeglądania internetu?

Rozszerzenia i dodatki do Firefoksa – Jak wzbogacić doświadczenie przeglądania internetu? Firefox to jedna z najpopularniejszych przeglądarek internetowych, która stawia Czytaj dalej

Marek "Netbe" Lampart Inżynier informatyki Marek Lampart to doświadczony inżynier informatyki z ponad 25-letnim stażem w zawodzie. Specjalizuje się w systemach Windows i Linux, bezpieczeństwie IT, cyberbezpieczeństwie, administracji serwerami oraz diagnostyce i optymalizacji systemów. Na netbe.pl publikuje praktyczne poradniki, analizy i instrukcje krok po kroku, pomagając administratorom, specjalistom IT oraz zaawansowanym użytkownikom rozwiązywać realne problemy techniczne.