
Alertes de Centreon amb OpenAI
Bo, aquest post amb estil estiuenc… sobre una cosa que no param d'oir… la IA… en aquest post veurem com podem fer servir OpenAI perquè ens faci les notificacions del nostre sistema de monitoratge una mica més personalitzades…
Sí, como ya sabes, a OpenAI le puedes pedir muchas cosas, en este caso la usaremos para adaptar los mensajes que vienen de Centreon y quizá hacerlos más sencillos, o lo que necesitemos. Ya que yo sólo lo usaré para eso, para que me mande la alerta y me la transcriba de una manera más humana. Por supuesto podemos decirla que nos ayude o nos oriente a resolverla, o que nos lo diga haciendo rima, hip-hop, en verso, o como Chiquito de la Calzada, eso ya… al gust.
Antes de que alguien se emocione… sí, necesitaremos una cuenta de pago de OpenAI, pero es ridículo el coste que pueda suponer este uso, además que podremos parametrizar para que use menos tokens, etc.… ¿sobre 0,05€ día? dependerá del número de notificaciones que tengáis también…
¿Cómo lo conseguimos? Pues realmente sencillo, en mi caso uso Telegram para las notificaciones, así que tengo 2 scripts, uno para las notificaciones de los Hosts y otro para las notificaciones de los Servicios. Estos scripts recibirán como argumentos pues eso, el Host/Servicio afectado, con su estado, su output… los scripts le pedirán a OpenAI que por favor si no es mucha molestia los transcriba de una forma humana, usando un lenguaje amable, cercano, bla, bla, al gust… o dirigido a un departamento técnico, que le gustaría además que le orientes… Per suposat, que deberíais personalizarlo a vuestro gusto.
Script /usr/lib/centreon/plugins/notifica_telegram_ia_servicio.sh
#!/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. Tus respuestas son breves, útiles, amables, càlides, perspicaços. Les teves respostes poden ser tècniques, no te ofrezcas como ayuda y no incluyen detalles internos del Asistente en Casa, como entidades en las respuestas. 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 hace falta que saludes." texto_generado =$(/usr/bin/curl https://api.openai.com/v1/completions -H "Content-Type: application/json" -H "Authorization: Bearer sk-TOKEN_OPENAI" -d '{ "model": "text-davinci-003", "prompt": "'"$text"'", "temperature": 0.9, "max_tokens": 100 }' | jq -r '.choices[0].text') texto_generado =$(echo "$texto_generado" | sed 1d) /usr/bin/curl -X POST -H "Content-Type: application/json" -d '{ "chat_id": "ID_CHAT_TELEGRAM_DESTINO", "text": "'"$texto_generado"'" }' "https://api.telegram.org/botTOKEN_TELEGRAM/sendMessage"
Script /usr/lib/centreon/plugins/notifica_telegram_ia_host.sh
#!/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. Tus respuestas son breves, útiles, amables, càlides, perspicaços. Les teves respostes poden ser tècniques, no te ofrezcas como ayuda y no incluyen detalles internos del Asistente en Casa, como entidades en las respuestas. 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 hace falta que saludes." texto_generado =$(/usr/bin/curl https://api.openai.com/v1/completions -H "Content-Type: application/json" -H "Authorization: Bearer sk-TOKEN_OPENAI" -d '{ "model": "text-davinci-003", "prompt": "'"$text"'", "temperature": 0.9, "max_tokens": 100 }' | jq -r '.choices[0].text') texto_generado =$(echo "$texto_generado" | sed 1d) /usr/bin/curl -X POST -H "Content-Type: application/json" -d '{ "chat_id": "ID_CHAT_TELEGRAM_DESTINO", "text": "'"$texto_generado"'" }' "https://api.telegram.org/botTOKEN_TELEGRAM/sendMessage"
Una vez guardados los scripts (recordar hacerlos ejecutables), ya podremos ir a la GUI de Centreon y crear un Comando de tipo Notificación, per a això, anem a “Configuration” > “Commands” > “Notifications”, crearemos dos, uno para los Servicios y otro para los Hosts.
El comando llamado ‘Telegram_servicios_IA_sh’ tiene la siguiente línea de comandos:
/usr/lib/centreon/plugins/notifica_telegram_ia_servicio.sh '$SERVICESTATE$' \ '$HOSTNAME$' \ '$SERVICEDESC$' \ '$SERVICEOUTPUT$'
El comando llamado ‘Telegram_hosts_IA_sh’ tiene la siguiente línea de comandos:
/usr/lib/centreon/plugins/notifica_telegram_ia_host.sh '$HOSTSTATE$' \ '$HOSTNAME$' \ '$HOSTOUTPUT$'
Cómo veis, estos Comandos cuando sean llamados (por una alerta), ejecutarán nuestros scripts, pasándoles como argumentos las variables de Centreon (el Host, el servei, el seu estat…) y luego OpenAi agita, sacude y nos mandará un mensaje por Telegram algo más interesante.
Recordar asociar estos Comandos de Notificación a los usuarios que corresponda y recargar la configuración de Centreon, que nunca viene de más 😉
Total, que tras exportar deberían de comenzar a llegarnos las alertas algo distintas, dependiendo de lo que le hayamos pedido a OpenIA! Què us sembla? Ahora queda seguir exprimiéndolo, pidiendo soluciones, hablando un lenguaje no técnico… O, modificar el script y para que os lleguen las alertas por Alexa, llamada telefónica con VoIP, mail, Teams, Slack, Discord…
Como siempre deseando que os parezca interesante, algo para darle una vuelta más a nuestro sistema de monitorización! y para los excépticos que me digan que le estamos dando información a OpenIA, lo hace igualmente al usar medios de comunicación externos =) Nada que un abrazote, que vagi molt bé, ser felices y sobre todo disfrutar del verano que pasa volando!