IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

Pythonでネットワーク自動化をしよう

CTC 教育サービス

 [IT研修]注目キーワード   Python  Power Platform  最新技術動向  生成AI  Docker  Kubernetes 

第34回 ネットワーク自動化実践レシピ(6)ダッシュボードの作成(1) (小澤昌樹) 2025年5月

みなさん、こんにちは。

今回からは、5回にわたって、Pythonを使ってネットワーク機器の情報収集・保存・可視化を行い、最終的にはリアルタイムダッシュボードを構築することを目指します。

具体的な進め方は次の通りです。

  1. ネットワーク機器から情報を自動収集する方法
    NAPALMやNetmikoなどのライブラリを用い、定期的に機器の状態(CPU使用率、メモリ使用率、インターフェースのトラフィックなど)を取得します。
  2. 収集した情報をデータベース(SQLite)に保存する仕組みの構築
    単なる一時データではなく、時系列データとして記録・管理できる形にします。
  3. Excelファイルへのエクスポート機能の実装
    管理レポート作成やエビデンス提出にも活用できるように、データベースからExcel形式への出力を行います。
  4. 収集を定期自動化する仕組み(cronなどによるスケジューリング)
    日次・週次で自動的に情報が更新される仕組みをつくり、手間をかけずに最新データが集まるようにします。
  5. 集めたデータをリアルタイムで可視化するダッシュボードの作成
    最終目標として、ブラウザ上でネットワークの状態をひと目で把握できるダッシュボードを構築します。

すべてを手動で行っていた従来のネットワーク管理を、自動化と可視化によってよりスマートに、より信頼性高く運用できることを目指しましょう。

では早速、「1. ネットワーク機器から情報を自動収集する方法」からはじめていきましょう。

1. ネットワーク機器から情報を自動収集する方法
はじめに

ネットワーク管理において、定期的な機器の状態把握は欠かせません。CPU使用率、メモリの消費状況、インターフェースのトラフィックなど、これらの情報を継続的に把握することで、障害の予兆を早期に検知し、トラブルを未然に防ぐことができます。

しかし、多数の機器を手動でログインして状態確認するのは、現実的ではありません。そこで今回は、Pythonのネットワーク自動化ライブラリ「NAPALM」「netmiko」を使って、情報をスクリプトで一括収集しましょう。

1. 収集対象とする情報

以下のような情報を定期的に取得することが目標です。

  • CPU 使用率
  • メモリ使用率
  • インターフェースごとのトラフィック統計(送受信バイトなど)
  • デバイスの稼働時間やホスト名などの基本情報

これらは、機器の健全性を監視する上で基本的かつ重要なデータです。

2. 使用ライブラリ
  • NAPALM:マルチベンダー対応の自動化フレームワークで、Cisco、Juniper、Yamahaなど主要なネットワーク機器ベンダーをサポートします。
  • netmiko:機器にSSH接続し、CLIコマンドを実行できるライブラリです。showコマンドによる情報取得に強みがあります。
3. NAPALMで状態を取得する例

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()
4. netmikoによるログ取得の例

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()
5. 機器リストを用いた一括取得

複数のネットワーク機器を対象とする場合、リストを使ってループ処理を行うことが基本です。


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