DjangoでPCのパフォーマンス状態を表示する

投稿日: 2024年1月26日

DjangoでPCやサーバーのCPU使用率やディスク使用率をHTMLテンプレートに可視化することは可能です。

これを実現するための一般的な手順は以下の通りです。

1.PC又はサーバーの状態取得の流れ

  1. サーバーの状態取得:
  2. データのDjangoビューへの組み込み:
  3. 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>

実行結果

以上になります。

これらの属性を使用することで、システムのメモリ使用状況を監視し、メモリリソースが不足している場合やメモリリークの兆候がある場合に迅速に対応することができます。特に、システムのパフォーマンス監視やトラブルシューティングにおいて重要な情報源となります

■.ダウンロードサービスのご案内

本記事で使用しているサンプルコードです。

注意:本記事の内容に関して運用した結果の影響については責任を負いかねます。あらかじめご了承ください。

記事