CTC 教育サービス
[IT研修]注目キーワード Python Power Platform 最新技術動向 生成AI Docker Kubernetes
みなさん、こんにちは。
これまで第1回から第4回にかけて、ネットワーク機器の状態を効率的に把握・管理するための仕組みとして、
といった工程を段階的に解説してきました。
今回はそれらの集大成として、収集・蓄積したネットワーク機器の状態情報を、Webブラウザ上で視覚的に確認できるダッシュボードとして表示する方法を紹介します。
情報収集やレポート出力は、手動で確認しにいかないと異常に気づきにくいという課題があります。こうした状況を改善するために有効なのが、常時モニタリングするダッシュボードです。ダッシュボードを活用すれば、CSVやExcelといった静的なレポートに頼らず、リアルタイムに近い感覚でネットワークの状態を把握することができます。また、ブラウザから簡単にアクセスできるインターフェースを整備することで、現場のオペレーターや管理者が即座に必要な情報へアクセスできる環境を整えることができます。
たとえば、
このようなリアルタイムの可視化によって、問題の早期発見と迅速な対応が可能になり、結果としてネットワーク全体の信頼性や安定性の向上にもつながります。
今回構築するダッシュボードは、次のような構成です。
今回は、SQLiteに蓄積されたネットワーク機器のリソース情報(CPU使用率とメモリ使用率)を、Webブラウザでグラフとして可視化するたします。以下がFlaskアプリ(app.py)です。
from flask import Flask, render_template, jsonify
import sqlite3
app = Flask(__name__)
def fetch_latest_data():
conn = sqlite3.connect(’network_monitor.db’)
cur = conn.cursor()
cur.execute(’’’
SELECT timestamp, cpu_usage, memory_usage
FROM device_status
ORDER BY timestamp DESC
LIMIT 20
’’’)
data = cur.fetchall()
conn.close()
return data[::-1] # 古い順に並べ替え
ルート(トップページ)
@app.route(’/’)
def index():
return render_template(’dashboard.html’)
data API(非同期でグラフ用データを取得)
@app.route(’/data’)
def data():
rows = fetch_latest_data()
result = {
’labels’: [r[0] for r in rows],
’cpu’: [r[1] for r in rows],
’memory’: [r[2] for r in rows]
}
return jsonify(result)
if __name__ == ’__main__’:
app.run(debug=True)
続いて、ネットワーク監視データ(CPU使用率・メモリ使用率)をブラウザ上でグラフ表示するためのHTMLテンプレートです。JavaScriptでデータを取得し、Chart.jsを使って描画します。
<!DOCTYPE html>
<html>
<head>
<title>Network Monitor</title>
<script src="<https://cdn.jsdelivr.net/npm/chart.js>"></script>
</head>
<body>
<h1>ネットワーク状況ダッシュボード</h1>
<canvas id="cpuChart" width="600" height="300"></canvas>
<canvas id="memoryChart" width="600" height="300"></canvas>
<script>
async function loadData() {
const res = await fetch(’/data’);
const data = await res.json();
const ctx1 = document.getElementById(’cpuChart’).getContext(’2d’);
new Chart(ctx1, {
type: ’line’,
data: {
labels: data.labels,
datasets: [{
label: ’CPU Usage (%)’,
data: data.cpu,
borderColor: ’red’,
fill: false
}]
}
});
const ctx2 = document.getElementById(’memoryChart’).getContext(’2d’);
new Chart(ctx2, {
type: ’line’,
data: {
labels: data.labels,
datasets: [{
label: ’Memory Usage (%)’,
data: data.memory,
borderColor: ’blue’,
fill: false
}]
}
});
}
loadData();
</script>
</body>
</html>
pip install flask
次のようなディレクトリ構成でファイルを作ります。
network_dashboard/
├── app.py
└── templates/
└── dashboard.html
ターミナルで app.py のあるディレクトリに移動し、以下を実行します。
python app.py
実行後、以下のように出力されたら、ブラウザで http://127.0.0.1:5000/ にアクセスします。ネットワークのCPU/メモリ使用率グラフが表示されます。
* Running on <http://127.0.0.1:5000/> (Press CTRL+C to quit)
初回はネットワーク機器から収集したデータがないので、テストデータを投入して表示を確認してみましょう。
以下のPythonスクリプトを app.py のあるディレクトリに作成して実行してください。
import sqlite3
from datetime import datetime, timedelta
import random
conn = sqlite3.connect(’network_monitor.db’)
cur = conn.cursor()
cur.execute(’CREATE TABLE IF NOT EXISTS device_status (id INTEGER PRIMARY KEY, hostname TEXT, ip_address TEXT, timestamp TEXT, cpu_usage REAL, memory_usage REAL)’)
now = datetime.now()
for i in range(20):
ts = (now - timedelta(minutes=5*i)).isoformat()
cur.execute(’INSERT INTO device_status (hostname, ip_address, timestamp, cpu_usage, memory_usage) VALUES (?, ?, ?, ?, ?)’,
(’router1’, ’192.168.1.1’, ts, random.uniform(5, 70), random.uniform(30, 90)))
conn.commit()
conn.close()
テストデータを投入し、ブラウザで「http://127.0.0.1:5000/」にアクセスすると、以下のような画面が表示されます。
上記のように、開発環境では「python app.py」で動作確認できますが、本番で運用するには以下のような構成が望ましいです。
また、機能として以下のような拡張をすることができます。
今回は、これまで蓄積してきたネットワーク情報をWebブラウザ上で視覚的に表示するダッシュボードの構築方法を解説しました。
これまでの5回で、以下の内容を説明しました。
これらすべてが連携し合うことで、運用の信頼性・効率性が向上するでしょう。
今回のダッシュボードはあくまで入門的な構成ですが、今後の拡張として以下のような展開も可能です。
ぜひ、皆さんの環境でも自由にカスタマイズしながら発展させてみてください。
[IT研修]注目キーワード Python Power Platform 最新技術動向 生成AI Docker Kubernetes