0Pricing
CI/CD with GitHub Actions & DevOps Pipelines · Lekcja

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 CI/CD with GitHub Actions & DevOps Pipelines 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 CI/CD with GitHub Actions & DevOps Pipelines, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs CI/CD with GitHub Actions & DevOps Pipelines 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_ENV

Poziomy logowania

Należy stosować spójne poziomy logowania, aby dostosowywać szczegółowość logów i alerty:

  • debug — szczegółowa diagnostyka
  • info — zwykłe zdarzenia
  • warn — problemy możliwe do naprawienia
  • error — 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 CI/CD with GitHub Actions & DevOps Pipelines, przejdź na CoddyKit PRO. Kurs CI/CD with GitHub Actions & DevOps Pipelines 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 CI/CD with GitHub Actions & DevOps Pipelines 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ąć CI/CD with GitHub Actions & DevOps Pipelines?

Nie wymagamy żadnego doświadczenia. CI/CD with GitHub Actions & DevOps Pipelines 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 CI/CD with GitHub Actions & DevOps Pipelines?

Tak. Każda lekcja CI/CD with GitHub Actions & DevOps Pipelines 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

  1. Strategie monitorowania potoków
  2. Integracja z usługami zewnętrznymi
  3. Konfiguracja powiadomień i alertów
  4. Logowanie strukturalne i rozproszone śledzenie
← Powrót do CI/CD with GitHub Actions & DevOps Pipelines