Logowanie strukturalne i rozproszone śledzenie
Zapewnij obserwowalność wdrożeń dzięki logom strukturalnym, identyfikatorom korelacji i rozproszonemu śledzeniu, aby diagnozować błędy między usługami w potoku CI/CD.
Logowanie strukturalne i rozproszone śledzenie to bezpłatna lekcja DevOps Bootcamp na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej DevOps Bootcamp, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.
Trzy filary obserwowalności
Obserwowalność opiera się na trzech filarach: metrykach, logach i śladach.
- Metryki informują, że coś jest nie tak
- Logi informują, co się wydarzyło
- Ślady informują, gdzie w przepływie żądania do tego doszło
Monitorowanie potoku zwykle zaczyna się od metryk; ta lekcja pogłębia temat logów i śladów.
Dlaczego logowanie strukturalne
Zwykły wiersz logu trudno przeszukiwać. Log strukturalny to rekord możliwy do odczytu maszynowego, zwykle w formacie JSON, zawierający nazwane pola.
Logi strukturalne można filtrować, agregować i wykorzystywać do generowania alertów za pomocą narzędzi takich jak Loki, Elasticsearch czy Datadog.
Niestrukturyzowane a strukturalne
Proszę porównać wiersz niestrukturyzowany z wierszem strukturalnym. Wersja strukturalna pozwala bezpośrednio wyszukiwać status=500.
// Unstructured
Deploy failed for service api at 12:01
// Structured (JSON)
{"level":"error","event":"deploy_failed","service":"api","status":500}Generowanie logów JSON
Większość języków oferuje logger obsługujący logowanie strukturalne. Kluczowa zasada polega na rejestrowaniu obiektu, a nie skonkatenowanego ciągu znaków.
const log = (level, event, fields) =>
console.log(JSON.stringify({ level, event, ...fields }));
log('info', 'deploy_started', { service: 'api', version: '1.4.2' });Identyfikatory korelacji
Pojedyncze wdrożenie obejmuje wiele kroków i usług. Identyfikator korelacji (lub identyfikator śladu) to unikalna wartość dołączana do każdego wiersza logu dotyczącego jednej operacji logicznej.
Wyszukanie tego identyfikatora pozwala odtworzyć pełny przebieg działania we wszystkich komponentach.
- name: Set correlation id
run: echo "TRACE_ID=$(uuidgen)" >> $GITHUB_ENVPoziomy logowania
Należy stosować spójne poziomy logowania, aby dostosowywać szczegółowość logów i alerty:
debug— szczegółowa diagnostykainfo— zwykłe zdarzeniawarn— problemy możliwe do naprawieniaerror— błędy wymagające uwagi
Alerty należy konfigurować dla error, próbkować info, a debug wyłączyć w środowisku produkcyjnym.
Czym jest śledzenie rozproszone
Śledzenie rozproszone śledzi żądanie przechodzące przez wiele usług. Każdy krok to span, a spany łączą się w ślad.
Ślad pokazuje oś czasu oraz to, który span trwał długo lub zakończył się błędem, co jest nieocenione w przypadku wdrożeń opartych na mikrousługach.
OpenTelemetry
OpenTelemetry (OTel) to niezależny od dostawcy standard generowania śladów, metryk i logów.
Należy dodać instrumentację do aplikacji za pomocą SDK OTel i eksportować dane do backendu takiego jak Jaeger, Tempo lub chmurowy system APM.
import { trace } from '@opentelemetry/api';
const tracer = trace.getTracer('deploy-service');
const span = tracer.startSpan('deploy');
// ... do work
span.end();Śledzenie samego potoku
Można śledzić nie tylko aplikację, lecz także potok. Narzędzia emitują jeden span dla każdego zadania i kroku, dzięki czemu można zobaczyć, który etap CI/CD stanowi wąskie gardło.
W ten sposób długi przepływ pracy zmienia się w wizualny wykres wodospadowy pokazujący, gdzie upływa czas.
Centralna agregacja
Logi i ślady ze wszystkich zadań i usług należy przesyłać na centralną platformę. Runnery CI są efemeryczne, dlatego logi pozostawione na runnerze znikają po zakończeniu uruchomienia.
Podczas uruchomienia należy przekazywać je do systemu zbierającego logi, aby możliwe było przeprowadzenie analizy po awarii, gdy runner już zniknie.
Od sygnału do działania
Obserwowalność jest użyteczna tylko wtedy, gdy prowadzi do działania. Należy budować pulpity pokazujące wskaźniki błędów i wolne ślady oraz powiązać krytyczne wzorce z już skonfigurowanymi alertami.
Celem jest możliwość przejścia z pojedynczego alertu bezpośrednio do śladu i wiersza logu strukturalnego, który wyjaśnia problem.
Szybki test
Proszę sprawdzić, czy rozumieją Państwo logi i ślady.
Podsumowanie
Pogłębili Państwo obserwowalność za pomocą logów i śladów.
- Należy generować logi strukturalne (JSON) ze spójnymi poziomami
- Do śledzenia jednej operacji należy dołączać identyfikatory korelacji
- Należy używać śledzenia rozproszonego i OpenTelemetry do znajdowania wolnych lub kończących się błędem spanów
- Wszystko należy agregować centralnie, zanim efemeryczne runnery znikną
Uzupełnia to metryki i alerty, zapewniając pełną obserwowalność potoku.
Często zadawane pytania
Czy lekcja „Logowanie strukturalne i rozproszone śledzenie” jest bezpłatna?
Tak — pełny tekst „Logowanie strukturalne i rozproszone śledzenie” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu DevOps Bootcamp, przejdź na CoddyKit PRO. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.
Co nauczysz się w „Logowanie strukturalne i rozproszone śledzenie”?
Zapewnij obserwowalność wdrożeń dzięki logom strukturalnym, identyfikatorom korelacji i rozproszonemu śledzeniu, aby diagnozować błędy między usługami w potoku CI/CD. Ćwiczysz DevOps Bootcamp z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć DevOps Bootcamp?
Nie wymagamy żadnego doświadczenia. DevOps Bootcamp w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Logowanie strukturalne i rozproszone śledzenie”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji DevOps Bootcamp?
Tak. Każda lekcja DevOps Bootcamp zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Strategie monitorowania potoków
- Integracja z usługami zewnętrznymi
- Konfiguracja powiadomień i alertów
- Logowanie strukturalne i rozproszone śledzenie