Mit einer einzigen Bibliothek können Sie eine Vielzahl von Systemmetriken überwachen und sicherstellen, dass alles reibungslos läuft.
Die meisten Unternehmen verlassen sich bei der Abwicklung ihrer Abläufe stark auf ihre IT-Infrastruktur. Ungeplante Systemausfälle oder Leistungseinbußen können zu Störungen, finanziellen Verlusten und Reputationsschäden führen.
Automatisierte Systemzustandsprüfungen sind von entscheidender Bedeutung, um sicherzustellen, dass die IT-Infrastruktur stabil und zuverlässig bleibt. Durch die Überwachung kritischer Kennzahlen und die rechtzeitige Erkennung von Anomalien können Sie Ausfallzeiten minimieren.
Definieren von Gesundheitsprüfungen
Es ist wichtig zu definieren, welche Gesundheitsprüfungen Sie auf Ihrem System durchführen möchten. Sie sollten klare Kriterien dafür festlegen, was Sie überwachen und warum. Beginnen Sie damit, die Hauptziele Ihres Systems zu identifizieren. Welche Funktionen oder Dienste bietet es?
Legen Sie dann Leistungsbenchmarks auf der Grundlage historischer Daten fest und stellen Sie sicher, dass Ihre Zustandsprüfungen die effiziente Nutzung der Systemressourcen bewerten. Definieren Sie abschließend die Schwellenwerte, die auf ein Problem hinweisen. Welchen Prozentsatz der Ressourcennutzung halten Sie für hoch oder niedrig? An welchem Punkt sollte das System eine Warnung auslösen?
Auswählen von Bibliotheken und Einrichten Ihrer Umgebung
Um den Systemüberwachungsprozess in Python zu automatisieren, benötigen Sie die folgenden Bibliotheken, die Ihnen beim Sammeln von Systemmetriken und der anschließenden Planung der Prüfungen helfen.
- psutil: Dies ist eine plattformübergreifende Bibliothek, die eine Schnittstelle zum Abrufen von Informationen zur Systemauslastung (CPU, Speicher, Festplatten, Netzwerk, Sensoren) bereitstellt.
- Zeitplan: Diese Bibliothek bietet eine einfache Möglichkeit, Aufgaben so zu planen, dass sie in bestimmten Intervallen ausgeführt werden.
- Zeit: Eine in Python integrierte Bibliothek, die Sie für zeitbezogene Vorgänge verwenden.
- Protokollierung: Eine weitere integrierte Bibliothek, die Sie zum Erstellen von Protokollen der Systemzustandsprüfungen verwenden.
Beginnen Sie mit der Einrichtung Erstellen einer neuen virtuellen Python-Umgebung. Dadurch werden mögliche Konflikte mit der Versionsbibliothek verhindert. Führen Sie dann den folgenden Terminalbefehl aus Installieren Sie die erforderlichen Bibliotheken mit Pip:
pip install psutil schedule
Sobald die Bibliotheken auf Ihrem System installiert sind, ist Ihre Umgebung bereit.
Der vollständige Quellcode ist in a verfügbar GitHub-Repository.
Importieren der erforderlichen Bibliotheken
Erstellen Sie ein neues Skript, Monitoring.py, und beginnen Sie mit dem Importieren der erforderlichen Bibliotheken:
import psutil
import schedule
import time
import logging
Durch den Import der Bibliotheken können Sie die von ihnen angebotenen Funktionen in Ihrem Code nutzen.
Protokollierung und Berichterstattung
Sie benötigen eine Möglichkeit, die Ergebnisse Ihrer Gesundheitschecks zu protokollieren. Die Protokollierung dient als wichtiges Werkzeug zur Erfassung und Aufbewahrung historischer Aufzeichnungen von Ereignissen und Debuggen von Problemen in Ihrem Code. Es spielt auch eine entscheidende Rolle bei der Leistungsanalyse.
Verwenden Sie die integrierte Protokollierungsbibliothek, um Ihre Protokolle für dieses Projekt zu erstellen. Sie können die Protokollmeldungen in einer Datei mit dem Namen speichern system_monitor.log.
# Function to log messages
deflog_message(message):
# Configure logging
logging.basicConfig(filename='system_monitor.log', level=logging.INFO,
format='%(asctime)s - %(message)s')
logging.info(message)
Drucken Sie zur Berichterstellung eine Warnmeldung auf der Konsole aus, die als sofortige Benachrichtigung über alle Probleme dient, die Ihrer Aufmerksamkeit bedürfen.
# Function to print alerts to the console
defprint_alert(message):
print(f"ALERT: {message}")
Die Health-Check-Funktionen nutzen diese Funktionen, um ihre relevanten Ergebnisse zu protokollieren und zu melden.
Erstellen von Health-Check-Funktionen
Definieren Sie für jede Integritätsprüfung eine Funktion, die einen spezifischen Test kapselt, der einen kritischen Aspekt Ihrer Infrastruktur bewertet.
Überwachung der CPU-Nutzung
Definieren Sie zunächst eine Funktion, die die CPU-Auslastung überwacht. Dies dient als entscheidender Indikator für die Gesamtleistung und Ressourcennutzung eines Systems. Übermäßige CPU-Auslastung führt zu Systemverlangsamungen, mangelnder Reaktionsfähigkeit und sogar Abstürzen, wodurch wichtige Dienste erheblich beeinträchtigt werden.
Durch regelmäßige Überprüfung der CPU-Auslastung und Festlegung geeigneter Schwellenwerte können Systemadministratoren Leistungsengpässe, ressourcenintensive Prozesse oder potenzielle Hardwareprobleme erkennen.
# Health check functions
defcheck_cpu_usage(threshold=50):
cpu_usage = psutil.cpu_percent(interval=1)
if cpu_usage > threshold:
message = f"High CPU usage detected: {cpu_usage}%"
log_message(message)
print_alert(message)
Die Funktion prüft die aktuelle CPU-Auslastung des Systems. Wenn die CPU-Auslastung den prozentualen Schwellenwert überschreitet, wird eine Meldung protokolliert, die auf eine hohe CPU-Auslastung hinweist, und eine Warnmeldung gedruckt.
Überwachung der Speichernutzung
Definieren Sie eine weitere Funktion, die die Speichernutzung überwacht. Durch regelmäßiges Verfolgen der Speichernutzung können Sie dies erreichen Speicherlecks erkennen, ressourcenintensive Prozesse und potenzielle Engpässe. Diese Methode verhindert Systemverlangsamungen, Abstürze und Ausfälle.
defcheck_memory_usage(threshold=80):
memory_usage = psutil.virtual_memory().percent
if memory_usage > threshold:
message = f"High memory usage detected: {memory_usage}%"
log_message(message)
print_alert(message)
Ähnlich wie bei der CPU-Auslastungsprüfung legen Sie einen Schwellenwert für eine hohe Speicherauslastung fest. Wenn die Speichernutzung den Schwellenwert überschreitet, wird eine Warnung protokolliert und gedruckt.
Überwachung des Speicherplatzes
Definieren Sie eine Funktion, die den Speicherplatz überwacht. Durch die kontinuierliche Überwachung der Verfügbarkeit von Speicherplatz können Sie potenziellen Problemen begegnen, die sich aus der Erschöpfung der Ressourcen ergeben. Wenn der Speicherplatz knapp wird, kann dies zu Systemabstürzen, Datenbeschädigung und Dienstunterbrechungen führen. Mithilfe von Speicherplatzprüfungen wird sichergestellt, dass ausreichend Speicherkapazität vorhanden ist.
defcheck_disk_space(path='/', threshold=75):
disk_usage = psutil.disk_usage(path).percent
if disk_usage > threshold:
message = f"Low disk space detected: {disk_usage}%"
log_message(message)
print_alert(message)
Diese Funktion untersucht die Speicherplatznutzung eines angegebenen Pfads. Der Standardpfad ist das Stammverzeichnis /. Wenn der Speicherplatz unter den Schwellenwert fällt, wird eine Warnung protokolliert und gedruckt.
Überwachung des Netzwerkverkehrs
Definieren Sie eine letzte Funktion, die den Datenfluss Ihres Systems überwacht. Es hilft bei der frühzeitigen Erkennung unerwarteter Spitzen im Netzwerkverkehr, die auf Sicherheitsverletzungen oder Infrastrukturprobleme hinweisen könnten.
defcheck_network_traffic(threshold=100 * 1024 * 1024):
network_traffic = psutil.net_io_counters().bytes_recv +\
psutil.net_io_counters().bytes_sent
if network_traffic > threshold:
message = f"High network traffic detected: {network_traffic:.2f} MB"
log_message(message)
print_alert(message)
Die Funktion überwacht den Netzwerkverkehr, indem sie die gesendeten und empfangenen Bytes summiert. Der Schwellenwert wird in Bytes angegeben. Wenn der Netzwerkverkehr den Schwellenwert überschreitet, wird eine Warnung protokolliert und gedruckt.
Implementierung der Überwachungslogik
Da Sie nun über die Health-Check-Funktionen verfügen, rufen Sie diese einfach nacheinander über eine Controller-Funktion auf. Sie können jedes Mal, wenn diese Gesamtprüfung ausgeführt wird, die Ausgabe drucken und eine Meldung protokollieren:
# Function to run health checks
defrun_health_checks():
print("Monitoring the system...")
log_message("Running system health checks...")check_cpu_usage()
check_memory_usage()
check_disk_space()
check_network_traffic()
log_message("Health checks completed.")
Diese Funktion führt alle Integritätsprüfungen durch und bietet eine einheitliche Ansicht des Gesundheitszustands Ihres Systems.
Planen automatisierter Prüfungen und Ausführen des Programms
Um die Überwachung in bestimmten Intervallen zu automatisieren, verwenden Sie die Zeitplanbibliothek. Sie können das Intervall nach Bedarf anpassen.
# Schedule health checks to run every minute
schedule.every(1).minutes.do(run_health_checks)
Führen Sie nun den Systemüberwachungsprozess in einer Endlosschleife aus.
# Main loop to run scheduled tasks
whileTrue:
schedule.run_pending()
time.sleep(1)
Diese Schleife prüft kontinuierlich, ob geplante Aufgaben vorliegen, und führt sie zu gegebener Zeit aus. Wenn Sie das Programm ausführen, sieht die Ausgabe wie folgt aus:
Das Programm zeichnet die Überwachungsprotokolle auf system_monitor.log Datei und zeigt eine Warnung auf dem Terminal an.
Weiterentwicklung des Systemüberwachungsprogramms
Diese Überwachungsprüfungen sind nicht die einzigen, die psutil unterstützt. Je nach Ihren Anforderungen können Sie auf ähnliche Weise weitere Überwachungsfunktionen hinzufügen.
Sie können die Berichtsfunktion auch verbessern, um E-Mail zu verwenden, anstatt eine einfache Nachricht auf der Konsole auszugeben.