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

Logging strutturato e distributed tracing

Renda osservabili i deployment con log strutturati, ID di correlazione e distributed tracing, così potrà eseguire il debug dei guasti tra i servizi della pipeline CI/CD.

Logging strutturato e distributed tracing è una lezione CI/CD with GitHub Actions & DevOps Pipelines gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento CI/CD with GitHub Actions & DevOps Pipelines, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso CI/CD with GitHub Actions & DevOps Pipelines include 4 lezioni in totale.

I tre pilastri dell'osservabilità

L'osservabilità si basa su tre pilastri: metriche, log e tracce.

  • Le metriche indicano che c'è un problema
  • I log indicano che cosa è successo
  • Le tracce indicano dove è successo all'interno del flusso di una richiesta

Il monitoraggio della pipeline inizia solitamente dalle metriche; questa lezione approfondisce log e tracce.

Perché usare il logging strutturato

Una riga di log in testo semplice è difficile da interrogare. Un log strutturato è un record leggibile dalle macchine, solitamente in formato JSON, con campi denominati.

I log strutturati possono essere filtrati, aggregati e utilizzati per generare avvisi da strumenti come Loki, Elasticsearch o Datadog.

Testo semplice e strutturato

Confronti una riga non strutturata con una strutturata. La versione strutturata consente di interrogare direttamente status=500.

// Unstructured
Deploy failed for service api at 12:01

// Structured (JSON)
{"level":"error","event":"deploy_failed","service":"api","status":500}

Generare log JSON

La maggior parte dei linguaggi dispone di un logger strutturato. L'idea fondamentale è registrare un oggetto, non una stringa concatenata.

const log = (level, event, fields) =>
  console.log(JSON.stringify({ level, event, ...fields }));
log('info', 'deploy_started', { service: 'api', version: '1.4.2' });

ID di correlazione

Una singola operazione di deploy coinvolge molti step e servizi. Un ID di correlazione, o ID di trace, è un valore univoco associato a ogni riga di log relativa a una stessa operazione logica.

Cercando questo ID è possibile ricostruire l'intera sequenza tra i diversi componenti.

  - name: Set correlation id
    run: echo "TRACE_ID=$(uuidgen)" >> $GITHUB_ENV

Livelli di log

Utilizzi livelli di log coerenti, così può regolare il livello di dettaglio e gli avvisi:

  • debug — diagnostica dettagliata
  • info — eventi normali
  • warn — problemi recuperabili
  • error — errori che richiedono attenzione

Generi avvisi per error, campioni info e mantenga debug disattivato in produzione.

Che cos'è il tracing distribuito

Il tracing distribuito segue una richiesta mentre attraversa diversi servizi. Ogni passaggio è uno span; gli span si collegano in una trace.

Una trace mostra la sequenza temporale e indica quale span è stato lento o ha prodotto un errore, un'informazione preziosa nelle distribuzioni basate su microservizi.

OpenTelemetry

OpenTelemetry (OTel) è lo standard indipendente dal fornitore per generare tracce, metriche e log.

Strumentalizzi l'app con l'SDK OTel ed esporti i dati verso un backend come Jaeger, Tempo o un APM cloud.

import { trace } from '@opentelemetry/api';
const tracer = trace.getTracer('deploy-service');
const span = tracer.startSpan('deploy');
// ... do work
span.end();

Tracciare la pipeline stessa

È possibile tracciare non solo l'app, ma anche la pipeline. Gli strumenti generano uno span per ogni job e step, così è possibile vedere quale fase della CI/CD costituisce il collo di bottiglia.

In questo modo un workflow lungo diventa una rappresentazione visiva a cascata del tempo impiegato.

Aggregazione centralizzata

Invii i log e le tracce di ogni job e servizio a una piattaforma centrale. I runner CI sono effimeri, quindi i log lasciati sul runner scompaiono al termine dell'esecuzione.

Inoltri i dati a un sistema di raccolta dei log durante l'esecuzione, così sarà possibile effettuare analisi post-mortem anche dopo la rimozione del runner.

Dal segnale all'azione

L'osservabilità è utile solo se porta all'azione. Crei dashboard che mettano in evidenza i tassi di errore e le tracce lente, quindi colleghi i pattern critici agli avvisi già configurati.

L'obiettivo è passare da un singolo avviso direttamente alla trace e alla riga di log strutturata che lo spiega.

Verifica rapida

Verifichi la propria comprensione di log e tracce.

Riepilogo

Ha approfondito l'osservabilità con log e tracce.

  • Generi log strutturati (JSON) con livelli coerenti
  • Associ ID di correlazione per seguire una singola operazione
  • Utilizzi il tracing distribuito e OpenTelemetry per individuare gli span lenti o che hanno prodotto errori
  • Aggrеghi tutto centralmente prima che i runner effimeri scompaiano

Questo completa metriche e avvisi, offrendo un quadro completo dell'osservabilità della pipeline.

Domande Frequenti

La lezione «Logging strutturato e distributed tracing» è gratuita?

Sì — il testo completo di «Logging strutturato e distributed tracing» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso CI/CD with GitHub Actions & DevOps Pipelines, passa a CoddyKit PRO. Il corso CI/CD with GitHub Actions & DevOps Pipelines include 4 lezioni in totale.

Cosa imparerò in «Logging strutturato e distributed tracing»?

Renda osservabili i deployment con log strutturati, ID di correlazione e distributed tracing, così potrà eseguire il debug dei guasti tra i servizi della pipeline CI/CD. Eserciti CI/CD with GitHub Actions & DevOps Pipelines con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare CI/CD with GitHub Actions & DevOps Pipelines?

Non è richiesta alcuna esperienza precedente. CI/CD with GitHub Actions & DevOps Pipelines su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «Logging strutturato e distributed tracing»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione CI/CD with GitHub Actions & DevOps Pipelines?

Sì. Ogni lezione CI/CD with GitHub Actions & DevOps Pipelines include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Strategie di monitoraggio delle pipeline
  2. Integrazione con servizi esterni
  3. Configurazione di notifiche e avvisi
  4. Logging strutturato e distributed tracing
← Torna a CI/CD with GitHub Actions & DevOps Pipelines