Elastic Beanstalk ha migliorato la reportistica e il monitoraggio dello stato - AWS Elastic Beanstalk

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

Elastic Beanstalk ha migliorato la reportistica e il monitoraggio dello stato

Questa sezione spiega la funzionalità della funzione Elastic Beanstalk Enhanced Health.

La reportistica avanzata sullo stato di salute è una funzionalità che è possibile abilitare nell'ambiente AWS Elastic Beanstalk per consentire la raccolta di informazioni aggiuntive sulle risorse presenti nell'ambiente. Elastic Beanstalk analizza le informazioni raccolte per offrire un quadro più chiaro dello stato dell'intero ambiente e per facilitare l'identificazione di problemi che possono causare la non disponibilità della tua applicazione.

Oltre alle modifiche sul funzionamento dei colori di stato, il report migliorato aggiunge un descrittore dello stato che offre un'indicazione della gravità dei problemi osservati quando un ambiente è giallo o rosso. Quando sono disponibili ulteriori informazioni sullo stato attuale, puoi scegliere il pulsante Causes (Cause) per visualizzare informazioni dettagliate nella pagina di stato.

Per fornire informazioni dettagliate sullo stato EC2 delle istanze Amazon in esecuzione nel tuo ambiente, Elastic Beanstalk include un agente sanitario in Amazon Machine AMI Image () per ogni versione della piattaforma che supporta l'integrità avanzata. L'agente di stato monitora i log del server Web e i parametri di sistema e li trasferisce al servizio Elastic Beanstalk. Elastic Beanstalk analizza queste metriche e i dati di Elastic Load Balancing e EC2 Amazon Auto Scaling per fornire un quadro generale dello stato di salute di un ambiente.

Oltre a raccogliere e a presentare le informazioni relative alle risorse del tuo ambiente, Elastic Beanstalk monitora le risorse nell'ambiente per diverse condizioni di errore e fornisce notifiche per aiutarti a evitare guasti e a risolvere i problemi di configurazione. Tra i fattori che influenzano la stato del tuo ambiente vi sono anche i risultati di ogni richiesta servita dalla tua applicazione, i parametri del sistema operativo delle tue istanze e lo stato delle distribuzioni più recenti.

Puoi visualizzare lo stato di salute in tempo reale utilizzando la pagina di panoramica dell'ambiente della console Elastic Beanstalk o il comando eb health nell'interfaccia a riga di comando (EB) di Elastic Beanstalk. CLI Per registrare e monitorare lo stato dell'ambiente e dell'istanza nel tempo, puoi configurare il tuo ambiente in modo da pubblicare le informazioni raccolte da Elastic Beanstalk per una migliore reportistica sullo stato di salute su Amazon come metriche personalizzate. CloudWatch CloudWatch i costi per le metriche personalizzate si applicano a tutte le metriche diverse daEnvironmentHealth, che sono gratuite.

Note sulla piattaforma Windows

Quando abiliti la segnalazione avanzata dello stato di salute in un ambiente Windows Server, non modificare la configurazione di IISregistrazione. Affinché il monitoraggio avanzato dello stato funzioni correttamente, IIS la registrazione deve essere configurata con il formato W3C e solo l'ETWevento o sia il file di registro che le destinazioni degli eventi del registro ETW eventi.

Inoltre, non disabilitare né arrestare il servizio Windows agente di stato Elastic Beanstalk su qualsiasi istanza dell'ambiente. Per raccogliere e segnalare informazioni di stato avanzate su un'istanza, questo servizio deve essere abilitato e in esecuzione.

La prima volta che crei un ambiente, Elastic Beanstalk ti chiede di creare i ruoli richiesti e abilita la reportistica sanitaria avanzata per impostazione predefinita. Continua a leggere i dettagli sul funzionamento del reporting dell'integrità avanzato oppure consulta Abilitazione del reporting dello stato avanzato Elastic Beanstalk per iniziare a usarlo.

Agente di stato Elastic Beanstalk

L'agente sanitario di Elastic Beanstalk è un processo (o servizio, in ambienti Windows) daemon che viene eseguito su ogni istanza EC2 Amazon del tuo ambiente, monitora i parametri di salute del sistema operativo e delle applicazioni e segnala i problemi a Elastic Beanstalk. L'agente di stato è incluso in tutte le versioni della piattaforma a partire dalla versione 2.0 di ciascuna piattaforma.

L'agente sanitario riporta parametri simili a quelli pubblicati CloudWatch da Amazon EC2 Auto Scaling ed Elastic Load Balancing come parte dei report di base sullo statoCPU, inclusi HTTP carico, codici e latenza. L'agente di stato, tuttavia, comunica direttamente a Elastic Beanstalk, con maggiore granularità e frequenza rispetto al reporting dello stato di base.

Per lo stato di base, questi parametri vengono pubblicati ogni cinque minuti e possono essere monitorati con grafici nella console di gestione dell'ambiente. Con stato avanzato, l'agente di stato Elastic Beanstalk segnala i parametri in Elastic Beanstalk ogni 10 secondi. Elastic Beanstalk utilizza i parametri forniti dall'agente di stato per verificare lo stato di ogni istanza nell'ambiente e, insieme ad altri fattori, per stabilire lo stato di integrità generale dell'ambiente.

Lo stato generale dell'ambiente può essere visualizzato in tempo reale nella pagina di panoramica dell'ambiente della console Elastic Beanstalk e viene pubblicato CloudWatch da Elastic Beanstalk ogni 60 secondi. È possibile visualizzare le metriche dettagliate riportate dall'agente sanitario in tempo reale con il comando nell'EB. eb healthCLI

A un costo aggiuntivo, puoi scegliere di pubblicare metriche a livello di istanza e ambiente ogni 60 secondi. CloudWatch Le metriche pubblicate su CloudWatch possono quindi essere utilizzate per creare grafici di monitoraggio nella console di gestione dell'ambiente.

La rendicontazione sanitaria avanzata comporta un costo solo se si sceglie di pubblicare metriche sanitarie avanzate su. CloudWatch Quando utilizzi lo stato di reporting migliorato,puoi comunque pubblicare i parametri dello stato di base gratuitamente, anche se non scegli di pubblicare i parametri avanzati.

Consulta Parametri dell'istanza per dettagli sui parametri riportati dall'agente dello stato. Per informazioni dettagliate sulla pubblicazione di metriche sanitarie avanzate su, consulta. CloudWatch Pubblicazione dei parametri personalizzati di Amazon CloudWatch per un ambiente

Fattori che determinano lo stato delle istanze e dell'ambiente

Oltre ai controlli di sistema del reporting dell'integrità di base, incluso Controlli dello stato di Elastic Load Balancing e il monitoraggio delle risorse, il reporting dell'integrità avanzato di Elastic Beanstalk raccoglie dati aggiuntivi sullo stato delle istanze nel tuo ambiente, inclusi i parametri del sistema operativo, i log del server e lo stato delle operazioni dell'ambiente in corso, come distribuzioni e aggiornamenti. Il servizio di reporting dello stato di Elastic Beanstalk abbina informazioni provenienti da tutte le origini disponibili e le analizza per stabilire lo stato generale dell'ambiente.

Operazioni e comandi

Quando esegui un'operazione nel tuo ambiente, come la distribuzione di una nuova versione di un'applicazione, Elastic Beanstalk esegue diverse modifiche che influenzano lo stato di integrità dell'ambiente.

Ad esempio, quando si distribuisce una nuova versione di un'applicazione in un ambiente che esegue più istanze, è possibile che vengano visualizzati messaggi simili ai seguenti durante il monitoraggio dello stato dell'ambiente con l'EB. CLI

id status cause Overall Info Command is executing on 3 out of 5 instances i-bb65c145 Pending 91 % of CPU is in use. 24 % in I/O wait Performing application deployment (running for 31 seconds) i-ba65c144 Pending Performing initialization (running for 12 seconds) i-f6a2d525 Ok Application deployment completed 23 seconds ago and took 26 seconds i-e8a2d53b Pending 94 % of CPU is in use. 52 % in I/O wait Performing application deployment (running for 33 seconds) i-e81cca40 Ok

In questo esempio, lo stato generale dell'ambiente è Ok e la causa di questo stato è che il comando è in esecuzione su 3 delle 5 istanze. Tre delle istanze nell'ambiente presentano lo stato In attesa, che indica che un'operazione è in corso.

Quando l'operazione viene completata, Elastic Beanstalk comunica ulteriori informazioni sull'operazione. Ad esempio, Elastic Beanstalk visualizza le seguenti informazioni su un'istanza che è già stata aggiornata con la nuova versione dell'applicazione:

i-f6a2d525 Ok Application deployment completed 23 seconds ago and took 26 seconds

Nelle informazioni sullo stato dell'istanza sono inclusi inoltre dettagli sulla distribuzione più recente a ogni istanza nel tuo ambiente. Ogni istanza presenta un ID della distribuzione e lo stato. L'ID della distribuzione è un numero intero che aumenta di uno ogni volta che distribuisci una nuova versione dell'applicazione o modifichi le impostazioni per le opzioni di configurazione dell'istanza, ad esempio le variabili di ambiente. È possibile utilizzare le informazioni di distribuzione per identificare le istanze che eseguono la versione errata dell'applicazione dopo una distribuzione in sequenza non riuscita.

Nella colonna relativa alle cause, Elastic Beanstalk include messaggi informativi sulle operazioni riuscite e su altri stati rilevati in molteplici controlli dello stato, ma che non persistono a tempo indeterminato. Le cause relative a stati di ambienti non integri persistono finché l'ambiente ritorna a uno stato di integrità.

Timeout del comando

Elastic Beanstalk applica un timeout di comando dal momento in cui viene avviata un'operazione per consentire a un'istanza di passare a uno stato di integrità. Questo comando di timeout è impostato nella configurazione di distribuzione e aggiornamento del tuo ambiente (nel namespace aws:elasticbeanstalk:command) e l'impostazione predefinita è su 10 minuti.

Durante gli aggiornamenti in sequenza, Elastic Beanstalk applica un timeout separato per ogni batch nell'operazione. Questo timeout è impostato come parte della configurazione dell'aggiornamento in sequenza dell'ambiente (nello spazio dei nomi aws:autoscaling:updatepolicy:rollingupdate). Se tutte le istanze nel batch sono integre nel periodo di aggiornamento continuo, l'operazione prosegue con il batch successivo. In caso contrario, l'operazione ha esito negativo.

Nota

Se l'applicazione non supera i controlli dello stato con uno stato OK, ma è stabile a un livello diverso, puoi impostare l'opzione HealthCheckSuccessThreshold nel aws:elasticbeanstalk:command namespace per cambiare il livello a cui Elastic Beanstalk considera un'istanza integra.

Affinché un ambiente server Web sia considerato integro, ogni istanza nell'ambiente o batch deve passare 12 controlli dello stato consecutivi nel corso di due minuti. Per un ambiente con piano lavoratore, ogni istanza deve superare 18 controlli dello stato. Prima della scadenza del comando, Elastic Beanstalk non riduce lo stato di integrità di un ambiente quando i controlli dello stato non vanno a buon fine. Se le istanze nell'ambiente diventano integre entro il timeout del comando, l'operazione va a buon fine.

HTTPrichieste

Quando non è in corso un'operazione su un ambiente, l'origine principale di informazioni sull'istanza e sullo stato dell'ambiente è il log del server Web per ogni istanza. Per stabilire lo stato di un'istanza e lo stato generale dell'ambiente, Elastic Beanstalk considera il numero di richieste, il risultato di ogni richiesta e la velocità con cui ogni richiesta è stata risolta.

Sulle piattaforme basate su Linux, Elastic Beanstalk legge e analizza i log dei server Web per ottenere informazioni sulle richieste. HTTP Sulla piattaforma Windows Server, Elastic Beanstalk riceve queste informazioni direttamente dal server Web. IIS

L'ambiente potrebbe non disporre di un server Web attivo. Ad esempio, la piattaforma Docker multicontainer non include un server Web. Altre piattaforme includono un server Web e l'applicazione potrebbe disabilitarlo. In questi casi, l'ambiente richiede una configurazione aggiuntiva per fornire all'agente di stato Elastic Beanstalk i log nel formato necessario per inoltrare le informazioni sullo stato al servizio Elastic Beanstalk. Per informazioni dettagliate, consulta Formato dei log dello stato migliorato.

Parametri del sistema operativo

Elastic Beanstalk monitora i parametri del sistema operativo riportati dall'agente di stato per identificare le istanze che sono sempre basse in termini di risorse di sistema.

Consulta Parametri dell'istanza per dettagli sui parametri riportati dall'agente dello stato.

Personalizzazione delle regole di controllo dello stato

Il reporting dello stato avanzato Elastic Beanstalk si basa su un set di regole per determinare lo stato dell'ambiente. Alcune di queste regole potrebbero non essere idonee per la tua applicazione specifica. Un caso comune è rappresentato da un'applicazione che restituisce errori HTTP 4xx frequenti in base alla progettazione. Utilizzando una delle sue proprie regole predefinite, Elastic Beanstalk conclude che qualcosa non funziona e modifica lo stato dell'ambiente da OK a Warning (Avviso), Degraded (Degradato) o Severe (Grave), a seconda della percentuale di errori. Per gestire correttamente questo caso, Elastic Beanstalk consente di configurare questa regola e ignorare gli errori 4xx dell'applicazione. HTTP Per informazioni dettagliate, consulta Configurazione delle regole dello stato migliorato per un ambiente.

Ruoli dello stato migliorato

Il reporting dello stato avanzato richiede due ruoli: un ruolo di servizio per Elastic Beanstalk e un profilo dell'istanza per l'ambiente. Il ruolo di servizio consente a Elastic Beanstalk di interagire AWS con altri servizi per conto dell'utente per raccogliere informazioni sulle risorse presenti nell'ambiente. Il profilo dell'istanza consente alle istanze dell'ambiente di scrivere i log su Amazon S3 e di comunicare al servizio Elastic Beanstalk informazioni avanzate sullo stato.

Quando crei un ambiente Elastic Beanstalk utilizzando la console Elastic Beanstalk o CLI EB, Elastic Beanstalk crea un ruolo di servizio predefinito e associa le politiche gestite richieste a un profilo di istanza predefinito per il tuo ambiente.

Se si utilizza ilAPI, an o the AWS CLI per creare ambientiSDK, è necessario creare questi ruoli in anticipo e specificarli durante la creazione dell'ambiente per utilizzare una funzionalità migliorata. Per le istruzioni su come creare ruoli appropriati per i tuoi ambienti, consulta Ruoli, profili di istanza e policy utente di Elastic Beanstalk Service.

Si consiglia di utilizzare policy gestite per il profilo dell'istanza e il ruolo di servizio. Le policy gestite sono AWS Identity and Access Management (IAM) policy gestite da Elastic Beanstalk. L'utilizzo di policy gestite garantisce che l'ambiente disponga di tutte le autorizzazioni necessarie per il corretto funzionamento.

Per il profilo dell'istanza, è possibile utilizzare la policy gestita AWSElasticBeanstalkWebTier o AWSElasticBeanstalkWorkerTier, rispettivamente per un ambiente di livello server Web o di livello worker. Per informazioni dettagliate su queste due policy gestite del profilo dell'istanza, consulta Gestione dei profili dell'istanza Elastic Beanstalk.

Autorizzazione stato avanzata

Le policy gestite dal profilo dell'istanza Elastic Beanstalk contengono l'autorizzazione per l'operazione elasticbeanstalk:PutInstanceStatistics. Questa azione non fa parte di Elastic Beanstalk. API Fa parte di un ambiente diverso API che le istanze di ambiente utilizzano internamente per comunicare informazioni sanitarie avanzate al servizio Elastic Beanstalk. Non lo chiami direttamente. API

Quando si crea un nuovo ambiente, l'autorizzazione per l'operazione elasticbeanstalk:PutInstanceStatistics è abilitata per impostazione predefinita. Per aumentare la sicurezza dell'ambiente e prevenire lo spoofing dei dati relativi all'integrità per conto dell'utente, è consigliabile tenere abilitata l'autorizzazione per questa operazione. Se utilizzi policy gestite per il profilo dell'istanza, questa caratteristica sarà disponibile per il nuovo ambiente senza ulteriori configurazioni. Tuttavia, se utilizzi un profilo dell'istanza personalizzato anziché una policy gestita, l'ambiente potrebbe mostrare lo stato di integrità No Data (Nessun dato). Ciò si verifica perché le istanze non sono autorizzate per l'operazione che comunica i dati dello stato avanzati al servizio.

Per autorizzare l'operazione, includere la seguente istruzione nel profilo dell'istanza.

{ "Sid": "ElasticBeanstalkHealthAccess", "Action": [ "elasticbeanstalk:PutInstanceStatistics" ], "Effect": "Allow", "Resource": [ "arn:aws:elasticbeanstalk:*:*:application/*", "arn:aws:elasticbeanstalk:*:*:environment/*" ] }

Se al momento non si desidera utilizzare l'autorizzazione di integrità avanzata, disabilitarla impostando l'opzione EnhancedHealthAuthEnabled nello spazio dei nomi aws:elasticbeanstalk:healthreporting:system su false. Se questa opzione è disabilitata, le autorizzazioni descritte in precedenza non sono necessarie. È possibile rimuoverle dal profilo dell'istanza per l'accesso con privilegi minimi alle applicazioni e agli ambienti.

Nota

In precedenza, l'impostazione predefinita per EnhancedHealthAuthEnabled era false, che ha avuto come risultato l'autorizzazione per l'operazione elasticbeanstalk:PutInstanceStatistics. Questa operazione è disabilitata per impostazione predefinita. Per abilitare questa operazione per un ambiente esistente, imposta l'opzione EnhancedHealthAuthEnabled nello spazio dei nomi aws:elasticbeanstalk:healthreporting:system su true. È possibile configurare questa opzione utilizzando un'impostazione di opzione in un file di configurazione.

Eventi dello stato migliorato

Il sistema dello stato migliorato genera eventi quando un ambiente è in transito tra stati diversi. L'esempio seguente mostra gli eventi generati da un ambiente di transizione tra Info, OK e stati gravi:

La pagina panoramica dell'ambiente Elastic Beanstalk della console Elastic Beanstalk che mostra eventi recenti sullo stato avanzato

Quando la transizione è verso uno stato peggiore, l'evento dello stato migliorato include un messaggio che indica la causa della transizione.

Non tutte le modifiche di stato a livello di istanza comportano la generazione di un evento da parte di Elastic Beanstalk. Per prevenire falsi allarmi, Elastic Beanstalk genera un evento correlato allo stato solo nel caso in cui un problema persiste in più controlli.

Le informazioni sullo stato dell'ambiente in tempo reale, tra cui stato, colore e causa, sono disponibili nella pagina di panoramica dell'ambiente della console Elastic Beanstalk e dell'EB. CLI Collegando l'EB CLI all'ambiente ed eseguendo il eb healthcomando, puoi anche visualizzare gli stati in tempo reale di ciascuna istanza del tuo ambiente.

Comportamento del reporting dello stato migliorato durante aggiornamenti, distribuzioni e dimensionamento

L'abilitazione del reporting dello stato migliorato può influire sul modo in cui l'ambiente si comporta durante gli aggiornamenti di configurazione e le distribuzioni. Elastic Beanstalk non completerà un batch di aggiornamenti finché tutte le istanze non superano i controlli di stato in modo coerente. Inoltre, poiché la rendicontazione sanitaria avanzata applica uno standard più elevato in materia di salute e monitora più fattori, le istanze che superano il controllo dello stato di salute di base non saranno necessariamente approvate con una rendicontazione ELB sanitaria avanzata. Vedi gli argomenti in aggiornamenti delle configurazioni in sequenza e in distribuzioni in sequenza per dettagli su come i controlli dello stato influenzano il processo di aggiornamento.

I report avanzati sullo stato di salute possono anche evidenziare la necessità di impostare un controllo di integrità adeguato URL per Elastic Load Balancing. Quando l'ambiente si ridimensiona per soddisfare la domanda, le nuove istanze inizieranno a ricevere le richieste non appena superano un numero sufficiente ELB di controlli di integrità. Se un controllo dello stato non URL è configurato, possono passare anche solo 20 secondi dal momento in cui una nuova istanza è in grado di accettare una TCP connessione.

Se la tua applicazione non ha terminato l'avvio quando il sistema di bilanciamento del carico la dichiara abbastanza integra per ricevere il traffico, verrà visualizzata una serie di richieste non riuscite e l'ambiente inizierà a non superare i controlli dello stato. Un controllo dello stato URL di salute effettuato su un percorso fornito dall'applicazione può prevenire questo problema. ELBi controlli sanitari non verranno superati finché una GET richiesta al controllo sanitario non URL restituirà un codice di stato 200.