
Partager:
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.
Créer un système de surveillance de l'utilisation des disques à l'aide de l'API Messages de Vonage
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 :
Python 3.6+
Configurer une application Vonage via le CLI de Vonage
Installez la dernière version du CLI de Vonage sur votre machine de développement :
npm install --location=global @vonage/cliConfigurez votre système Vonage
API_KEYetAPI_SECRETà partir de la dernière étape :vonage config:set --apiKey=API_KEY --apiSecret=API_SECRETCréez une application In-App Messaging : Utilisez la commande
vonage apps:createet 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,
psutilpour 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
Créez un répertoire de projet localement : Par exemple,
mkdir disk_usage_monitor && cd disk_usage_monitor.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.Activez notre environnement virtuel à l'aide de la commande suivante :
source .venv/bin/activate.Dans le répertoire de notre projet, créez un fichier
requirements.txten utilisant la commandetouch requirements.txtet copiez les dépendances suivantes dans le fichier :
vonage==3.5.1
python-dotenv==1.0.0
psutil==5.9.5Pour installer les dépendances dans notre environnement virtuel, exécutez la commande suivante :
pip3 install -r requirements.txtCréez le fichier .env qui contiendra nos variables d'environnement à l'aide de la commande suivante
touch .envet 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_NUMBERAjoutez un fichier appelé
monitor.pyen utilisant la commandetouch monitor.pydans le répertoire de notre projet et y coller le contenu suivant :
Remarque :
psutil.disk_usagede la bibliothèquepsutilde 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.
Nous souhaitons recevoir des notifications lorsqu'un certain seuil est atteint sur notre appareil. Nous pouvons modifier notre fichier
monitor.pypour 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.pySous Windows, nous pouvons configurer notre programme comme une tâche programmée à exécuter quotidiennement en suivant les étapes suivantes :
Ouvrez le planificateur de tâches à partir du menu de démarrage.
Dans le panneau d'actions, sélectionnez l'option de création de tâche pour créer une nouvelle tâche cron.
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.
Sélectionnez l'onglet Déclencheurs et cliquez sur Nouveau pour ajouter un déclencheur.
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.
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.Dans la section "Ajouter des arguments", ajoutez le nom du fichier, par exemple
monitor.py.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:
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.