Configurar Amazon Cloudwatch para recibir una alerta cuando el servidor está inactivo

13

Tengo una instancia ejecutándose en Amazon EC2 que convertí en un servidor web.

Ahora he estado mirando Cloudwatch, pero no sé si es la herramienta correcta para el trabajo. Básicamente quiero informarme cuando el servidor está caído, por cualquier razón.

Tal vez el servidor fue pirateado, o el servidor se cerró por cualquier razón, quiero recibir una notificación al respecto.

He habilitado la vigilancia de nubes e intenté configurar una alerta, pero solo veo cosas como la entrada de la red o el uso de la CPU, y una metrix. Ahora no sé si estos harán el truco.

Saif Bechan
fuente
1
Pagar Cloudkick. Sé que se supone que no debemos difundir la opinión, pero Cloudkick es mi solución de monitoreo favorita. pingdom es bastante inútil ya que su sitio puede ser pingable (apache / nginx) pero sus proxys también pueden no funcionar en los procesos php / java / ruby. golpear una URL real con cloudkick cada 3 minutos y verificar la presencia del texto que especifique, o para el éxito 2xx, es mucho más útil y garantiza que toda la pila funcione. He fijado monitores para loadaverage, Uso de memoria, conexión de medio (servidor fuera de línea o se caiga la conexión), http 2xx éxito en las páginas, etc
iainlbc
Hiciste un buen punto aquí. Si solo php está inactivo, aún obtendrá una respuesta de 200. El enlace que proporcionó es una buena alternativa. Lo echaré un vistazo cuando tome mi decisión final.
Saif Bechan
@iainlbc Puede configurar Pingdom para que golpee una URL real y verifique si hay texto específico.
ceejayoz

Respuestas:

11

Una recomendación es monitorear una métrica que siempre debe tener un valor numérico, como el uso de la CPU, y activar una alarma cuando el estado de la métrica es 'datos insuficientes'. Puede usar el SNS de Amazon para notificarlo.

Alternativamente, puede configurar métricas personalizadas que devuelven un estado binario para servicios específicos (httpd, mysql, etc.) y generar una alerta en cualquier momento cualquiera de estas lecturas 0. Este enfoque ofrece la posibilidad de detalles mucho más finos: combínelo con 'datos insuficientes 'para cubrir todos los casos.

Es posible que tenga más éxito utilizando algo que realmente supervisa su sitio (por ejemplo, Pingdom, UptimeRobot, etc.).

cyberx86
fuente
He mirado los servicios como pingdom, y ciertamente los habilitaré. Además, también estaba pensando en mirar la CPU, pero pensé qué sucedería cuando solo se piratea el servidor web. Tener una prueba para httpd, mysql, etc. ciertamente ayudaría. ¿Puede darme una pista sobre cómo habilitar esta métrica de estado binario ?
Saif Bechan
Brevemente: determine una forma de obtener el estado del servicio de interés (por ejemplo, ps | grep para el nombre / pid; verifique si hay un puerto en uso , etc.), es decir, un script de vigilancia. Modifique dicho script para llamar a la API de Cloudwatch (PutMetricData) pasándole un 0 (para abajo) o un 1 (para arriba); sería mejor usar uno de los SDK que existen para este propósito (por ejemplo, Ruby, PHP, etc); la versión de línea de comando mon-put-data es más lenta. Ejecútalo todo con cron.
cyberx86
1
Ok, eso suena un poco complicado. Creo que un servicio como uptimerobot sería una mejor opción para mi personal. Gracias por toda la ayuda.
Saif Bechan
3

Puede usar OpsGenie ( http://www.opsgenie.com ) para enviar alertas completas para CloudWatch. Currenly CloudWatch tiene un conjunto limitado de mecanismos de alerta que incluyen correo electrónico y SMS a través de su mecanismo SNS.

Puede configurar CloudWatch para llamar a la API de servicios web de OpsGenie, notificar rápidamente a las personas adecuadas a través de notificaciones push a aplicaciones de iPhone / Android, SMS, llamadas de voz, etc. de acuerdo con las preferencias de los destinatarios.

Consulte la siguiente publicación de blog para obtener información detallada:

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

enguzekli
fuente
2

Puede crear una alarma en Cloudwatch y configurar la alarma para que le notifique cuando entre en estado de "Datos insuficientes". La mayoría de las métricas ya disponibles son del VM Host, que no tiene una idea real de lo que sucede dentro de su máquina.

Al principio, recomendaría instalar las herramientas de Amazon en su instancia y configurar un script para informar algo (cualquier cosa: uso de CPU, lo que sea) y alarma si esa métrica deja de enviar datos (por lo que la métrica pasa al estado Datos insuficientes )

Esto es solo un mínimo, pero debería ser un buen lugar para comenzar.

Consulte la sección de secuencias de comandos de supervisión de la guía para desarrolladores de Cloudwatch: http://docs.amazonwebservices.com/AmazonCloudWatch/latest/DeveloperGuide/mon-scripts.html

Matt Connolly
fuente
Impresionante, justo lo que estaba buscando.
GivP
2

Puede usar la Ruta 53 y sus "Comprobaciones de estado". Con esto, puede enviar alertas SNS y también redirigir a sus usuarios a otro sitio web secundario o una pantalla de error. Creo que esta es una mejor solución para su problema que Cloudwatch.

Petr
fuente
2

Puede implementar una verificación de estado EC2 . Se realiza desde el panel de control EC2. Vaya a instancias, seleccione su instancia, elija la pestaña de comprobaciones de estado (junto a la descripción de la instancia) Haga clic en crear alarma de comprobación de estado La "Comprobación de estado fallida (cualquiera)" predeterminada debería ser buena. Siempre establezco el intervalo en más de uno para no molestarme por problemas transitorios.

También es posible configurar EC2 para recuperar automáticamente su instancia si se cae por alguna razón.

También recomiendo un sistema de monitoreo secundario. Dumb es bueno para este. Configuré la utilidad de Linux mon apuntó a mi servidor web desde otro host. Si no consigue un código de respuesta 200 dos veces seguidas, recibo un correo electrónico.

jorfus
fuente