Si sta utilizzando Enhanced Health Monitoring. Con il monitoraggio avanzato dello stato di salute, l'istanza EC2 agent installata monitora le metriche di integrità del sistema vitale e del livello dell'applicazione e le invia direttamente a Elastic Beanstalk.
Quando viene visualizzato un messaggio di errore del tipo "Nessuna delle istanze invia dati", significa che l'agente sull'istanza si è arrestato in modo anomalo o non è in grado di pubblicare dati su Elastic Beanstalk a causa di un errore di rete o di altri errori.
Per eseguire il debug di questo, è consigliabile scaricare "Registri completi" dalla console AWS. È possibile seguire le istruzioni per ottenere i registri nella sezione "Download dei registri di bundle dalla console Elastic Beanstalk" here. Se non è possibile scaricare i registri utilizzando la console per qualsiasi motivo, è anche possibile eseguire ssh sull'istanza e osservare i registri in /var/log
.
Troverete i registri per l'agente sanitario in /var/log/healthd/daemon.log
. I registri aggiuntivi utili per questa situazione sono /var/log/cfn-init.log
, /var/log/eb-cfn-init.log
e /var/log/eb-activity.log
. Puoi guardare i log e fornire maggiori dettagli sugli errori che vedi? Si spera che questo vi fornisca ulteriori dettagli sull'errore "Nessuna delle istanze sta inviando dati".
Per quanto riguarda tutti gli altri "cause" che state vedendo:
Ambiente salute è passata da attesa Grave - Questo perché inizialmente il vostro stato di salute dell'ambiente è attesa. Se le istanze non salgono entro il periodo di prova, le transizioni dello stato di integrità su Severe. Nel tuo caso dal momento che nessuna delle istanze è in buona salute/invio di dati, la salute è passata a Severe.
Il 100,0% delle richieste all'ELB non riesce con HTTP 5xx. Frequenza richiesta insufficiente (0,5 richieste/min) per determinare l'integrità dell'applicazione (7 minuti fa). Elastic Beanstalk controlla altre risorse oltre alle istanze EC2 quando si utilizza il monitoraggio avanzato della salute. Ad esempio, monitora le metriche del cloudwatch per il tuo ELB. Questo errore indica che tutte le richieste inviate al tuo ambiente CNAME/bilanciamento del carico hanno esito negativo con errori HTTP 5xx. Allo stesso tempo il tasso di richiesta è molto basso, solo 0,5 richieste al minuto, quindi questo indica che anche se tutte le richieste stanno fallendo, il tasso di richiesta è piuttosto basso. "7 minuti fa" significa che le informazioni sulle metriche ELB sono leggermente vecchie. Poiché Elastic Beanstalk monitora le metriche del cloudwatch ogni pochi minuti, quindi i dati possono essere leggermente obsoleti. Questo è in contrasto con i dati sulla salute che otteniamo direttamente dalle istanze EC2 che è "quasi in tempo reale". Nel tuo caso, dal momento che le istanze non inviano dati, l'unica fonte disponibile per la salute è la metrica ELB, che viene ritardata di circa 7 minuti.
ELB salute sta fallendo o non è disponibile per tutte le istanze Elastic Beanstalk sta esaminando la salute della vostra ELB, vale a dire si sta verificando quante istanze sono in servizio dietro ELB. Nel tuo caso, tutte le istanze dietro ELB sono fuori servizio o la salute non è disponibile per qualche altro motivo. Dovresti ricontrollare che il tuo ruolo di servizio sia configurato correttamente. È possibile leggere come configurare correttamente il ruolo di servizio here o documentation. È possibile che l'applicazione non sia stata avviata.
Nel tuo caso suggerirei di concentrarsi sul primo errore "Nessuna delle istanze sta inviando dati". Per questo è necessario consultare i registri come descritto sopra. Fammi sapere cosa vedi nei log. L'agente viene avviato abbastanza presto nel processo di avvio sull'istanza. Pertanto, se viene visualizzato un errore come "Nessuna delle istanze invia dati", è molto probabile che il bootstrap non sia riuscito o che l'agente non sia stato avviato per qualche motivo. I log dovrebbero dirti di più.
Assicurarsi inoltre di utilizzare un profilo di istanza con il proprio ambiente. Il profilo dell'istanza consente all'agente sanitario in esecuzione sull'istanza EC2 di autenticarsi con Elastic Beanstalk. Se il profilo dell'istanza non è associato all'ambiente, l'agente non sarà in grado di inviare dati a Elastic Beanstalk. Per saperne di più sui profili di istanza con Elean Beanstalk here.
Aggiornamento "dati Nessuno dei casi stanno inviando" Un motivo comune per la causa della salute può essere che l'istanza è in una VPC e la tua VPC non consente l'accesso NTP. L'indicatore tipico di questo problema è il seguente messaggio in /var/log/messages: ntpdate: Synchronizing with time server: [FAILED]
. Quando ciò accade, l'orologio dell'istanza EC2 può andare fuori sincrono e i dati sono considerati non validi. Dovresti anche vedere una causa di salute nelle istanze nella pagina della salute della console web di AWS che ti informa che l'orologio di istanza non è sincronizzato. La soluzione è assicurarsi che il tuo VPC consenta l'accesso a NTP.
fonte
2015-09-03 03:56:52
Grazie per la tua risposta, provo ad accedere ai log per la mia applicazione Elastic Beanstalk come hai detto tu e riavvia l'app EB e poi non succede nulla. Non riesco a ottenere i log. –
Puoi eseguire l'ssh sull'istanza e ottenere i log? –
Un'altra possibilità è che la configurazione VPC sia errata, quindi il bootstrap non è riuscito. Ancora una volta, se si può ssh all'istanza e ottenere i registri, si avranno i dettagli. –