サーバーのディスク使用量の監視は、最適なパフォーマンスを維持し、ダウンタイムを防ぐために重要です。このブログ投稿では、Python スクリプトを使用してディスク リソースの監視を自動化し、API を介してサーバーの健全性を更新する方法を検討します。また、スクリプトを定期的に実行する cron ジョブを設定する方法についても説明します。
以下は、ディスク リソースの監視を実行し、API 経由でサーバーの健全性を更新する Python スクリプトです。
Health API の作成については、このブログ投稿では取り上げていません。必要な場合はコメントしてください。API の作成手順も公開します。
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()
Resource クラスは、ファイル システム、ディスク サイズ、使用済みスペースなど、ディスク使用量に関連する属性を定義します。 ResourcesMonitor クラスは Resource を継承し、これらの属性を初期化します。
check_resource_usage メソッドは、Unix df -h コマンドを実行して、ディスク使用量の統計を取得します。出力を解析して、指定されたマウント パーティション (デフォルトは /) のディスク使用量を見つけます。ディスク使用量がしきい値を超えると、リソースの詳細が更新され、API 更新メソッドが呼び出されます。
update_resource_usage_api メソッドは、リソースの詳細を含む API リクエスト URL を構築し、サーバーの健全性を更新するための GET リクエストを送信します。 http://yourapi.com/update_server_health_by_server_id を実際の API エンドポイントに置き換えて、正しい API トークンを指定してください。
スクリプトを resource_monitor.py として保存し、Python 3 を使用して実行します。
$ 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'}}
30 分ごとのスクリプト実行を自動化するには、次のように cron ジョブを追加します。
*/30 * * * * python3 /home/ubuntu/resource_monitor.py -id=7 &
crontab -e を実行して上記の行を追加すると、cron ジョブを編集できます。これにより、スクリプトが 30 分ごとに実行され、サーバーの健全性データが最新の状態に保たれます。
ディスク リソースの監視とサーバーの健全性の更新を自動化することで、サーバーのパフォーマンスをプロアクティブに管理し、ディスク容量不足による潜在的な問題を回避できます。この Python スクリプトは開始点として機能し、特定のニーズに合わせてカスタマイズできます。
以上がPython を使用したディスク リソース使用量の監視とサーバーの健全性の更新の自動化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。