Configurare Amazon Cloudwatch per ricevere un avviso quando il server è inattivo


13

Ho un'istanza in esecuzione su Amazon EC2 che ho trasformato in un server web.

Ora ho guardato cloudwatch, ma non so se sia lo strumento giusto per il lavoro. Fondamentalmente voglio essere informato quando il server è inattivo, per qualsiasi motivo.

Forse il server è stato violato o il server è stato chiuso per qualsiasi motivo, voglio ricevere una notifica al riguardo.

Ho abilitato clouwatch e ho provato a impostare un avviso, ma vedo solo cose come la rete in-out o l'utilizzo della CPU, un d metrix. Ora non so se questi faranno il trucco.


1
checkout cloudkick. so che non dovremmo diffondere l'opinione, ma cloudkick è la mia soluzione di monitoraggio preferita. pingdom è piuttosto inutile in quanto il tuo sito può essere pingabile (apache / nginx) ma i tuoi proxy anche php / java / ruby ​​potrebbero non funzionare. colpire un URL reale con cloudkick ogni 3 minuti e verificare la presenza di testo specificato o per il successo di 2xx è molto più utile e garantisce che l'intero stack funzioni. Ho installato i monitor per loadaverage, Utilizzo memoria, connessione agente (server non in linea o connessione caduto), http 2xx successo su pagine, ecc
iainlbc

Hai fatto un buon punto qui. Se solo php è inattivo otterrai comunque una risposta di 200. Il link che hai fornito è una buona alternativa. Lo guarderò quando prenderò la mia decisione finale.
Saif Bechan,

@iainlbc Puoi impostare Pingdom in modo che colpisca un URL reale e controlli il testo specifico.
ceejayoz,

Risposte:


11

Una raccomandazione è quella di monitorare una metrica che dovrebbe sempre avere un valore numerico, ad esempio l'utilizzo della CPU, e di attivare un allarme quando lo stato della metrica è "dati insufficienti", è possibile utilizzare Amazon SNS per notificarlo.

In alternativa, puoi impostare metriche personalizzate che restituiscono uno stato binario per servizi specifici (httpd, mysql, ecc.) E generare un avviso ogni volta che una di queste letture 0. Questo approccio offre la possibilità di dettagli molto più fini - combinalo con 'dati insufficienti 'per coprire tutti i casi.

Potresti avere più successo utilizzando qualcosa che monitora effettivamente il tuo sito (ad esempio Pingdom, UptimeRobot, ecc.).


Ho esaminato i servizi come pingdom e li abiliterò sicuramente. Inoltre, stavo anche pensando di guardare la cpu, ma ho pensato a cosa sarebbe successo se fosse stato violato solo il server web. Avere un test per httpd, mysql ecc sarebbe sicuramente di aiuto. Puoi darmi un suggerimento su come abilitare questa metrica dello stato binario .
Saif Bechan,

Brevemente: determinare un modo per ottenere lo stato del servizio di interesse (ad es. Ps | grep per il pid / nome; verificare la presenza di una porta in uso , ecc.), Ovvero uno script watchdog. Modifica uno script di questo tipo per chiamare l'API di Cloudwatch (PutMetricData) passandogli uno 0 (per il down) o un 1 (per il up): sarebbe meglio usare uno degli SDK esistenti a questo scopo (ad esempio Ruby, PHP, eccetera); la versione della riga di comando mon-put-data è più lenta. Esegui tutto con cron.
cyberx86,

1
Ok, sembra un po 'complicato. Penso che un servizio come uptimerobot sarebbe una scelta migliore per me personale. Grazie per tutto l'aiuto.
Saif Bechan,

3

È possibile utilizzare OpsGenie ( http://www.opsgenie.com ) per inviare avvisi avanzati per CloudWatch. Currenly CloudWatch ha una serie limitata di meccanismi di allerta tra cui Email e SMS tramite il suo meccanismo SNS.

Puoi configurare CloudWatch per chiamare l'API dei servizi Web OpsGenie, ricevere rapidamente le persone giuste tramite notifiche push su app per iPhone / Android, SMS, chiamate vocali, ecc. In base alle preferenze dei destinatari.

Dai un'occhiata al seguente post sul blog per informazioni dettagliate:

http://www.opsgenie.com/blog/2012/09/04/aws-cloudwatch-alarms-on-your-mobile-with-opsgenie.html


2

Puoi creare un allarme in Cloudwatch e impostare l'allarme per avvisarti quando passa allo stato "Dati insufficienti". La maggior parte delle metriche già disponibili proviene dall'host di macchine virtuali, che non ha alcuna idea reale di ciò che sta accadendo all'interno della macchina.

All'inizio, consiglierei di installare gli strumenti Amazon nella tua istanza e impostare uno script per segnalare qualcosa, (qualsiasi cosa: utilizzo della CPU, qualunque cosa) e allarme se quella metrica interrompe l'invio di dati (quindi la metrica passa allo stato Dati insufficienti ).

Questo è solo un minimo indispensabile, ma dovrebbe essere un buon punto di partenza.

Vedi la sezione degli script di monitoraggio nella guida per sviluppatori di Cloudwatch: http://docs.amazonwebservices.com/AmazonCloudWatch/latest/DeveloperGuide/mon-scripts.html


Fantastico, proprio quello che stavo cercando.
GivP

2

Puoi utilizzare la Route 53 e i suoi "controlli di integrità". Con questo, puoi inviare avvisi SNS e reindirizzare i tuoi utenti su un altro sito Web secondario o su una schermata di errore. Penso che questa sia la soluzione migliore per il tuo problema rispetto a Cloudwatch.


2

È possibile implementare un controllo dello stato EC2 . È fatto dalla dashboard EC2. Vai alle istanze, seleziona la tua istanza, scegli la scheda dei controlli dello stato (accanto alla descrizione dell'istanza) Fai clic su Crea allarme controllo stato Lo "Controllo stato non riuscito (qualsiasi)" predefinito dovrebbe essere buono. Ho sempre impostato l'intervallo su maggiore di uno in modo da non essere disturbato per problemi temporanei.

È anche possibile impostare EC2 per ripristinare automaticamente l'istanza se si interrompe per qualche motivo.

Raccomando anche un sistema di monitoraggio secondario. Dumb è buono per questo. Ho impostato l'utilità linux mon puntata sul mio server web da un altro host. Se non riesce a ottenere un codice di risposta 200 due volte di seguito ricevo un'e-mail.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.