
Compartir:
Jẹ́káyinOlúwa is a software craftsman and product manager passionate about technology and its impact on people. He works on product management, backend development, DevOps, technical writing, and community strategy. He enjoys dealing in the intersection of software, design, and human interaction. He likes reading and music.
Integra Vonage con Grafana para recibir notificaciones por SMS
Tiempo de lectura: 15 minutos
Introducción
Grafana es una plataforma abierta de observabilidad multiplataforma que los desarrolladores pueden utilizar para realizar un seguimiento de las métricas de aplicaciones o sistemas en la nube. Genera análisis y visualización de las métricas con tablas, gráficos y alertas. Este artículo mostrará cómo integrar Vonage con una configuración de Grafana para recibir notificaciones por SMS mediante la API Messages API de Vonage.
El lenguaje de instrucción será Python. El conocimiento compartido a través del artículo propuesto sería útil para los equipos de DevOps, SREs y administradores de sistemas que confían en Grafana para notificarles de actividades y ocurrencias inusuales en su sistema.
Contenido
Paso 2: Crear una aplicación Python para la implementación de la lógica
Paso 3: configurar la cuenta de Vonage para la notificación por SMS de Messages API
Paso 1: Configurar la pila de Grafana
Grafana te permite configurar tu propia instancia de Grafana en tu máquina o servidor local. Alternativamente, puede utilizar Grafana en la nube al se registre una nueva Account. Por lo tanto, no tendrás que instalar ni mantener tu instancia de Grafana, ya que está basada y gestionada en la nube.
Crear un cuadro de mando
En este tutorial, construirás un dashboard simple usando la fuente de datos incorporada Grafana --. Para un nuevo usuario de Grafana, Grafana solicita un flujo de trabajo por primera vez para guiarlo en la creación de un nuevo panel de control. Puedes seguir los pasos de las indicaciones o los pasos destacados en esta sección del artículo. Puedes saltarte esta sección si ya estás familiarizado con Grafana.
Haga clic en Cuadros de mando en el menú de la izquierda para ir a la página Cuadros de mando.
Haga clic en el botón Nuevo para obtener un menú desplegable de opciones y seleccione Nuevo panel
En la página Nuevo cuadro de mando, haga clic en + Añadir visualización para abrir un modelo para elegir una fuente de datos.
Seleccione un modal de fuente de datos y seleccione la opción -- Grafana -- a la derecha.
select-data-source.png
Al seleccionar -- Grafana que es la fuente de datos de Grafana incorporada por defecto, ocurren dos cosas:
- Grafana configures your query
- Grafana generates the Random Walk dashboard.Ahora puede hacer clic en el icono Actualizar panel de la siguiente imagen para consultar la fuente de datos.
create-contact-point.png
A continuación, haga clic en Guardar en la esquina superior derecha. Se le pedirá que introduzca un nombre para el panel antes de guardarlo.
Ahora deberías tener un dashboard básico configurado en tu Account de Grafana. Puedes seguir explorando Grafana añadiendo fuentes de datos para crear cuadros de mando para otros proyectos.
Paso 2: Crear una aplicación Python para la implementación de la lógica
Necesita instalar Flask para alimentar el script Python que utilizarás en este tutorial. Puedes ejecutar el siguiente comando en tu terminal para instalar Flask.
Escribir la primera función de Python
Ahora, configurarás un webhook de Flask para recibir alertas de Grafana.
Crea un archivo, notify.py, y añade el siguiente código Python.
from flask import Flask, request
app = Flask(__name__)
@app.route("/grafana-webhook", methods=["POST"])
def grafana_webhook():
if request.method == "POST":
data = request.json
alert_description = data["alerts"][0]["annotations"]["desc"]
print(alert_description)
return "Webhook received!"
if __name__ == "__main__":
app.run(host="", port=3000, debug=True)En el código anterior:
creado una
POSTruta,/grafana-webhookLa ruta decora la función grafana_webhook, un punto final POST para recibir peticiones POST.
extrajo el
alert_descriptionde la carga útil de la solicitudUno de los atributos extraídos, alert_summary, se imprime en la consola en tiempo de ejecución mediante la función print().
Ha designado el puerto 3000 para que se ejecute la aplicación. Hacer esto permitirá mapear el puerto de la aplicación con el puerto donde se ejecutaría Ngrok. De esta manera, la aplicación se sirve a través del servidor Ngrok.
Para ejecutar la aplicación localmente, utilice el siguiente comando bash en su terminal:
Debería obtener una salida de terminal como la siguiente, lo que significa que hay un servidor de desarrollo activo:
Configurar el servidor Ngrok
A continuación, puede instalar Ngrok, un servidor en línea ligero para probar la aplicación Python. Te permitirá servir tu script Python a través de la Internet pública. Siga las instrucciones de instalación en el sitio web oficial sitio web para instalarlo.
Puede ejecutar Ngrok con el siguiente comando de terminal, y pondrá en marcha un servidor ligero para usted:
Ejecutar el comando anterior pone en marcha un servidor ligero para usted, y verá su URL pública en su terminal como la siguiente:
Esto implica que su webhook endpoint basado en su script Python es el siguiente:
Esta será tu URL dedicada para que Grafana envíe notificaciones webhook a tu aplicación Python.
Conectar Grafana con la aplicación Python
Para conectar Grafana con tu aplicación Python, especificarás la URL de webhook a través de la cual Grafana puede enviar sus alertas a tu aplicación. Ya que tienes una URL de webhook para este propósito, la agregarás a los puntos de contacto de Alertas en tu tablero de Grafana. Sigue los siguientes pasos para configurar tus Alertas de Grafana con el webhook de tu aplicación.
En el menú principal de Grafana, vaya a Alertas e IRM > Alertascomo se muestra en la siguiente captura de pantalla.
alerting-menu.png
Haga clic en Puntos de contacto en la página de Alertas para ir a los Puntos de contacto como se muestra en la siguiente captura de pantalla. Haga clic en + Añadir punto de contacto Añadir punto de contacto. Accederá a la página Crear punto de contacto en la siguiente captura de pantalla.
contact-points.png
Introduzca el Nombrey seleccione Webhook en la sección Integración en la lista. Introduzca la URL de su webhook dedicado en el campo URL como se muestra en la siguiente captura de pantalla.
contact-point-setup.png
Puede hacer clic en el botón Probar para probar el punto de contacto. Intente utilizar la opción de notificación personalizada durante la prueba, no la opción predefinida. Esto permitirá que el código de su punto final analice correctamente el resumen y la descripción de la notificación para que usted pueda verlos en su terminal. La prueba envía una notificación ficticia a la URL de su webhook. Si la notificación se envía correctamente, recibirá una alerta de éxito, "Alerta de prueba enviada"en la esquina superior derecha de la página, como se muestra en la siguiente imagen.
test-alert-sent.png
Haga clic en el botón Guardar punto de contacto para guardar el punto de contacto.
Paso 3: configurar la cuenta de Vonage para la notificación por SMS de Messages API
Definir URL de aplicaciones de Vonage
Puede añadir los puntos finales de estado y de entrada a la URL que ha generado Ngrok. Tendrán el siguiente aspecto:
Estado URL: https://d5fs-104-25-63-145.eu.ngrok.io/webhooks/message-status
URL de entrada: https://d5fs-104-25-63-145.eu.ngrok.io/webhooks/inbound-message
Anota las URL anteriores, ya que las necesitarás cuando configures tu cuenta de Vonage para Messages API en la siguiente sección.
Configurar una aplicación de Vonage
Es necesario registrarte en una cuenta de Vonage si aún no tienes una.
Necesitas una cuenta de Vonage configurada con Messages API para enviar mensajes SMS a tus usuarios a través de Vonage. En este caso, tu usuario podría ser un compañero de equipo al que quieres notificar sobre tus actualizaciones de Grafana.
Sigue estos pasos para configurar tu cuenta de Vonage para Messages API:
Navega hasta el menú Configuración de API en el menú principal de tu panel de control de Vonage para ir a la sección Configuración de API de API. La configuración de API
En la sección de configuración de SMS, seleccione Messages API. Deje los demás ajustes en sus valores predeterminados.
Visite la página Aplicaciones y haga clic en el botón + Crear aplicación para crear una aplicación.
Introduzca un nombre en el campo Nombre nombre. Haga clic en el botón Generar clave pública y privada y privada. Se descargará un archivo de clave privada
private.keyse descargará en su equipo local.Seleccione Mensajes en la sección Capacidades sección.
Introduzca la URL de entrada y de estado que anotó al configurar Ngrok.
Haga clic en el botón Generar nueva aplicación para completar la creación. Luego, serás redirigido a la página de descripción general de la solicitud, donde también podrás vincular tu número de Vonage a la solicitud.
Nota: Consulta Administrar números con la CLI de Vonage para obtener una breve guía sobre cómo comprar un número de Vonage.
Debe anotar el IDENTIFICADOR DE LA SOLICITUD en la página de resumen de la aplicación, ya que lo necesitará en la próxima sesión. También debe anotar la ruta local donde se encuentra el archivo private.key archivo. Deben tener el siguiente aspecto:
Identificación de la solicitud: 53a2ed68-f2d8-498c-9b17-032669e3bf90
Ruta de la clave privada: /Users/Downloads/private.key
Enviar SMS al usuario
En esta subsección, enviarás la notificación webhook de Grafana a tu usuario a través de SMS. Puedes usar el SDK Python de Vonage para esta función en una aplicación Python. Utiliza el siguiente comando bash para instalar el SDK Python de Vonage en tu máquina local.
A continuación, añada el siguiente código a su script Python:
...
import vonage
def grafana_webhook():
if request.method == "POST":
...
client = vonage.Client(
application_id=YOUR_VONAGE_APPLICATION_ID,
private_key=YOUR_APPLICATION_PRIVATE_KEY_PATH,
)
notification = client.messages.send_message(
{
"channel": "sms",
"message_type": "text",
"from": YOUR_VONAGE_NUMBER,
"to": DESTINATION_PHONE_NUMBER,
"text": alert_description,
}
)
return "Webhook successfully delivered as a notification message."En el código anterior:
Usted inicializó el cliente Python SDK con la línea
client = vonage.Client(). Sustituya los caracteresYOUR_VONAGE_APPLICATION_IDyYOUR_APPLICATION_PRIVATE_KEY_PATHcon el ID de aplicación y ruta de la clave privada de la aplicación de Vonage que creaste anteriormente.A continuación, ha utilizado la función
send_message()en la líneanotification = client.messages.send_message()para enviar un mensaje con el cliente inicializado donde:"canal": es el modo del mensaje, SMS.
"tipo_mensaje formato de texto del mensaje que se va a enviar.
"de": el remitente del mensaje. Puedes usar tu número de Vonage aquí. Reemplaza YOUR_VONAGE_NUMBER por tu número comprado.
"a": el destinatario que recibe el SMS, un número de teléfono. Sustituya DESTINATION_PHONE_NUMBER por el número del destinatario.
"texto": el contenido del mensaje que se enviará, que es la cadena de descripción de la alerta de Grafana.
Has modificado la sentencia return para reflejar la acción cuando se ejecuta el código.
El código completo es el siguiente:
from flask import Flask, request
import vonage
app = Flask(__name__)
@app.route("/grafana-webhook", methods=["POST"])
def grafana_webhook():
if request.method == "POST":
data = request.json
alert_description = data["alerts"][0]["annotations"]["desc"]
print(alert_description)
client = vonage.Client(
application_id=YOUR_VONAGE_APPLICATION_ID,
private_key=YOUR_APPLICATION_PRIVATE_KEY_PATH,
)
notification = client.messages.send_message(
{
"channel": "sms",
"message_type": "text",
"from": YOUR_VONAGE_NUMBER,
"to": DESTINATION_PHONE_NUMBER,
"text": alert_description,
}
)
return "Webhook successfully delivered as a notification message."
if __name__ == "__main__":
app.run(host="", port=3000, debug=True) Probar la aplicación
Para probar el código y asegurarse de que la configuración funciona, vaya a Puntos de contacto en el panel de control de Grafana y seleccione el botón editar punto de contacto editar. Esto se muestra en la siguiente imagen.
edit-contact-button.png
Puede enviar una notificación de webhook de prueba en el Punto de contacto de prueba como se muestra en la siguiente imagen.
test-contact-point.png
Seleccione la opción Personalizado para enviar un mensaje personalizado de prueba
Escriba el resumen y la descripción que prefiera
Desplácese hacia abajo para hacer clic en el botón Enviar notificación de prueba botón
El destinatario debería recibir un mensaje de prueba como la siguiente captura de pantalla:
alert-from-grafana.png
Resumen
Este artículo ha proporcionado una guía sobre el uso del sistema de notificaciones webhook de Grafana para obtener y enviar alertas a tus usuarios mediante la API Messages API de Vonage. Hemos analizado la configuración de los paneles de Grafana, la creación de webhooks de Python con Flask y la configuración de una aplicación de Vonage que funcione con la Messages API.
Si tienes preguntas o comentarios, únete a nosotros en el Slack para desarrolladores de Vonage o envíanos un Tweet a Xanteriormente conocido como Twitter, y nos comunicaremos contigo. Gracias de nuevo por leer, ¡y te esperamos en el próximo!
Otros recursos
Consulte la documentación de Grafana para obtener más información Alertas configuración
Consulte más formas de utilizar la Messages API en su documentación
Compartir:
Jẹ́káyinOlúwa is a software craftsman and product manager passionate about technology and its impact on people. He works on product management, backend development, DevOps, technical writing, and community strategy. He enjoys dealing in the intersection of software, design, and human interaction. He likes reading and music.