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

Erstellen eines Systems zur Überwachung der Festplattennutzung mit der Vonage Messages API

Zuletzt aktualisiert am July 20, 2023

Lesedauer: 3 Minuten

Einführung

Die Festplattennutzung ist eine wichtige Kennzahl, die in der IT-Infrastruktur eines jeden Unternehmens überwacht werden muss. Ohne Kenntnis der Festplattennutzung zu einem bestimmten Zeitpunkt riskiert ein Unternehmen Leistungsprobleme bei seinen produktiv arbeitenden Anwendungen sowie finanzielle Einbußen aufgrund plötzlicher Kosten für die Aufrüstung der bestehenden Infrastruktur.

Moderne Cloud-Infrastrukturanbieter wie AWS bieten fortschrittliche Kennzahlensysteme mit konfigurierten Alarmen an, die jedoch mit zusätzlichen Kosten verbunden sind. Die Festplattennutzung ist eine wichtige Kennzahl, und für einen Bruchteil der Kosten von Cloud-Anbietern können Sie Ihr eigenes System zur Überwachung der Festplattennutzung mit Warnmeldungen entwickeln. Cool, nicht wahr?

In diesem Leitfaden wird genau beschrieben, wie man ein benutzerdefiniertes System zur Überwachung der Festplattennutzung mit der Programmiersprache Python und der Vonage Messages API erstellt. Beachten Sie, dass Sie dieses Programm auf Ihren Servern und sogar auf Ihrem lokalen Entwicklungsrechner ausführen können.

Voraussetzungen:

Einrichten einer Vonage-Anwendung über die Vonage CLI

  1. Installieren Sie die neueste Version der Vonage CLI auf Ihrem Entwicklungsrechner: npm install --location=global @vonage/cli

  2. Holen Sie sich Ihren Vonage API_KEY und API_SECRET, indem Sie die Einstellungsseite auf dem Dashboard besuchen

  3. Konfigurieren Sie Ihr Vonage API_KEY und API_SECRET aus dem letzten Schritt: vonage config:set --apiKey=API_KEY --apiSecret=API_SECRET

  4. Erstellen Sie eine Vonage-Nachrichten-App: Verwenden Sie den Befehl vonage apps:create und folgen Sie den Aufforderungen im interaktiven CLI-Modus wie unten beschrieben:

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

Unsere Ziele

Wir wollen eine leichtgewichtige Anwendung entwickeln, die Folgendes tut:

  • Abrufen unserer Festplattennutzungsstatistiken (entweder auf dem Server oder dem lokalen Entwicklungsrechner). Wir werden uns auf eine Python-Bibliothek verlassen, psutil um unsere Festplattennutzungsstatistiken zu erhalten.

  • Legen Sie einen beliebigen Schwellenwert fest, z. B. 50 % der Festplattennutzung, bei dessen Erreichen wir Benachrichtigungen versenden können.

  • Passen Sie eine Nachricht an, die uns benachrichtigt, wenn die Festplattenauslastung unseren Schwellenwert überschreitet. Wir verlassen uns auf die Vonage-API, um diese Nachricht an uns zu übermitteln.

Schritte

  1. Erstellen Sie ein lokales Projektverzeichnis: Zum Beispiel, mkdir disk_usage_monitor && cd disk_usage_monitor.

  2. Erstellen Sie in unserem Projektverzeichnis eine virtuelle Umgebung, um unsere Projektabhängigkeiten von den globalen Python-Abhängigkeiten zu trennen: python3 -m venv .venv.

  3. Aktivieren Sie unsere virtuelle Umgebung mit folgendem Befehl: source .venv/bin/activate.

  4. Erstellen Sie in unserem Projektverzeichnis eine Datei requirements.txt mit dem Befehl touch requirements.txt und kopieren Sie die folgenden Projektabhängigkeiten in diese Datei:

vonage==3.5.1
python-dotenv==1.0.0
psutil==5.9.5
  1. Um die Abhängigkeiten in unserer virtuellen Umgebung zu installieren, führen Sie den folgenden Befehl aus: pip3 install -r requirements.txt

  2. Erstellen Sie die Datei .env, in der unsere Umgebungsvariablen gespeichert werden, mit folgendem Befehl touch .env und kopieren Sie den folgenden Inhalt:

Anmerkung: Änderung YOUR_VONAGE_API_KEY, YOUR_VONAGE_API_SECRET, THE_SENDER_NUMBER und THE_RECIPIENT_NUMBER mit den Informationen, die im Vonage Dashboard.

# 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. Fügen Sie eine Datei namens monitor.py mit dem Befehl touch monitor.py in unser Projektverzeichnis ein und fügen Sie den folgenden Inhalt ein:

Anmerkung:

  • psutil.disk_usage aus der psutil python library, gibt ein benanntes Tupel der Form: sdiskusage(total=xxxxx, used=xxxxx, free=xxxx, percent=47.0). Der Prozentwert ist für uns von größtem Interesse.

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

Damit können Sie die Datei monitor.py Datei mit dem folgenden Befehl ausführen: python3 monitor.py.

  1. Wir möchten Benachrichtigungen erhalten, sobald ein bestimmter Schwellenwert auf unserem Gerät erreicht wird. Wir können unsere monitor.py Datei so ändern, dass sie uns Warnungen sendet, sobald ein bestimmter Schwellenwert erreicht wird:

# 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

Auf Unix-Systemen können wir dieses Programm als Cron-Job einrichten, der täglich (oder je nach gewünschter Häufigkeit) ausgeführt wird, um regelmäßige Überprüfungen der Festplattennutzung durchzuführen:

Bearbeiten Sie Ihren crontab-Eintrag in einer Terminalsitzung mit folgendem Befehl sudo crontab -e und fügen Sie den folgenden Cron-Eintrag hinzu, der täglich um 6:00 Uhr morgens ausgeführt wird:

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

Unter Windows können wir unser Programm mit den folgenden Schritten als geplante Aufgabe für die tägliche Ausführung einrichten:

  1. Öffnen Sie den Aufgabenplaner über das Startmenü.

  2. Wählen Sie in der Aktionsleiste die Option Aufgabe erstellen, um einen neuen Cron-Job zu erstellen.

  3. Fügen Sie im Fenster "Aufgabe erstellen", das auf Ihrem Bildschirm erscheint, auf der Registerkarte "Allgemein" einen Namen für die Aufgabe hinzu und belassen Sie die anderen Optionen als Standard.

  4. Wählen Sie die Registerkarte "Auslöser" und klicken Sie auf "Neu", um einen Auslöser hinzuzufügen.

  5. Wählen Sie im Fenster "Aufgabe beginnen" im Seitenbereich "Täglich" und als Startzeit z. B. 06:00:00 Uhr. Belassen Sie die anderen Optionen als Standard.

  6. Erstellen Sie eine neue Aktion im Aktionenbedienfeld und geben Sie im Bedienfeld "Neue Aktion" einen Pfad zur ausführbaren Python-Datei an, die sich aus der Ausführung des folgenden Befehls in einer Eingabeaufforderung ergibt: where python.

  7. Fügen Sie im Abschnitt "Argumente hinzufügen" den Dateinamen hinzu, z. B. monitor.py.

  8. Fügen Sie im Abschnitt start in den Pfad zum Projektverzeichnis hinzu: C:\Users\<user>\path\to\project-directory.

Schlussfolgerung

Wir haben ein vollwertiges System zur Überwachung der Festplattennutzung mit einer Warnkomponente eingerichtet, die sich auf die Vonage-APIs stützt, um SMS-Warnungen zu versenden.

Wenn Ihnen das gefallen hat oder Sie weitere Fragen haben, können Sie mir eine Nachricht schicken an E-Mail oder sehen Sie sich das vollständige Codebeispiel auf GitHub.

Vonage begrüßt immer die Beteiligung der Community. Bitte werden Sie Mitglied bei Vonage auf GitHub und dem Vonage Community Slack.

Teilen Sie:

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.