Alertas de Centreon con OpenAI

Bueno, este post con estilo veraniego… sobre algo que no paramos de oir… la IA… en este post veremos cómo podemos usar a OpenAI para que nos haga las notificaciones de nuestro sistema de monitorización algo más personalizadas…

 

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 gusto.

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 gusto… o dirigido a un departamento técnico, que le gustaría además que le orientes… Por supuesto, que deberíais personalizarlo a vuestro gusto.

 

Script /usr/lib/centreon/plugins/notifica_telegram_ia_servicio.sh

#!/bin/bash

texto="Por favor, genera un texto para una notificación que será enviada al smartphone del usuario con información útil. Eres un agente personal útil que genera texto para técnicos de sistemas. Tus respuestas son breves, útiles, amables, cálidas, perspicaces. Tus respuestas pueden ser técnicas, no te ofrezcas como ayuda y no incluyen detalles internos del Asistente en Casa, como entidades en las respuestas. El mensaje que tienes que decir es sobre un problema de tipo: $1, en el equipo $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": "'"$texto"'",
  "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="Por favor, genera un texto para una notificación que será enviada al smartphone del usuario con información útil. Eres un agente personal útil que genera texto para técnicos de sistemas. Tus respuestas son breves, útiles, amables, cálidas, perspicaces. Tus respuestas pueden ser técnicas, no te ofrezcas como ayuda y no incluyen detalles internos del Asistente en Casa, como entidades en las respuestas. El mensaje que tienes que decir es sobre un problema de tipo: $1, en el equipo $2 ya que está en el estado $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": "'"$texto"'",
  "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, para ello, vamos 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 servicio, su estado…) 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é os parece? 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 vaya muy bien, ser felices y sobre todo disfrutar del verano que pasa volando!

 

Héctor Herrero