DjangoでPCやサーバーのCPU使用率やディスク使用率をHTMLテンプレートに可視化することは可能です。
これを実現するための一般的な手順は以下の通りです。
1.PC又はサーバーの状態取得の流れ
- サーバーの状態取得:
- データのDjangoビューへの組み込み:
- HTMLテンプレートでの表示
2.psutil
のインストール
psutil
はPythonで使用されるクロスプラットフォームのライブラリで、プロセスとシステムの利用(CPU、メモリ、ディスク、ネットワークなど)に関する情報を取得するためのものです。このライブラリは、システム監視、プロファイリング、リミッティングプロセスリソース、プロセスの管理などの目的でよく使用されます。
psutil
ライブラリをインストールします。これは通常 pip install psutil
コマンドを使用して行います。
pip install psutil
以下はDjangoのコードになります
views.py
import psutil
from django.views.generic import TemplateView
class IndexView(TemplateView):
template_name = 'index.html'
def get_context_data(self, **kwargs):
# 親クラスの get_context_data を呼び出す
context = super().get_context_data(**kwargs)
# CPU 使用率の取得
context['cpu_usage'] = psutil.cpu_percent(interval=1)
# ディスク使用率と容量の取得
disk = psutil.disk_usage('/')
context['disk_usage'] = disk.percent
context['disk_total'] = disk.total
context['disk_used'] = disk.used
# メモリ使用率と容量の取得
mem = psutil.virtual_memory()
context['memory_usage'] = mem.percent
context['memory_total'] = mem.total
context['memory_used'] = mem.used
return context
psutil.cpu_percent(interval=1) は psutil ライブラリにおいて、CPUの使用率をパーセンテージで取得するための関数です。この関数は、特定の時間間隔でCPU使用率を計測し、その平均値をパーセンテージで返します。
interval パラメータは、計測の時間間隔(秒)を指定します。この例では interval=1 が指定されているため、1秒間の平均CPU使用率が計算されます。
disk.percent:ディスクの使用率(パーセンテージ)。ディスク全体の容量に対して、どの程度使用されているかをパーセンテージで表します。例えば、disk.percent が 50 なら、ディスク容量の50%が使用中であることを意味します。
disk.total:ディスクの総容量(バイト単位)。ディスク全体のストレージ容量を示します。
disk.used:使用中のディスク容量(バイト単位)。ディスクの総容量のうち、実際に使用されている部分の容量を示します。
mem.percent:メモリの使用率(パーセンテージ)。システムの全体的なメモリ容量に対して、現在使用中のメモリの割合をパーセンテージで示します。例えば、mem.percent が 70 であれば、利用可能なメモリの70%が使用中であることを意味します。
mem.total:システムの総メモリ容量(バイト単位)。システムに物理的に搭載されている全メモリの容量を示します。
mem.used:使用中のメモリ量(バイト単位)。システムの総メモリ容量のうち、現在使用されているメモリの量を示します。
urls.py
from django.urls import path
from . import views
app_name = 'myapp'
urlpatterns = [
path('', views.IndexView.as_view(), name='pc_status'),
]
index.html
<!DOCTYPE html>
<html>
<head>
<title>管理設定</title>
</head>
<body>
<h1>pc状態</h1>
<p>CPU 使用率: {{ cpu_usage }}%</p>
<p>ディスク使用率: {{ disk_usage }}%</p>
<p>ディスク全体容量: {{ disk_total|filesizeformat }}</p>
<p>ディスク使用量: {{ disk_used|filesizeformat }}</p>
<p>メモリ使用率: {{ memory_usage }}%</p>
<p>メモリ全体容量: {{ memory_total|filesizeformat }}</p>
<p>メモリ使用量: {{ memory_used|filesizeformat }}</p>
</body>
</html>
実行結果
以上になります。
これらの属性を使用することで、システムのメモリ使用状況を監視し、メモリリソースが不足している場合やメモリリークの兆候がある場合に迅速に対応することができます。特に、システムのパフォーマンス監視やトラブルシューティングにおいて重要な情報源となります
■.ダウンロードサービスのご案内
本記事で使用しているサンプルコードです。
注意:本記事の内容に関して運用した結果の影響については責任を負いかねます。あらかじめご了承ください。