Manfred v.1.1.6. - Monitorización
Como os adelantamos la semana pasada, estamos definiendo el roadmap de lo que será la primera versión del portal de manfreditas. Mientras tanto, en desarrollo, estamos aprovechando para pulir nuestras páginas de ofertas y su backoffice. También le ha llegado el momento a algo que teníamos pendiente: la monitorización de nuestra infraestructura.
A principios de verano os contamos, entre otras cosas, cómo es la infraestructura donde estamos desplegando Asgard. Actualmente contamos con 3 entornos: desarrollo, staging y producción. Estamos preparando uno más para testing (pero eso os lo contaremos en otra ocasión 😉).
En los 3 últimos meses, nuestra web ha sufrido 4 o 5 caídas de servicio, por diversos motivos. Creo que la peor dejó nuestra página de ofertas inaccesible durante más de media hora. No son números horribles, pero estamos en pleno crecimiento y cada vez será más crítico. Así que, como os decía, ha llegado el momento de rescatar del backlog de nuestro Jira la tarea de “Monitorización”.
Monitorización: qué hemos usado
No hemos sido muy originales: hemos usado Prometheus para recopilar métricas y Grafana para visualizarlas. También queríamos poder consultar los logs de los diferentes entornos y máquinas en un mismo lugar, así que ya hemos tirado de Loki (ya sabéis… «Loki is like Prometheus, but for log» 😎).
Comenzamos por instalar, configurar y securizar los diferentes agentes que recopilarán la información necesaria de cada uno de las instancias de Asgard. Con el agente de node_exporter recopilamos toda la información referente a la instancia, como CPU, memoria, disco, carga, etc. que Prometheus recolectará para ponerla a disposición de Grafana.
El agente encargado de la recopilación de los diferentes logs será Promtail, que mantendrá la comunicación con Loki y haciendo llegar a estos los diferentes logs recopilados. Una instancia que hemos llamado “Collector” correrá los servicios de Prometheus y Loki, junto a blackbox_exporter, que nos permitirá, tanto en nuestros sitios de acceso público como privado, obtener métricas como son los tiempos de respuesta, si el sitio está levantado, si está sobre https, la versión de http usada, el tiempo que queda para que se caduque el certificado, etc.
Por otro lado, hemos añadido también conexión con el servicio Cloudwatch de AWS para la monitorización de los diferentes servicios de AWS que usamos para la infraestructura de Asgard, como por ejemplo, obtener métricas de los balanceadores de carga, capacidad usada de nuestros S3, RDS, etc.
Sin duda, una apuesta para mantener en un único punto todas las métricas involucradas en el sistema Asgard y todos sus entornos. Además de tener unos paneles con las métricas que nos interesan, podremos gestionar alarmas y realizar consultas en los logs de una forma más sencilla, accesible y visual.