https://d226lax1qjow5r.cloudfront.net/blog/blogposts/create-a-disk-usage-monitoring-system-using-the-vonage-messages-api/disk-usage-monitoring-system.png

Créer un système de surveillance de l'utilisation des disques à l'aide de l'API Messages de Vonage

Publié le July 20, 2023

Temps de lecture : 4 minutes

Introduction

L'utilisation du disque est une mesure importante à suivre dans l'infrastructure informatique de toute organisation. Si elle ne connaît pas l'utilisation des disques à un moment donné, une organisation risque d'avoir des problèmes de performance dans ses applications de production, ainsi qu'un surcoût financier dû à des dépenses soudaines pour la mise à niveau de l'infrastructure existante.

Les fournisseurs d'infrastructure en nuage modernes, par exemple AWS, proposent des systèmes métriques avancés avec des alarmes configurées, mais ils ont un coût supplémentaire. L'utilisation du disque est une mesure clé, et pour une fraction du coût des fournisseurs d'infrastructure en nuage, vous pouvez développer votre propre système de surveillance de l'utilisation du disque, avec des alertes. Pas mal, non ?

Dans ce guide, nous allons voir exactement comment construire un système personnalisé de surveillance de l'utilisation du disque en utilisant le langage de programmation Python et l'API Messages de Vonage. Notez que vous pourrez exécuter ce programme sur vos serveurs et même sur votre machine de développement locale.

Prérequis :

Configurer une application Vonage via le CLI de Vonage

  1. Installez la dernière version du CLI de Vonage sur votre machine de développement : npm install --location=global @vonage/cli

  2. Obtenez votre API_KEY et API_SECRET de Vonage en visitant la page des paramètres sur le tableau de bord.

  3. Configurez votre système Vonage API_KEY et API_SECRET à partir de la dernière étape : vonage config:set --apiKey=API_KEY --apiSecret=API_SECRET

  4. Créez une application In-App Messaging : Utilisez la commande vonage apps:create et suivez les instructions en mode CLI interactif comme indiqué ci-dessous :

✔ 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>

Nos objectifs

Nous voulons créer une application légère qui effectue les opérations suivantes :

  • Obtenir nos statistiques d'utilisation du disque (soit sur le serveur, soit sur la machine de développement locale). Nous nous appuierons sur une bibliothèque Python, psutil pour nous fournir nos statistiques d'utilisation du disque.

  • Définir un seuil arbitraire, par exemple 50% de l'utilisation du disque, qui nous permet d'envoyer des notifications lorsque ce seuil est atteint.

  • Personnalisez un message qui nous alerte lorsque l'utilisation de notre disque dépasse notre seuil. Nous nous appuyons sur l'API de Vonage pour nous transmettre ce message.

Étapes

  1. Créez un répertoire de projet localement : Par exemple, mkdir disk_usage_monitor && cd disk_usage_monitor.

  2. Dans le répertoire de notre projet, créez un environnement virtuel pour séparer les dépendances de notre projet des dépendances globales de Python : python3 -m venv .venv.

  3. Activez notre environnement virtuel à l'aide de la commande suivante : source .venv/bin/activate.

  4. Dans le répertoire de notre projet, créez un fichier requirements.txt en utilisant la commande touch requirements.txt et copiez les dépendances suivantes dans le fichier :

vonage==3.5.1
python-dotenv==1.0.0
psutil==5.9.5
  1. Pour installer les dépendances dans notre environnement virtuel, exécutez la commande suivante : pip3 install -r requirements.txt

  2. Créez le fichier .env qui contiendra nos variables d'environnement à l'aide de la commande suivante touch .env et copiez le contenu suivant :

Note : Changement YOUR_VONAGE_API_KEY, YOUR_VONAGE_API_SECRET, THE_SENDER_NUMBER et THE_RECIPIENT_NUMBER avec l'information trouvée dans le tableau de bord 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_NUMBER
  1. Ajoutez un fichier appelé monitor.py en utilisant la commande touch monitor.py dans le répertoire de notre projet et y coller le contenu suivant :

Remarque :

  • psutil.disk_usage de la bibliothèque psutil de la bibliothèque python, renvoie un tuple nommé de la forme : sdiskusage(total=xxxxx, used=xxxxx, free=xxxx, percent=47.0). C'est la valeur en pourcentage qui nous intéresse le plus.

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}.",
	}
)

Vous pouvez ensuite exécuter le fichier monitor.py à l'aide de la commande suivante : python3 monitor.py.

  1. Nous souhaitons recevoir des notifications lorsqu'un certain seuil est atteint sur notre appareil. Nous pouvons modifier notre fichier monitor.py pour qu'il nous envoie des alertes dès qu'un seuil donné est atteint :

# 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!",
    	}
	)

Bonus

Sur les systèmes Unix, nous pouvons configurer ce programme comme une tâche cron qui s'exécute quotidiennement (ou selon la fréquence de votre choix) pour effectuer des contrôles réguliers de l'utilisation du disque :

Modifiez votre entrée crontab dans une session de terminal à l'aide de la commande suivante sudo crontab -e et ajoutez l'entrée cron suivante pour qu'elle s'exécute tous les jours à 6h00 :

0 6 * * * cd <project_directory> && .venv/bin/python3 monitor.py

Sous Windows, nous pouvons configurer notre programme comme une tâche programmée à exécuter quotidiennement en suivant les étapes suivantes :

  1. Ouvrez le planificateur de tâches à partir du menu de démarrage.

  2. Dans le panneau d'actions, sélectionnez l'option de création de tâche pour créer une nouvelle tâche cron.

  3. Dans la fenêtre de création de tâche qui s'affiche à l'écran, ajoutez un nom à la tâche dans l'onglet général et laissez les autres options par défaut.

  4. Sélectionnez l'onglet Déclencheurs et cliquez sur Nouveau pour ajouter un déclencheur.

  5. Dans la fenêtre de démarrage de la tâche, sélectionnez quotidien dans le panneau latéral, et l'heure de démarrage 06:00:00 AM par exemple. Laissez les autres options par défaut.

  6. Créez une nouvelle action à partir du panneau Actions et, dans le panneau Nouvelle action, indiquez le chemin d'accès à l'exécutable python, qui est le résultat de l'exécution de la commande suivante dans une invite de commande : where python.

  7. Dans la section "Ajouter des arguments", ajoutez le nom du fichier, par exemple monitor.py.

  8. Dans la section "start in", ajoutez le chemin d'accès au répertoire du projet : C:\Users\<user>\path\to\project-directory.

Conclusion

Nous avons mis en place un système complet de surveillance de l'utilisation du disque avec un composant d'alerte qui s'appuie sur les API de Vonage pour envoyer des alertes par SMS.

Si vous avez apprécié cet article ou si vous avez d'autres questions, vous pouvez m'envoyer un message à l'adresse suivante Courriel ou voir l'exemple de code complet sur GitHub.

Vonage accueille toujours favorablement l'implication de la communauté. N'hésitez pas à rejoindre Vonage sur GitHub et sur Communauté Vonage Slack.

Partager:

https://a.storyblok.com/f/270183/400x400/d6b5221cb3/adrian-francis.png
Adrian Francis

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.