Monitoring i utrzymanie Średnio zaawansowany 55 min

Obserwowalność: logi, metryki i ślady

Dobierzesz log, metrykę lub ślad do pytania diagnostycznego i połączysz je w jedną oś czasu.

Wróć do listy lekcji

1. Krótka teoria

Obserwowalność pomaga wywnioskować stan systemu z jego sygnałów. Log opisuje konkretne zdarzenie z czasem i kontekstem, metryka liczy lub mierzy zjawisko w czasie, a ślad pokazuje drogę pojedynczego żądania przez komponenty. Gdy rośnie liczba błędów HTTP, metryka pokazuje skalę i początek problemu; log wskazuje komunikat błędu; ślad może pokazać, że większość czasu zajęło zapytanie do app-db. Nie trzeba wdrażać pełnego systemu distributed tracing, aby zrozumieć tę różnicę. Przydatny jest wspólny czas, nazwa usługi, identyfikator żądania i wersja aplikacji. Bez zgodnych znaczników czasu łatwo połączyć niepowiązane zdarzenia. Najpierw określ pytanie: czy problem dotyczy wielu żądań, konkretnego użytkownika czy jednego zależnego serwisu. Potem wybierz sygnał. Nie zapisuj w logach tokenów, haseł ani danych osobowych. Kontroluj dostęp i retencję sygnałów, ponieważ także metadane diagnostyczne mogą być wrażliwe.

2. Przykłady komend

date --iso-8601=seconds

Zapisuje czas rozpoczęcia obserwacji z informacją o strefie.

$ date --iso-8601=seconds
curl -sS -o /dev/null -w '%{http_code} %{time_total} ' http://127.0.0.1:8000/health

Zbiera prosty wynik HTTP i czas żądania.

$ curl -sS -o /dev/null -w '%{http_code} %{time_total}
' http://127.0.0.1:8000/health
journalctl -u orders-api --since '10 minutes ago' --no-pager

Czyta zdarzenia usługi z tego samego okna czasu.

$ journalctl -u orders-api --since '10 minutes ago' --no-pager
docker compose logs --since 10m app-db

Porównuje logi kontenera bazy z logami aplikacji.

$ docker compose logs --since 10m app-db
grep 'orders-api' /var/log/nginx/error.log | tail -n 20

Szukając błędów proxy, łączy obserwacje z warstwy HTTP.

$ grep 'orders-api' /var/log/nginx/error.log | tail -n 20
systemctl status orders-api --no-pager

Dodaje stan procesu do pozostałych sygnałów.

$ systemctl status orders-api --no-pager

3. Zadanie praktyczne

Załóż, że orders-api zaczyna odpowiadać wolno po 14:00. Utwórz oś czasu z odczytu czasu HTTP, liczby błędów w krótkim oknie i logów aplikacji oraz app-db. Dla każdego sygnału zapisz, na jakie pytanie odpowiada. Zaproponuj identyfikator żądania, który łączyłby zdarzenia z kilku usług, bez logowania danych klienta.

4. Typowe błędy

  • Wyciąganie wniosku o skali awarii z pojedynczego logu.
  • Interpretowanie średniego czasu żądania jako przebiegu konkretnego requestu.
  • Porównywanie logów bez kontroli strefy czasu i okna zdarzenia.
  • Zapisywanie sekretów w danych diagnostycznych.
  • Uruchamianie skomplikowanego tracingu bez jasnego pytania operacyjnego.

5. Podsumowanie

Metryki pokazują skalę i trend, logi szczegóły zdarzeń, a ślady przebieg wybranego żądania. Wspólny czas, usługa i identyfikator pozwalają połączyć sygnały w diagnozę bez ujawniania poufnych danych.

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