Monitoraggio - AWS Linee guida prescrittive

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à.

Monitoraggio

Il monitoraggio è il processo di raccolta di diverse metriche, come CPU e memoria, e l'archiviazione in un database di serie temporali come Amazon Managed Service for Prometheus. Il sistema di monitoraggio può essere basato su push o pull. Nei sistemi basati su push, la fonte invia periodicamente le metriche al database delle serie temporali. Nei sistemi basati su pull, lo scraper raccoglie le metriche da varie fonti e le archivia nel database delle serie temporali. Gli sviluppatori possono analizzare le metriche, filtrarle e tracciarle nel tempo per visualizzare le prestazioni. L'implementazione corretta del monitoraggio può essere suddivisa in due grandi aree: applicazione e infrastruttura.

Per gli sviluppatori di applicazioni, le seguenti metriche sono fondamentali:

  • Latenza: il tempo impiegato per ricevere una risposta

  • Throughput delle richieste: il numero totale di richieste gestite al secondo

  • Tasso di errore delle richieste: il numero totale di errori

Acquisisci l'utilizzo delle risorse, la saturazione e il conteggio degli errori per ogni risorsa (ad esempio il contenitore dell'applicazione, il database) coinvolta nella transazione commerciale. Ad esempio, quando si monitora l'utilizzo della CPU, è possibile tenere traccia dell'utilizzo medio della CPU, del carico medio e del carico di picco durante l'esecuzione del test delle prestazioni. Quando una risorsa raggiunge la saturazione durante uno stress test, ma potrebbe non raggiungere la saturazione durante un'esecuzione delle prestazioni per un periodo di tempo più breve.

Metriche

Le applicazioni possono utilizzare diversi attuatori, come gli attuatori Spring Boot, per monitorare le proprie applicazioni. Queste librerie di livello di produzione generalmente espongono un endpoint REST per il monitoraggio delle informazioni sulle applicazioni in esecuzione. Le librerie possono monitorare l'infrastruttura sottostante, le piattaforme applicative e altre risorse. Se una qualsiasi delle metriche predefinite non soddisfa i requisiti, lo sviluppatore deve implementare metriche personalizzate. Le metriche personalizzate possono aiutare a tenere traccia degli indicatori chiave di prestazione (KPI) aziendali che non possono essere tracciati attraverso i dati delle implementazioni predefinite. Ad esempio, potresti voler tenere traccia di un'operazione aziendale come la latenza di integrazione delle API di terze parti o il numero totale di transazioni completate.

Cardinalità

La cardinalità si riferisce al numero di serie temporali uniche di una metrica. Le metriche sono etichettate per fornire informazioni aggiuntive. Ad esempio, un'applicazione basata su REST che tiene traccia del numero di richieste per una particolare API indica una cardinalità pari a 1. Se si aggiunge un'etichetta utente per identificare il numero di richieste per utente, la cardinalità aumenta proporzionalmente al numero di utenti. Aggiungendo etichette che creano cardinalità, puoi suddividere le metriche in base a vari gruppi. È importante utilizzare le etichette giuste per il caso d'uso corretto, perché la cardinalità aumenta il numero di serie di metriche nel database di monitoraggio delle serie temporali di backend.

Risoluzione

In una configurazione di monitoraggio tipica, l'applicazione di monitoraggio è configurata per acquisire periodicamente le metriche dall'applicazione. La periodicità dello scraping definisce la granularità dei dati di monitoraggio. Le metriche raccolte a intervalli più brevi tendono a fornire una visione più accurata delle prestazioni perché sono disponibili più punti dati. Tuttavia, il carico sul database delle serie temporali aumenta man mano che vengono archiviate più voci. In genere una granularità di 60 secondi è una risoluzione standard e 1 secondo è una risoluzione elevata.

DevOps squadra

Gli sviluppatori di applicazioni spesso chiedono agli DevOps ingegneri di configurare un ambiente di monitoraggio per visualizzare le metriche dell'infrastruttura e delle applicazioni. L' DevOps ingegnere deve configurare un ambiente scalabile e che supporti gli strumenti di visualizzazione dei dati utilizzati dallo sviluppatore dell'applicazione. Ciò comporta l'acquisizione dei dati di monitoraggio da diverse fonti e l'invio dei dati a un database centrale di serie temporali come Amazon Managed Service for Prometheus.

Backend di monitoraggio

Un servizio di backend di monitoraggio supporta la raccolta, l'archiviazione, l'interrogazione e la visualizzazione dei dati delle metriche. In genere si tratta di un database di serie temporali come Amazon Managed Service for Prometheus o InfluxDB. InfluxData Utilizzando un meccanismo di rilevamento dei servizi, il raccoglitore di monitoraggio può raccogliere metriche da diverse fonti e archiviarle. Durante i test delle prestazioni, è importante archiviare i dati delle metriche in modo che possano essere ricercati in un secondo momento. Ti consigliamo di salvare almeno 15 giorni di dati per le metriche. Tuttavia, l'archiviazione delle metriche per un periodo più lungo non aggiunge vantaggi significativi e comporta costi di archiviazione inutili. Poiché il test delle prestazioni può generare un grande volume di metriche, è importante che l'infrastruttura delle metriche sia scalabile e fornisca al contempo prestazioni di query rapide. Il servizio di backend di monitoraggio fornisce un linguaggio di interrogazione che può essere utilizzato per visualizzare i dati delle metriche.

Visualizzazione

Fornisci strumenti di visualizzazione in grado di visualizzare i dati dell'applicazione per fornire informazioni significative. L' DevOps ingegnere e lo sviluppatore dell'applicazione devono imparare il linguaggio di interrogazione per il backend di monitoraggio e lavorare a stretto contatto per generare un modello di dashboard che possa essere riutilizzato. Nelle dashboard, includi la latenza e gli errori, visualizzando allo stesso tempo l'utilizzo e la saturazione delle risorse nell'infrastruttura e nelle risorse applicative.

Automatizzazione dell'infrastruttura di monitoraggio

Analogamente alla registrazione, è importante automatizzare l'installazione e il funzionamento dell'infrastruttura di monitoraggio in modo da soddisfare i diversi requisiti delle diverse applicazioni. Utilizza gli strumenti IaC per fornire il backend dell'infrastruttura di monitoraggio. È quindi possibile effettuare il provisioning dell'infrastruttura di monitoraggio come servizio condiviso o come implementazione indipendente su misura per una particolare applicazione.

Utilizza le pipeline CD per automatizzare quanto segue:

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

  • Aggiorna la configurazione di monitoraggio per filtrare o aggregare le metriche.

  • Implementa i dashboard delle applicazioni.

Strumenti di monitoraggio

Amazon Managed Service for Prometheus è un servizio di monitoraggio compatibile con Prometheus per l'infrastruttura dei container e i parametri applicativi per i container che puoi utilizzare per monitorare in modo sicuro gli ambienti di container su larga scala. Per ulteriori informazioni, consulta il post del blog Getting Started with Amazon Managed Service for Prometheus.

Amazon CloudWatch offre il monitoraggio completo su. AWS CloudWatch supporta soluzioni AWS native e open source in modo che tu possa capire cosa sta succedendo nel tuo stack tecnologico in qualsiasi momento.

AWS Gli strumenti nativi includono quanto segue:

Amazon CloudWatch offre funzionalità appositamente progettate per casi d'uso specifici come il monitoraggio dei container tramite CloudWatch Container Insights. Queste funzionalità sono integrate in CloudWatch modo da poter configurare log, raccolta di metriche e monitoraggio.

Per le applicazioni e i microservizi containerizzati, utilizza Container Insights per raccogliere, aggregare e riepilogare metriche e log. Container Insights è disponibile per le piattaforme Amazon Elastic Container Service (Amazon ECS), Amazon Elastic Kubernetes Service (Amazon EKS) e Kubernetes su Amazon Elastic Compute Cloud (Amazon EC2). Container Insights raccoglie i dati sotto forma di eventi di registro delle prestazioni nel formato metrico incorporato. Queste voci degli eventi del registro delle prestazioni utilizzano uno schema JSON strutturato che supporta l'inserimento e l'archiviazione di dati ad alta cardinalità su larga scala.

Per informazioni sull'implementazione di Container Insights con Amazon EKS, consulta il post del blog Introduzione ad Amazon CloudWatch Container Insights per Amazon EKS Fargate using AWS Distro for. OpenTelemetry