CTC 教育サービス
[IT研修]注目キーワード Python Power Platform 最新技術動向 生成AI Docker Kubernetes
みなさん、こんにちは。
これまでのコラムでは、ネットワーク管理を効率化するための自動化レシピを紹介してきました。ネットワーク機器の状態モニタリングやログの一括収集から始まり、ネットワーク構成変更のバージョン管理やExcelを活用したインベントリ管理、さらにはネットワーク構成のコンプライアンスチェック、セキュリティ対策などの自動化手法を解説してきました。
これまでは、情報収集や構成管理、セキュリティ対策といったところを焦点としてきましたが、今回は、ネットワークパフォーマンスの監視と迅速な障害対応を自動化する方法を紹介します。
障害の早期発見と復旧が可能になれば、安定したネットワーク運用を実現できます。しかし、手動で行う監視や障害対応は、ヒューマンエラーを引き起こしやすく、対応の遅れが発生することもあります。作業を自動化することで、リアルタイムの監視と迅速な復旧作業が実現でき、管理業務を効率化することができるでしょう。
今回は、次の2つの自動化のシナリオを紹介します。
なお、今回はヤマハ機器を使用します。ヤマハ機器は独自のCLIコマンドセットを持っているため、Netmiko や NAPALM のヤマハ対応機能を活用して、障害検出と復旧を自動化することが可能です。show status や show interface を使用してインターフェースの状態を監視したり、異常が発生した際に shutdown コマンドを送信したりすることができます。
ネットワークのパフォーマンス低下を早期に検出して対応するための監視システムを構築します。リアルタイムに状態を把握することで、異常が発生した際の迅速な対応を可能にし、ダウンタイムを最小限に抑えることができます。
from napalm import get_network_driver
from openpyxl import Workbook
import requests
# デバイス情報
devices = [
{’hostname’: ’192.168.100.1’, ’username’: ’admin’, ’password’: ’admin123’, ’platform’: ’yamaha’}
]
# Excelレポートの準備
wb = Workbook()
ws = wb.active
ws.title = "192.168.100.1"
ws.append([’Hostname’, ’CPU Usage’, ’Memory Usage’, ’Interface Traffic’])
# ネットワーク状態の監視
for device_info in devices:
driver = get_network_driver(device_info[’platform’])
device = driver(device_info[’hostname’], device_info[’username’], device_info[’password’])
device.open()
# 情報収集
env = device.get_environment()
interfaces = device.get_interfaces_counters()
cpu_usage = env[’cpu’][0][’usage’]
memory_usage = env[’memory’][’used_ram’] / env[’memory’][’available_ram’] * 100
traffic = interfaces[’eth0’][’tx_octets’]
# Excelに記録
ws.append([device_info[’hostname’], cpu_usage, memory_usage, traffic])
# 80%を超えたらアラート送信
# YOUR_SLACK_TOKEN にはSlackのトークンを設定する
if cpu_usage > 80:
requests.post("<https://slack.com/api/chat.postMessage>", {
"token": "YOUR_SLACK_TOKEN",
"channel": "#network-alerts",
"text": f"{device_info[’hostname’]} で高負荷検出!\\nCPU: {cpu_usage}% / メモリ: {memory_usage}%"
})
device.close()
wb.save(’network_performance.xlsx’)
ヤマハ機器のインターフェースで障害が発生した場合、その影響を最小限に抑えるためシャットダウンを実施、そのあとの復旧作業までを自動化します。これによって、障害発生から復旧までの対応時間を短縮し、システムの安定性を確保します。
from netmiko import ConnectHandler
from openpyxl import Workbook
from ping3 import ping
import subprocess
from datetime import datetime
# デバイス情報
devices = [
{’device_type’: ’yamaha’, ’host’: ’192.168.1.1’, ’username’: ’admin’, ’password’: ’admin123’}
]
# Excelレポートの準備
wb = Workbook()
ws = wb.active
ws.title = "192.168.1.1"
ws.append([’Hostname’, ’Interface’, ’Status’, ’Timestamp’])
# インシデント対応の自動化
for device_info in devices:
try:
# デバイスへSSH接続
net_connect = ConnectHandler(**device_info)
# インターフェースの状態確認
output = net_connect.send_command("show status")
# 障害検出
if "down" in output:
print(f"ALERT: Down interface detected on {device_info[’host’]}")
# 該当インターフェースのシャットダウン
interface = "lan1"
net_connect.send_config_set([f"interface {interface}", "shutdown"])
print(f"{interface} has been shut down.")
# 障害対応履歴の記録
ws.append([device_info[’host’], interface, ’Shutdown’, datetime.now()])
# 復旧確認
response = ping(device_info[’host’])
if response:
print(f"{device_info[’host’]} is reachable.")
else:
print(f"Failed to reach {device_info[’host’]}.")
# Tracerouteで経路確認
traceroute_result = subprocess.run(["traceroute", device_info[’host’]], capture_output=True, text=True)
print(traceroute_result.stdout)
# 接続終了
net_connect.disconnect()
except Exception as e:
print(f"Error handling {device_info[’host’]}: {e}")
# Excelファイルの保存
wb.save(’incident_history.xlsx’)
今回は、ヤマハ機器に対応したリアルタイムの状態監視、異常検知時のアラート通知、さらには障害発生時の自動対応まで、効率的なネットワーク管理を実現する手法を紹介しました。手動操作によるヒューマンエラーを削減し、対応の遅延を防ぐことで、ネットワークの安定稼働を確保できます。また、Slackを活用したアラート通知によって、異常発生時の状況把握を迅速に行えます。
次回は、セキュリティリスクの自動検出や脆弱性診断の自動化、ダッシュボードによるリアルタイム状況把握などを取り上げる予定です。どうぞお楽しみに。
[IT研修]注目キーワード Python Power Platform 最新技術動向 生成AI Docker Kubernetes