Die Überwachung der Festplattennutzung des Servers ist entscheidend für die Aufrechterhaltung einer optimalen Leistung und die Vermeidung von Ausfallzeiten. In diesem Blogbeitrag erfahren Sie, wie Sie die Überwachung von Festplattenressourcen mithilfe eines Python-Skripts automatisieren und den Serverzustand über eine API aktualisieren können. Wir besprechen auch, wie man einen Cron-Job einrichtet, um das Skript in regelmäßigen Abständen auszuführen.
Unten finden Sie das Python-Skript, das die Überwachung der Festplattenressourcen durchführt und den Serverzustand über eine API aktualisiert.
Die Erstellung von Gesundheits-APIs wird in diesem Blogbeitrag nicht behandelt. Kommentieren Sie, wenn Sie dies auch benötigen, damit ich diese Schritte zur API-Erstellung ebenfalls veröffentlichen werde.
import subprocess import requests import argparse class Resource: file_system = '' disk_size = 0.0 used = 0.0 avail = 0.0 use_percent = 0.0 mounted_on = 0.0 disk_free_threshold = 1 mount_partition = "/" class ResourcesMonitor(Resource): def __init__(self): self.__file_system = Resource.file_system self.__disk_size = Resource.disk_size self.__used = Resource.used self.__avail = Resource.avail self.__use_percent = Resource.use_percent self.__mounted_on = Resource.mounted_on self.__disk_free_threshold = Resource.disk_free_threshold self.__mount_partition = Resource.mount_partition def show_resource_usage(self): """ Print the resource usage of disk. """ print("file_system", "disk_size", "used", "avail", "use_percent", "mounted_on") print(self.__file_system, self.__disk_size, self.__used, self.__avail, self.__use_percent, self.__mounted_on) def check_resource_usage(self): """ Check the disk usage by running the Unix 'df -h' command. """ response_df = subprocess.Popen(["df", "-h"], stdout=subprocess.PIPE) for line in response_df.stdout: split_line = line.decode().split() if split_line[5] == self.__mount_partition: if int(split_line[4][:-1]) > self.__disk_free_threshold: self.__file_system, self.__disk_size, self.__used = split_line[0], split_line[1], split_line[2] self.__avail, self.__use_percent, self.__mounted_on = split_line[3], split_line[4], split_line[5] self.show_resource_usage() self.update_resource_usage_api(self) def update_resource_usage_api(self, resource): """ Call the update API using all resource details. """ update_resource_url = url.format( resource.__file_system, resource.__disk_size, resource.__used, resource.__avail, resource.__use_percent, resource_id ) print(update_resource_url) payload = {} files = {} headers = { 'token': 'Bearer APITOKEN' } try: response = requests.request("GET", update_resource_url, headers=headers, data=payload, files=files) if response.ok: print(response.json()) except Exception as ex: print("Error while calling update API") print(ex) if __name__ == '__main__': url = "http://yourapi.com/update_server_health_by_server_id?path={}&size={}" \ "&used={}&avail={}&use_percent={}&id={}" parser = argparse.ArgumentParser(description='Disk Resource Monitor') parser.add_argument('-id', metavar='id', help='ID record of server', default=7, type=int) args = parser.parse_args() resource_id = args.id print(resource_id) resource_monitor = ResourcesMonitor() resource_monitor.check_resource_usage()
Die Ressourcenklasse definiert die Attribute im Zusammenhang mit der Festplattennutzung, wie z. B. Dateisystem, Festplattengröße, belegter Speicherplatz und mehr. Die ResourcesMonitor-Klasse erbt von Resource und initialisiert diese Attribute.
Die Methode check_resource_usage führt den Unix-Befehl df -h aus, um Statistiken zur Festplattennutzung abzurufen. Es analysiert die Ausgabe, um die Festplattennutzung der angegebenen Mount-Partition zu ermitteln (Standard ist /). Wenn die Festplattennutzung den Schwellenwert überschreitet, werden die Ressourcendetails aktualisiert und die API-Aktualisierungsmethode aufgerufen.
Die Methode update_resource_usage_api erstellt die API-Anfrage-URL mit den Ressourcendetails und sendet eine GET-Anfrage, um den Serverzustand zu aktualisieren. Stellen Sie sicher, dass Sie http://yourapi.com/update_server_health_by_server_id durch Ihren tatsächlichen API-Endpunkt ersetzen und das richtige API-Token bereitstellen.
Speichern Sie das Skript als resources_monitor.py und führen Sie es mit Python 3 aus.
$ python3 resource_monitor.py -id=7 Output: file_system disk_size used avail use_percent mounted_on /dev/root 39G 31G 8.1G 80% / API GET Request: http://yourapi.com/update_server_health_by_server_id?path=/dev/root&size=39G&used=31G&avail=8.1G&use_percent=80%&id=7 Response {'success': 'Servers_health data Updated.', 'data': {'id': 7, 'server_id': 1, 'server_name': 'web-server', 'server_ip': '11.11.11.11', 'size': '39G', 'path': '/dev/root', 'used': '31G', 'avail': '8.1G', 'use_percent': '80%', 'created_at': '2021-08-28T13:45:28.000000Z', 'updated_at': '2024-10-27T08:02:43.000000Z'}}
Um die Skriptausführung alle 30 Minuten zu automatisieren, fügen Sie wie folgt einen Cron-Job hinzu:
*/30 * * * * python3 /home/ubuntu/resource_monitor.py -id=7 &
Sie können die Cron-Jobs bearbeiten, indem Sie crontab -e ausführen und die obige Zeile hinzufügen. Dadurch wird sichergestellt, dass das Skript alle 30 Minuten ausgeführt wird und Ihre Serverzustandsdaten auf dem neuesten Stand bleiben.
Durch die Automatisierung der Festplattenressourcenüberwachung und Serverzustandsaktualisierungen können Sie die Leistung Ihres Servers proaktiv verwalten und potenzielle Probleme aufgrund von Speicherplatzmangel vermeiden. Dieses Python-Skript dient als Ausgangspunkt und kann an Ihre spezifischen Bedürfnisse angepasst werden.
Das obige ist der detaillierte Inhalt vonAutomatisieren Sie die Überwachung der Festplattenressourcennutzung und Serverzustandsaktualisierungen mit Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!