Monitoring i utrzymanie Średnio zaawansowany 65 min

Metryki i percentyle w praktyce

Dobierzesz typ metryki i odczytasz p50, p95 oraz p99 bez mylenia ich ze średnią.

Wróć do listy lekcji

1. Krótka teoria

Counter liczy zdarzenia i rośnie, dopóki proces się nie zrestartuje; z takiego licznika oblicza się tempo żądań lub błędów. Gauge pokazuje bieżącą wartość, która może rosnąć i maleć, na przykład długość kolejki albo liczbę zajętych połączeń. Histogram grupuje obserwacje czasu odpowiedzi w przedziały, dzięki czemu można szacować percentyle. p50 to mediana, p95 oznacza granicę, poniżej której mieści się około 95% pomiarów, a p99 pokazuje dalszy ogon wolnych odpowiedzi. Średnia może ukrywać problem małej grupy użytkowników, dlatego czytaj ją razem z percentylami i liczbą próbek. Metryki zasobów obejmują CPU, pamięć, dysk i sieć. Aplikacja powinna pokazywać czas żądań, błędy HTTP, głębokość kolejki billing-worker oraz użycie puli połączeń app-db. Nie porównuj p95 z różnych przedziałów czasu bez sprawdzenia ruchu. W Prometheus klasyczny histogram pozwala szacować percentyl przez histogram_quantile; to przykład sposobu analizy, bez instalacji narzędzia w ShellForge.

2. Przykłady komend

curl -sS -o /dev/null -w '%{time_total} ' http://127.0.0.1:8000/health

Mierzy czas pojedynczego żądania, który nie jest jeszcze percentylem.

$ curl -sS -o /dev/null -w '%{time_total}
' http://127.0.0.1:8000/health
top -b -n 1 | head -n 20

Pokazuje chwilowy obraz CPU i procesów hosta.

$ top -b -n 1 | head -n 20
free -h

Sprawdza dostępną pamięć hosta.

$ free -h
df -h /

Sprawdza zajętość systemu plików.

$ df -h /
ip -s link show

Pokazuje liczniki ruchu i błędów interfejsów sieciowych.

$ ip -s link show
docker compose exec app-db psql -U orders -d orders -c 'SELECT count(*) FROM pg_stat_activity;'

Odczytuje liczbę bieżących połączeń PostgreSQL.

$ docker compose exec app-db psql -U orders -d orders -c 'SELECT count(*) FROM pg_stat_activity;'
histogram_quantile(0.95, sum by (le) (rate(http_request_duration_seconds_bucket[5m])))

Przykładowe zapytanie PromQL o p95 klasycznego histogramu żądań.

histogram_quantile(0.95, sum by (le) (rate(http_request_duration_seconds_bucket[5m])))

3. Zadanie praktyczne

Zaprojektuj dla orders-api trzy metryki: licznik wszystkich żądań, gauge zajętych połączeń bazy i histogram czasu odpowiedzi. Dopisz jednostki i okno czasu. Zinterpretuj sytuację: p50 = 100 ms, p95 = 800 ms, p99 = 2 s, a średnia = 180 ms. Wskaż, dlaczego sama średnia nie opisuje doświadczenia najwolniejszych żądań. Porównaj to z CPU, pamięcią, dyskiem, ruchem sieciowym i głębokością kolejki.

4. Typowe błędy

  • Używanie countera dla wartości, która może maleć.
  • Odczytywanie pojedynczego czasu curl jako p95 całej usługi.
  • Porównywanie percentyli bez wspólnego okna i liczby próbek.
  • Ignorowanie p99, bo średnia wygląda dobrze.
  • Mieszanie jednostek sekund i milisekund na jednym wykresie.

5. Podsumowanie

Counter liczy zdarzenia, gauge pokazuje zmienny stan, a histogram opisuje rozkład obserwacji. Percentyle odsłaniają wolny ogon odpowiedzi, którego średnia może nie pokazać. Zawsze podawaj jednostkę, okno czasu i liczbę próbek.

Flow nauki
  1. Teoria
  2. Przykład
  3. Ćwiczenie
  4. Quiz
  5. Praktyka
  6. Podsumowanie