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_ENVLivelli di log
Utilizzi livelli di log coerenti, così può regolare il livello di dettaglio e gli avvisi:
debug— diagnostica dettagliatainfo— eventi normaliwarn— problemi recuperabilierror— 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
- Strategie di monitoraggio delle pipeline
- Integrazione con servizi esterni
- Configurazione di notifiche e avvisi
- Logging strutturato e distributed tracing