
Compartir:
Adrian is a problem solver and Python developer advocate. He works with various programming languages to solve engineering problems. Introduced to programming at age 16, Adrian has spent the last 8 years oscillating between backend development and automation. He lives in Nairobi and when not writing code he is most likely playing Call Of Duty or NBA 2K on his PlayStation, riding his bicycle or binge watching the latest series on Netflix.
Creación de un sistema de supervisión del uso del disco mediante la API de Messages de Vonage
Tiempo de lectura: 4 minutos
Introducción
El uso del disco es una métrica importante a seguir en la infraestructura de TI de cualquier organización. Sin conocer el uso del disco en un momento dado, una organización corre el riesgo de tener problemas de rendimiento en sus aplicaciones de producción en ejecución, así como un sobrecoste financiero debido a los costes repentinos incurridos en la actualización de la infraestructura existente.
Los proveedores modernos de infraestructuras en la nube, por ejemplo AWS, proporcionan sistemas de métricas avanzados con alarmas configuradas, pero tienen un coste adicional. El uso del disco es una métrica clave, y por una fracción del coste de los proveedores de la nube, puedes desarrollar tu propio sistema de monitorización del uso del disco completo con alertas. Genial, ¿verdad?
En esta guía, veremos exactamente cómo crear un sistema de monitoreo de uso de disco personalizado utilizando el lenguaje de programación Python y la API Messages API de Vonage. Ten en cuenta que podrás ejecutar este programa en tus servidores e incluso en tu máquina de desarrollo local.
Requisitos previos:
Python 3.6+
Configurar una aplicación de Vonage a través de la CLI de Vonage
Instala la última versión de la CLI de Vonage en tu equipo de desarrollo:
npm install --location=global @vonage/cliObtén tu API_KEY y API_SECRET de Vonage visitando la página de configuración en el panel de control
Configura tu Vonage
API_KEYyAPI_SECRETdel último paso:vonage config:set --apiKey=API_KEY --apiSecret=API_SECRETCrea una aplicación de mensajes vonage: Utilice el comando
vonage apps:createy siga las instrucciones en el modo CLI interactivo como se indica a continuación:
✔ Application Name … <insert any appropriate name>
✔ Select App Capabilities › <select Messages>
✔ Create messages webhooks? › (y/N)
✔ Allow use of data for AI training? Read data collection disclosure - https://help.nexmo.com/hc/en-us/articles/4401914566036 … <select either y/N> Nuestros objetivos
Queremos crear una aplicación ligera que haga lo siguiente:
Obtener nuestras estadísticas de uso de disco (ya sea en el servidor o en la máquina de desarrollo local). Nos basaremos en una librería Python
psutilpara darnos nuestras estadísticas de uso de disco.Establecer un umbral arbitrario, por ejemplo, el 50% del uso del disco, que nos permite enviar notificaciones cuando se alcanza este umbral.
Personaliza un mensaje que nos alerte cuando el uso de nuestro disco supere nuestro umbral. Confiamos en la API de Vonage para que nos envíe este mensaje.
Pasos
Cree un directorio de proyecto localmente: Por ejemplo,
mkdir disk_usage_monitor && cd disk_usage_monitor.Dentro del directorio de nuestro proyecto, crea un entorno virtual para mantener las dependencias de nuestro proyecto separadas de las dependencias globales de Python:
python3 -m venv .venv.Activamos nuestro entorno virtual mediante el siguiente comando:
source .venv/bin/activate.Dentro del directorio de nuestro proyecto, cree un archivo
requirements.txtcon el comandotouch requirements.txty copie las siguientes dependencias del proyecto en el archivo:
vonage==3.5.1
python-dotenv==1.0.0
psutil==5.9.5Para instalar las dependencias en nuestro entorno virtual, ejecute el siguiente comando:
pip3 install -r requirements.txtCrea el archivo .env que albergará nuestras variables de entorno utilizando el siguiente comando
touch .envy copia el siguiente contenido:
Nota: Cambia YOUR_VONAGE_API_KEY, YOUR_VONAGE_API_SECRET, THE_SENDER_NUMBER y THE_RECIPIENT_NUMBER con la información que se encuentra en el Panel de Vonage.
# Vonage Credentials
VONAGE_API_KEY=YOUR_VONAGE_API_KEY
VONAGE_API_SECRET=YOUR_VONAGE_API_SECRET
VONAGE_SENDER=THE_SENDER_NUMBER
RECIPIENT=THE_RECIPIENT_NUMBERAñade un archivo llamado
monitor.pyutilizando el comandotouch monitor.pyal directorio de nuestro proyecto y pega el siguiente contenido:
Nota:
psutil.disk_usagede la bibliotecapsutilde la biblioteca python, devuelve una tupla con nombre de la forma:sdiskusage(total=xxxxx, used=xxxxx, free=xxxx, percent=47.0). El valor porcentual es el que más nos interesa.
import psutil
import vonage
from dotenv import dotenv_values
# load your environment variables
config = dotenv_values(".env")
client = vonage.Client(key=config["VONAGE_API_KEY"], secret=config["VONAGE_API_SECRET"])
# get disk usage statistics for home directory
stats = psutil.disk_usage("/")
# device: give it an easily identifiable name e.g. server 1.89.200.4
device = "local dev machine"
# send out a message indicating the disk usage level
client.messages.send_message(
{
"channel": "sms",
"message_type": "text",
"from": config["VONAGE_SENDER"],
"to": config["RECIPIENT"],
"text": f"Your Disk Usage is at {stats[-1]} % on {device}.",
}
)Una vez hecho esto, puede ejecutar el archivo monitor.py utilizando el siguiente comando: python3 monitor.py.
Queremos recibir notificaciones cuando se alcance un determinado umbral en nuestro dispositivo. Podemos modificar nuestro archivo
monitor.pypara que nos envíe alertas cuando se alcance un determinado umbral:
# our previous code remains as is on this section
...
# the disk usage threshold. Adjust this to an acceptable threshold of your choice
threshold = 50
# if disk usage is above given threshold, send out an sms alert
if stats[-1] > threshold:
client.messages.send_message(
{
"channel": "sms",
"message_type": "text",
"from": config["VONAGE_SENDER"],
"to": config["RECIPIENT"],
"text": f"Your Disk Usage is at {stats[-1]} % on {device}. Delete some files soon to create some disk space!",
}
)
Bono
En sistemas Unix, podemos configurar este programa como una tarea cron que se ejecute diariamente (o según la frecuencia que prefiera) para realizar comprobaciones periódicas del uso del disco:
Edite su entrada crontab en una sesión de terminal utilizando el siguiente comando sudo crontab -e y añada la siguiente entrada cron para que se ejecute diariamente a las 6:00 AM:
0 6 * * * cd <project_directory> && .venv/bin/python3 monitor.pyEn Windows, podemos configurar nuestro programa como una tarea programada para que se ejecute diariamente siguiendo los siguientes pasos:
Abra el programador de tareas desde el menú de inicio.
En el panel de acciones, seleccione la opción crear tarea para crear una nueva tarea cron.
En la ventana de creación de tareas que aparece en su pantalla, añada un nombre para la tarea en la pestaña general y deje las demás opciones por defecto.
Seleccione la pestaña Disparadores y haga clic en Nuevo para añadir un disparador.
En la ventana de inicio de tarea, seleccione diario en el panel lateral, y la hora de inicio como 06:00:00 AM por ejemplo. Deje las demás opciones por defecto.
Crea una nueva acción desde el panel de acciones y en el panel de Nueva Acción, proporciona una ruta al ejecutable de python, que es el resultado de ejecutar el siguiente comando en un símbolo del sistema:
where python.En la sección de añadir argumentos, añada el nombre del archivo, por ejemplo
monitor.py.En la sección start in, añada la ruta al directorio del proyecto:
C:\Users\<user>\path\to\project-directory.
Conclusión
Hemos creado un sistema completo de supervisión del uso del disco con un componente de alerta que se basa en las API de Vonage para enviar alertas por SMS.
Si te ha gustado o tienes alguna pregunta, puedes enviarme un mensaje a Correo electrónico o ver el ejemplo de código completo en GitHub.
Vonage siempre agradece la participación de la comunidad. No dudes en unirte a Vonage en GitHub y en Slack de la comunidad de Vonage.
Compartir:
Adrian is a problem solver and Python developer advocate. He works with various programming languages to solve engineering problems. Introduced to programming at age 16, Adrian has spent the last 8 years oscillating between backend development and automation. He lives in Nairobi and when not writing code he is most likely playing Call Of Duty or NBA 2K on his PlayStation, riding his bicycle or binge watching the latest series on Netflix.