ネットワーク監視の世界は、長らくSNMP(Simple Network Management Protocol)が主役でした。しかし、ネットワークの大規模化、クラウドへの移行、リアルタイム性の要求が高まる中で、従来のSNMPポーリングモデルでは限界が見え始めています。
筆者はこれまで十数年にわたりネットワーク運用に携わってきましたが、ここ数年で明確にテレメトリ(Streaming Telemetry)への移行トレンドを実感しています。本記事では、SNMPの課題とテレメトリの利点を整理し、移行に向けた実践的なアプローチを解説します。
SNMPは1988年に登場して以来、ネットワーク監視の標準プロトコルとして広く普及してきました。MIB(Management Information Base)という標準化されたデータモデルを持ち、ほぼすべてのネットワーク機器がサポートしているという大きな強みがあります。
しかし、現代のネットワーク環境では以下の課題が顕在化しています。
Streaming Telemetryは、ネットワーク機器が自発的にデータをプッシュ送信する監視方式です。SNMPのポーリング(Pull型)に対して、テレメトリはPush型のアプローチを取ります。
テレメトリで使われる主要な技術要素を整理します。
テレメトリベースの監視システムは、以下の構成要素で成り立ちます。
# テレメトリの基本フロー
# 1. ネットワーク機器(Publisher)
# - 設定されたセンサーパスのデータを定期的にストリーミング
# - 例: インターフェース統計、BGPネイバー状態、CPU使用率
# 2. コレクター(Subscriber)
# - gNMIクライアントとしてデータを受信
# - 例: Telegraf, gnmic, Pipeline
# 3. 時系列データベース
# - 受信したデータを格納
# - 例: InfluxDB, Prometheus, TimescaleDB
# 4. 可視化・アラート
# - ダッシュボードでの可視化とアラート通知
# - 例: Grafana, Alertmanager
gnmicは、OpenConfig準拠のgNMIクライアントツールです。テレメトリの動作確認から本番運用まで幅広く使えます。
# gnmicのインストール
bash -c "\$(curl -sL https://get.gnmic.io)"
# デバイスからのデータ取得(Getリクエスト)
gnmic -a 192.168.1.1:57400 \\
--username admin \\
--password admin123 \\
-e json_ietf \\
get --path /interfaces/interface[name=GigabitEthernet0/0/0]/state/counters
# サブスクリプション(ストリーミング)の開始
gnmic -a 192.168.1.1:57400 \\
--username admin \\
--password admin123 \\
subscribe --path /interfaces/interface/state/counters \\
--stream-mode sample \\
--sample-interval 10s
実際の運用では、TelegrafをgNMIコレクターとして使用し、InfluxDBにデータを格納するパターンが一般的です。
# telegraf.conf の設定例
[[inputs.gnmi]]
addresses = ["192.168.1.1:57400"]
username = "admin"
password = "admin123"
[[inputs.gnmi.subscription]]
name = "interface_counters"
origin = "openconfig"
path = "/interfaces/interface/state/counters"
subscription_mode = "sample"
sample_interval = "10s"
[[inputs.gnmi.subscription]]
name = "bgp_neighbors"
origin = "openconfig"
path = "/network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/state"
subscription_mode = "on_change"
[[outputs.influxdb_v2]]
urls = ["http://localhost:8086"]
token = "your-token"
organization = "your-org"
bucket = "network-telemetry"
上記の設定では、インターフェースカウンターは10秒間隔のサンプリング、BGPネイバー状態は変更時のみ通知という、用途に応じた取得方式を指定しています。
現実的な移行は、SNMPとテレメトリの並行運用から始めるのが安全です。以下のステップを推奨します。
SNMPからテレメトリへの進化は、単なる技術のアップデートではなく、ネットワーク運用のパラダイムシフトです。リアルタイムデータに基づく迅速な障害検知、AIや機械学習を活用した異常検知の基盤として、テレメトリは今後のネットワーク監視に不可欠な技術となるでしょう。まずは小規模な検証から始め、段階的に移行を進めることをお勧めします。