«Monitorizando la monitorización» – CloudWatch – assume-role y plugin Check_MK
Índice
Nos será útil para estar al tanto del estado de todas las alertas; por poner un ejemplo, en ocasiones puede ocurrir, que como resultado de un autoescalado, haya cambiado el id de una instancia, y el agente de CloudWatch no se esté ejecutando, lo que resultaría en un «Insufficient Data».
Funcionalidad
-
- Lambda (Se ejecutará cada X tiempo)
- Definimos una lista con los «Role Arn» de todas las cuentas de AWS que queremos monitorizar.
- La lambda recorre dicha lista y mediante «Assume-role» obtiene las credenciales de seguridad temporales necesarias, para cada una de las cuentas definidas anteriormente:
- Una ID de clave de acceso
- Una clave de acceso secreta
- Un token de seguridad.
- Lo que le permitirá acceder a las alertas configuradas en CloudWatch y obtener los estados de dichas alertas.
- Esta información la guardará en un bucket S3.
- Plugin Check_MK
- Carga periódicamente la información almacenada en el bucket S3.
- Selecciona las alertas con estado «INSUFFICIENT_DATA» y «ALARM»
- Calcula cuánto tiempo ha pasado desde la última actualización del estado de la alerta.
- Sólo en el caso de que éste supere los 30 minutos, prestará atención a las métricas en estado de alerta y notificará a Check_Mk, con un «CRITICAL»
- en el caso de las alertas con el estado «ALARM»
- o con un «WARNING»
- en el caso de las alertas con el estado «INSUFFICIENT_DATA»
Lambda
Permisos necesarios
AssumeRole-All
Put S3
Send email
CloudWatch
Logs
Código:
Plugin Check_MK
Get S3
Implantación en Check_MK
/opt/omd/sites/<sitename>/lib/nagios/plugins
/opt/omd/sites/<sitename>/local/lib/nagios/plugins
En mi caso es el segundo.
(en mi caso, usuario check_mk)
Configuración Check_MK
Guardamos, y confirmamos los cambios.
Y este sería el resultado, en este caso el código de salida del plugin es (1) por lo que veremos un Warning, al tener 4 alertas que llevan más de 30 minutos en estado de INSUFFICIENT_DATA.
Si le hacemos click, nos daría más información acerca de estas alertas (nombre ARN, etc..) pero no voy a mostrarlo, por ser información sensible de mis instancias.
Nos vemos en la próxima!!!