Hola!!
Hace poco que he comenzado un mini-proyectillo: Kolekti.
Consiste en una herramienta complementaria a
Sensu (una herramienta de monitorización), aunque tengo la intención de reemplazar a éste.
He encontrado numerosas pegas a Sensu:
- Los agentes necesitan al menos 3 hilos con una conexión a Rabbit cada uno
- Los agentes, antes de ejecutar un check, deben mergear numerosos archivos JSON
- Por lo tanto, los agentes son pesados y complejos (creedme, estoy participando en uno)
- Si se quiere monitorizar y alertar por un mismo check, hay que comprobarlo dos veces.
- Son los agentes quienes deciden si lanzar una alerta, lo que hace complejo modificarlas y las hace bastante estáticas
- Cada check debe implementar las mismas operaciones, pero algunos difieren en los parámetros: --warning --critical --schema, ...
- El servidor tiene más de lo mismo: delega en los handlers toda la operativa.
- Si saltan muchas alertas, el servidor se colapsa, saltándose algunos filtros (y generando más alarmas)
- Problemas de seguridad varios.
- Necesita un redis y un rabbitmq
- ...
Así que he decidido crear una herramienta simple que permita obtener datos raw, y posteriormente crear árboles de decisión, donde se termine alertando o monitorizando.
Estoy en la primera fase: recoger datos y mandárselos a Sensu. Y ya tengo algo que hasta funciona, aunque es totalmente manual.
Os comento todo esto por si alguien quiere echar una mano.
De momento, son 288 líneas de python, usando django+celery en el servidor y flask en el agente. No se hace nada con las métricas una vez obtenidas (aún). Y toda la configuración es manual.
Si alguien está interesado en echarme una mano, puedo hacer un mini-tutorial para echarlo a andar. Es un ejemplo muy chulo de arquitectura SOA simple, en sus primeras etapas de desarrollo. Actualmente todo funciona por HTTP simple, aunque es muy probable que eso cambie o que se envíen los datos cifrados de alguna manera.
Algunos enlaces del proyecto:
Ale, feliz domingo!
--
Miguel Ángel García Martínez