CTC 教育サービス
[IT研修]注目キーワード Python Power Platform 最新技術動向 生成AI Docker Kubernetes
みなさん、こんにちは。
今回からは、5回にわたって、Pythonを使ってネットワーク機器の情報収集・保存・可視化を行い、最終的にはリアルタイムダッシュボードを構築することを目指します。
具体的な進め方は次の通りです。
すべてを手動で行っていた従来のネットワーク管理を、自動化と可視化によってよりスマートに、より信頼性高く運用できることを目指しましょう。
では早速、「1. ネットワーク機器から情報を自動収集する方法」からはじめていきましょう。
ネットワーク管理において、定期的な機器の状態把握は欠かせません。CPU使用率、メモリの消費状況、インターフェースのトラフィックなど、これらの情報を継続的に把握することで、障害の予兆を早期に検知し、トラブルを未然に防ぐことができます。
しかし、多数の機器を手動でログインして状態確認するのは、現実的ではありません。そこで今回は、Pythonのネットワーク自動化ライブラリ「NAPALM」「netmiko」を使って、情報をスクリプトで一括収集しましょう。
以下のような情報を定期的に取得することが目標です。
これらは、機器の健全性を監視する上で基本的かつ重要なデータです。
from napalm import get_network_driver
device_info = {
’hostname’: ’192.168.1.1’,
’username’: ’admin’,
’password’: ’admin123’,
’platform’: ’ios’ # ’ios’はCisco機器、Yamahaの場合は’yamaha’など
}
driver = get_network_driver(device_info[’platform’])
device = driver(device_info[’hostname’], device_info[’username’], device_info[’password’])
device.open()
# 基本情報
facts = device.get_facts()
print(”ホスト名:”, facts[’hostname’])
print(”稼働時間:”, facts[’uptime’])
# ハードウェアの状態
env = device.get_environment()
cpu_usage = env[’cpu’][0][’usage’]
memory = env[’memory’]
print(f”CPU使用率: {cpu_usage}%”)
print(f”メモリ使用量: {memory[’used_ram’]} / {memory[’available_ram’]}”)
# インターフェース統計
intf_counters = device.get_interfaces_counters()
for intf, stats in intf_counters.items():
print(f”{intf} - 送信: {stats[’tx_octets’]} bytes, 受信: {stats[’rx_octets’]} bytes”)
device.close()
from netmiko import ConnectHandler
device = {
’device_type’: ’cisco_ios’,
’host’: ’192.168.1.1’,
’username’: ’admin’,
’password’: ’admin123’
}
net_connect = ConnectHandler(**device)
logs = net_connect.send_command(”show logging”)
print(logs)
net_connect.disconnect()
複数のネットワーク機器を対象とする場合、リストを使ってループ処理を行うことが基本です。
devices = [
{’hostname’: ’192.168.1.1’, ’username’: ’admin’, ’password’: ’admin123’, ’platform’: ’ios’},
{’hostname’: ’192.168.1.2’, ’username’: ’admin’, ’password’: ’admin123’, ’platform’: ’ios’}
]
for info in devices:
driver = get_network_driver(info[’platform’])
device = driver(info[’hostname’], info[’username’], info[’password’])
device.open()
facts = device.get_facts()
print(f”{facts[’hostname’]} の情報を取得しました”)
device.close()
今回は、NAPALMやnetmikoを使ってネットワーク機器の状態情報を自動で取得する方法を紹介しました。これらのライブラリを活用することで、手動でのログインや確認作業を排除し、定期的かつ一貫性のある情報収集が可能になります。
今回紹介したスクリプトは、cronやTask Schedulerなどを使って定期的に自動実行するようにします。そして、取得したデータをSQLiteデータベースに保存する処理を追加していきます。最終的には、データベースに蓄積されたデータを使用してフロントエンドでグラフ表示などに活用できるようにしていきます。
次回は、この取得したデータを一時的なものではなく、データベースに保存し、時系列で分析できる形にしていく方法「2.収集した情報をデータベース(SQLite)に保存する仕組みの構築」について解説します。どうぞお楽しみに。
[IT研修]注目キーワード Python Power Platform 最新技術動向 生成AI Docker Kubernetes