
Alertes de Centreon amb la IA local Ollama
Molt bones! La intenció d'aquest post és fer un mer exemple de com podem fer servir la IA en el nostre entorn de monitoratge, en aquest primer document l'orientarem a la recepció de les alertes, en aquest cas de Centreon. Així que si estàs avorrit de les notificacions tradicionals, ha vingut la IA per canviar-lo!
El que s'ha dit, en este primer post veremos cómo usar la IA d' Ollama para que nos traslade las notificaciones de nuestro sistema de monitorización de una manera más amable, más humana… Si queremos podemos decirla que nos dé recomendaciones o consejos para actuar, o que lo haga en verso… La idea es que Centreon le mandará por API a Ollama cada vez que un Host o un Servicio tenga un problema, crearemos pues un par de scripts muy sencillos que los usaremos para que la alerta sea enviada a Ollama, con un texto donde le detallaremos qué queremos de ella y le pasaremos como argumentos el Host o Servicio que falla, así como su estado…
Empezamos por lo tanto creando esos 2 scripts, en mi caso usaré notificaciones con Telegram, así que si vas a usar mail u otro servicio esa parte la tendrás que hacer distinta.
Creamos el script para las notificaciones de los hosts, le llamamos ‘/usr/lib/centreon/plugins/notifica_telegram_ia_ollama_host.sh’ per exemple. En él le daremos las indicaciones oportunas que consideremos, yo os dejo mi ejemplo, tendréis que tener en cuenta de modificar la IP de Ollama, así como el Chat ID del grupo de Telegram, el Token de Telegram, el modelo de lenguaje LLM utilizado o por ejemplo la temperatura para que sea más o menos creativo. Este sería el contenido:
#!/bin/bash texto="Per favor, genera un text per a una notificació que serà enviada a l'smartphone de l'usuari amb informació útil. Ets un agent personal útil que genera text per a tècnics de sistemes. Les teves respostes poden ser tècniques, no t'ofereixis com a ajuda, ni des recomanacions. El missatge que has de dir és sobre un problema de tipus: "$1", a l' equip "$2" ja que és a l'estat "$3". No saluts, no diguis Hola i no t'acomiades, ni des les gràcies per res. La resposta ha de ser en Espanyol i el missatge ha de ser breu." texto_generado =$(/usr/bin/curl http://DIRECCION_IP_OLLAMA:11434/api/generate -H "Content-Type: application/json" -d '{ "model": "crida3", "prompt": "'"$text"'", "temperature": 0.1, "stream": false, "max_length": 50 }' | jq -r '.response') texto_generado_sin_comillas ='echo "$texto_generado" | sed 's/\"//g'` /usr/bin/curl -X POST -H "Content-Type: application/json" -d '{ "chat_id": "-XXXXXXXXXX", "text": "'"$texto_generado_sin_comillas"'" }' "https://api.telegram.org/botTOKEN_BOT_TELEGRAM/sendMessage"
E igualmente deberemos generar el script que usará Centreon para notificar cualquier problema en los Servicios, per a això, igualmente creamos por ejemplo este script llamado ‘/usr/lib/centreon/plugins/notifica_telegram_ia_ollama_servicio.sh’ donde si os fijáis es muy parecido, pero tiene 1 argumento más.
#!/bin/bash texto="Per favor, genera un texto para una notificación que será enviada al smartphone del usuario. Eres un agente personal que genera texto para técnicos de sistemas. Les teves respostes poden ser tècniques. El missatge que has de dir és sobre un problema de tipus: "$1", a l' equip "$2" ya que el servicio "$3" está en el estado "$4". No saluts. No te despidas. No des las gracias. La respuesta debe ser en Español. El mensaje debe ser breve, en un parrafo tu respuesta" texto_generado =$(/usr/bin/curl http://DIRECCION_IP_OLLAMA:11434/api/generate -H "Content-Type: application/json" -d '{ "model": "crida3", "prompt": "'"$text"'", "temperature": 0.1, "stream": false, "max_length": 50 }' | jq -r '.response') texto_generado_sin_comillas ='echo "$texto_generado" | sed 's/\"//g'` /usr/bin/curl -X POST -H "Content-Type: application/json" -d '{ "chat_id": "-ID_CHAT_TELEGRAM", "text": "'"$texto_generado_sin_comillas"'" }' "https://api.telegram.org/botTOKEN_TELEGRAM/sendMessage"
Després d'això, recordar hacerlos ejecutables (con chmod +d) y lo siguiente sería crear los Comandos de tipo notificación en Centreon, anem a “Configuration” > “Commands” > “Notifications” y creamos un par de ellos, uno para notificar problemas con los Hosts y otro para los Servicios, cada uno con su Command Line:
- /usr/lib/centreon/plugins/notifica_telegram_ia_ollama_host.sh ‘$HOSTSTATE$’ \ ‘$HOSTNAME$’ \ ‘$HOSTOUTPUT$’
- /usr/lib/centreon/plugins/notifica_telegram_ia_ollama_servicio.sh ‘$SERVICESTATE$’ \ ‘$HOSTNAME$’ \ ‘$SERVICEDESC$’ \ ‘$SERVICEOUTPUT$’
Y una vez creados los Comandos de notificación quedará asociarlos a un Usuario o a un Grupo, así que selecciona al usuario o grupo que tengas asociado en tus Hosts y Servicios e indicamos los Comandos recién creados en ‘Host Notification Commands’ y en ‘Service Notification Commands’.
Grabamos y exportamos, por si hace falta, i llest!
I res, ahora cada vez que tengáis una alerta en vuestro datacenter pues será distinta, tan curiosa como vosotr@s queráis que sea, corta, larga, con opciones de resolución, en euskera, en suajili…
Espero que os haya resultado curioso y nada, el que s' ha dit, como siempre que vaya todo estupendamente!
Una abraçada!