CTC 教育サービス
[IT研修]注目キーワード Python Power Platform 最新技術動向 生成AI Docker Kubernetes
みなさん、こんにちは。
これまでの回で、ネットワーク機器から定期的に情報を取得し、そのデータをSQLiteデータベースに蓄積する仕組みを構築しました。今回はその次のステップとして、「収集したデータをレポートとしてExcel形式で出力する方法」について解説します。
今回のステップは、ネットワーク管理の現場において非常に重要な作業です。エンジニアはコマンドラインやデータベースで確認することが一般的ですが、上司や他部門と情報を共有する場合には、視覚的に分かりやすい形式でのドキュメントやレポートが求められます。Excel形式はレポートの代表格で、あらゆる用途に応用できます。
Excelでのレポート出力は、次のような目的で活用します。
用途に応じて、レポートの構成は柔軟に変えましょう。今回は、基本的な出力方法として、「1日分の監視データを1つのExcelファイルに出力」する形を紹介します。
今回は、主に次の2つのライブラリを使用します。
openpyxl をインストールしていない場合は、事前に、以下のコマンドでインストールしておきましょう。
pip install openpyxl
それでは、実際にレポートを作成するPythonスクリプトを紹介しましょう。このスクリプトでは、前回保存したSQLiteデータベース(network_monitor.db)から当日分のデータを取得し、それを「network_report_日付.xlsx」として出力します。
import sqlite3
from openpyxl import Workbook
from datetime import datetime
# 日付フィルタ(今日の日付)
today_str = datetime.now().strftime(’%Y-%m-%d’)
# データベース接続
conn = sqlite3.connect(’network_monitor.db’)
cur = conn.cursor()
# デバイスごとにレポートを出力
cur.execute(’’’
SELECT id, hostname, ip_address, timestamp, cpu_usage, memory_usage
FROM device_status
WHERE timestamp LIKE ?
’’’, (f’{today_str}%’,))
rows = cur.fetchall()
# Excel ワークブックの作成
wb = Workbook()
ws = wb.active
ws.title = ’Device Summary’
ws.append([’日時’, ’ホスト名’, ’IPアドレス’, ’CPU使用率(%)’, ’メモリ使用率(%)’])
for row in rows:
ws.append([row[3], row[1], row[2], round(row[4], 1), round(row[5], 1)])
# インターフェース統計も別シートに出力
ws2 = wb.create_sheet(title=’Interface Traffic’)
ws2.append([’日時’, ’ホスト名’, ’インターフェース名’, ’送信バイト’, ’受信バイト’])
for device_id, hostname, ip, timestamp, *_ in rows:
cur.execute(’’’
SELECT interface_name, tx_bytes, rx_bytes
FROM interface_traffic
WHERE device_id = ?
’’’, (device_id,))
intf_rows = cur.fetchall()
for intf_row in intf_rows:
ws2.append([timestamp, hostname, intf_row[0], intf_row[1], intf_row[2]])
# 保存
filename = f’network_report_{today_str}.xlsx’
wb.save(filename)
conn.close()
print(f’レポート出力完了: {filename}’)
このスクリプトのポイントは以下です。
上記のスクリプトはExcelでのレポート出力の基本形です。この基本形から、例えば以下のような応用を加えると実用性を高められます。
また、以下のような注意点もあります。必要に応じて改善が必要です。
今回は、SQLiteに保存されたネットワーク情報をExcel形式のレポートとして出力する方法を解説しました。シンプルなデータベース操作とOpenPyXLを組み合わせることで、日々の業務に役立つドキュメントを自動生成できます。このような仕組みを整えておくことで、定期報告やトラブル時の対応が格段に効率化されるだけでなく、情報の蓄積と活用によってネットワーク全体の健全性を長期的に維持できる基盤を作ることができます。
次回(第4回)は、これらの収集スクリプトや出力処理を「定期的に自動実行」する仕組みとして、cron や Windows タスクスケジューラなどを用いた自動化の仕組みづくりを解説します。どうぞお楽しみに。
[IT研修]注目キーワード Python Power Platform 最新技術動向 生成AI Docker Kubernetes