Registrazione - AWS Guida prescrittiva

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Registrazione

La registrazione è il processo di conservazione dei dati sugli eventi che si verificano in un sistema. Il registro può includere problemi, errori o informazioni sull'operazione corrente. I log possono essere classificati in diversi tipi, come i seguenti:

  • Registro degli eventi

  • Registro del server

  • Registro di sistema

  • Registri di autorizzazione e accesso

  • Audit logs

Uno sviluppatore può cercare nei log codici o modelli di errore specifici, filtrarli in base a campi specifici o archiviarli in modo sicuro per analisi future. I log aiutano lo sviluppatore a eseguire l'analisi delle cause principali dei problemi di prestazioni e anche a correlare i componenti del sistema.

La creazione di una soluzione di registrazione efficace richiede uno stretto coordinamento tra i team dell'applicazione e dell'infrastruttura. I log delle applicazioni non sono utili a meno che non esista un'infrastruttura di registrazione scalabile che supporti casi d'uso come l'analisi, il filtraggio, il buffering e la correlazione dei log. I casi d'uso più comuni, come la generazione di un ID di correlazione, la registrazione del tempo di esecuzione per i metodi aziendali critici e la definizione dei modelli di registro, possono essere semplificati.

Team applicativo

Uno sviluppatore di applicazioni deve garantire che i log generati seguano le migliori pratiche di registrazione. Le migliori pratiche includono quanto segue:

  • Generazione di ID di correlazione per tenere traccia di richieste uniche

  • Registrazione del tempo impiegato dai metodi aziendali critici

  • Registrazione a un livello di registro appropriato

  • Condivisione di una libreria di registrazione comune

Quando progetti applicazioni che interagiscono con diversi microservizi, utilizza questi principi di progettazione della registrazione per semplificare il filtraggio e l'estrazione dei log sul backend.

Generazione di ID di correlazione per tenere traccia di richieste uniche

Quando l'applicazione riceve la richiesta, può verificare se un ID di correlazione è già presente nell'intestazione. Se non è presente un ID, l'applicazione deve generare un ID. Ad esempio, un Application Load Balancer aggiunge un'intestazione chiamata. X-Amzn-Trace-Id L'applicazione può utilizzare l'intestazione per correlare la richiesta proveniente dal load balancer all'applicazione. Allo stesso modo, l'applicazione dovrebbe iniettare traceId se chiama i microservizi dipendenti in modo che i log generati dai diversi componenti in un flusso di richieste siano correlati.

Registrazione del tempo impiegato dai metodi aziendali critici

Quando l'applicazione riceve una richiesta, interagisce con un componente diverso. L'applicazione deve registrare il tempo impiegato per i metodi aziendali critici secondo uno schema definito. Ciò può semplificare l'analisi dei log nel backend. Può anche aiutarti a generare informazioni utili dai log. È possibile utilizzare approcci come la programmazione orientata agli aspetti (AOP) per generare tali registri in modo da separare i problemi di registrazione dalla logica aziendale.

Registrazione a un livello di registro appropriato

L'applicazione dovrebbe scrivere registri che contengano una quantità utile di informazioni. Utilizzate i livelli di registro per classificare gli eventi in base alla loro gravità. Ad esempio, utilizzo WARNING e ERROR livelli per eventi importanti che richiedono un'indagine. Utilizza INFO e DEBUG per tracciamenti dettagliati ed eventi ad alto volume. Imposta i gestori di log per acquisire solo i livelli necessari per la produzione. Generare troppa registrazione a INFO livello di log non è utile e aumenta la pressione sull'infrastruttura di backend. DEBUGla registrazione può essere utile, ma deve essere usata con cautela. L'utilizzo DEBUG dei log può generare un grande volume di dati, quindi non è consigliato in ambienti di test delle prestazioni.

Condivisione di una libreria di registrazione comune

I team applicativi devono utilizzare una libreria di registrazione comune, ad esempio con uno schema di registrazione comune predefinito che gli sviluppatori possono utilizzare come dipendenze nel loro progetto. AWS SDK for Java

Team di infrastruttura

DevOps gli ingegneri possono ridurre gli sforzi utilizzando i seguenti principi di progettazione della registrazione durante il filtraggio e l'estrazione dei log sul backend. Il team dell'infrastruttura deve configurare e supportare le seguenti risorse.

Agente di registro

Un agente di registro (log shipper) è un programma che legge i log da una posizione e li invia a un'altra posizione. I log agent vengono utilizzati per leggere i file di registro memorizzati su un computer e caricare gli eventi di registro nel backend per la centralizzazione.

I log sono dati non strutturati che devono essere strutturati prima di poterli ricavare informazioni significative. Gli agenti di registro utilizzano i parser per leggere le istruzioni di registro ed estrarre i campi pertinenti come timestamp, livello di registro e nome del servizio, e strutturano tali dati in un formato JSON. Disporre di un log agent leggero all'edge è utile perché comporta un minore utilizzo delle risorse. Il log agent può inviare i dati direttamente al backend oppure può utilizzare un log forwarder intermedio che invia i dati al backend. L'uso di un log forwarder scarica il lavoro dagli agenti di registro all'origine.

Parser di log

Un parser di log converte i log non strutturati in log strutturati. I parser di log agent arricchiscono inoltre i log aggiungendo metadati. L'analisi dei dati può essere eseguita all'origine (fine dell'applicazione) o centralmente. Lo schema per la memorizzazione dei log deve essere estensibile in modo da poter aggiungere nuovi campi. Si consiglia di utilizzare formati di registro standard come JSON. Tuttavia, in alcuni casi, i log devono essere trasformati in formati JSON per una migliore ricerca. La scrittura dell'espressione parser corretta consente una trasformazione efficiente.

Registra il backend

Un servizio di backend per i registri raccoglie, inserisce e visualizza i dati di registro da varie fonti. L'agente di registro può scrivere direttamente sul backend o utilizzare un log forwarder intermedio. Durante i test delle prestazioni, assicurati di archiviare i log in modo che possano essere cercati in un secondo momento. Archivia i log nel backend separatamente per ogni applicazione. Ad esempio, utilizzate un indice dedicato per un'applicazione e utilizzate lo schema di indice per cercare i log distribuiti tra diverse applicazioni correlate. Consigliamo di salvare almeno 7 giorni di dati per la ricerca nei log. Tuttavia, l'archiviazione dei dati per un periodo più lungo può comportare costi di archiviazione non necessari. Poiché durante il test delle prestazioni viene generato un grande volume di log, è importante che l'infrastruttura di registrazione ridimensioni e dimensioni correttamente il backend di registrazione.

Visualizzazione dei log

Per ottenere informazioni significative e utilizzabili dai log delle applicazioni, utilizzate strumenti di visualizzazione dedicati per elaborare e trasformare i dati di registro non elaborati in rappresentazioni grafiche. Visualizzazioni come diagrammi, grafici e dashboard possono aiutare a scoprire tendenze, modelli e anomalie che potrebbero non essere immediatamente evidenti quando si esaminano i log non elaborati.

I vantaggi principali dell'utilizzo degli strumenti di visualizzazione includono la capacità di correlare i dati su più sistemi e applicazioni per identificare dipendenze e colli di bottiglia. I dashboard interattivi supportano l'analisi approfondita dei dati a diversi livelli di granularità per risolvere problemi o individuare tendenze di utilizzo. Le piattaforme specializzate di visualizzazione dei dati forniscono funzionalità come analisi, avvisi e condivisione dei dati che possono migliorare il monitoraggio e l'analisi.

Sfruttando la potenza della visualizzazione dei dati nei registri delle applicazioni, i team di sviluppo e operativi possono ottenere visibilità sulle prestazioni del sistema e delle applicazioni. Le informazioni ottenute possono essere utilizzate per una varietà di scopi, tra cui l'ottimizzazione dell'efficienza, il miglioramento dell'esperienza utente, il miglioramento della sicurezza e la pianificazione della capacità. Il risultato finale sono dashboard personalizzati per le varie parti interessate, che forniscono at-a-glance visualizzazioni che riassumono i dati di registro in informazioni utili e approfondite.

Automatizzazione dell'infrastruttura di registrazione

Poiché applicazioni diverse hanno requisiti diversi, è importante automatizzare l'installazione e le operazioni dell'infrastruttura di registrazione. Utilizza gli strumenti Infrastructure as Code (IaC) per fornire il backend dell'infrastruttura di registrazione. È quindi possibile effettuare il provisioning dell'infrastruttura di registrazione come servizio condiviso o come implementazione indipendente su misura per una particolare applicazione.

Consigliamo agli sviluppatori di utilizzare pipeline di distribuzione continua (CD) per automatizzare quanto segue:

  • Implementa l'infrastruttura di registrazione su richiesta e smontala quando non è necessaria.

  • Implementa agenti di registro su destinazioni diverse.

  • Implementa configurazioni di log parser e forwarder.

  • Implementa i dashboard delle applicazioni.

Strumenti di registrazione

AWS fornisce servizi nativi di registrazione, allarme e dashboard. Le seguenti sono le risorse più diffuse per Servizi AWS la registrazione: