一般社団法人 全国個人事業主支援協会

COLUMN コラム

  • ネットワーク監視の自動化:SNMPからテレメトリへの進化

ネットワーク監視の転換期

ネットワーク監視の世界は、長らくSNMP(Simple Network Management Protocol)が主役でした。しかし、ネットワークの大規模化、クラウドへの移行、リアルタイム性の要求が高まる中で、従来のSNMPポーリングモデルでは限界が見え始めています。

筆者はこれまで十数年にわたりネットワーク運用に携わってきましたが、ここ数年で明確にテレメトリ(Streaming Telemetry)への移行トレンドを実感しています。本記事では、SNMPの課題とテレメトリの利点を整理し、移行に向けた実践的なアプローチを解説します。

SNMPの功績と限界

SNMPは1988年に登場して以来、ネットワーク監視の標準プロトコルとして広く普及してきました。MIB(Management Information Base)という標準化されたデータモデルを持ち、ほぼすべてのネットワーク機器がサポートしているという大きな強みがあります。

しかし、現代のネットワーク環境では以下の課題が顕在化しています。

  • ポーリング間隔の制約:一般的に5分間隔でのデータ取得が限界。障害発生時の詳細な分析に必要な秒単位のデータが取れない
  • スケーラビリティの問題:監視対象が数千台規模になると、ポーリングサーバー側のリソース消費が膨大になる
  • CPU負荷:機器側でもSNMPリクエストの処理がCPU負荷を発生させ、大量のOIDを取得すると本来の転送処理に影響を与えることがある
  • データモデルの硬直性:ベンダー独自のMIBが乱立し、マルチベンダー環境での統一的なデータ収集が困難

Streaming Telemetryとは

Streaming Telemetryは、ネットワーク機器が自発的にデータをプッシュ送信する監視方式です。SNMPのポーリング(Pull型)に対して、テレメトリはPush型のアプローチを取ります。

主要なプロトコルとデータモデル

テレメトリで使われる主要な技術要素を整理します。

  • gNMI(gRPC Network Management Interface):Googleが主導して開発した、gRPCベースのネットワーク管理インターフェース
  • YANG:ネットワーク機器のデータモデルを記述するための標準言語。OpenConfigやIETFが標準モデルを策定
  • Protocol Buffers:データのシリアライゼーションフォーマット。SNMPのASN.1/BERに比べて効率的

テレメトリの基本的なアーキテクチャ

テレメトリベースの監視システムは、以下の構成要素で成り立ちます。

# テレメトリの基本フロー
# 1. ネットワーク機器(Publisher)
# - 設定されたセンサーパスのデータを定期的にストリーミング
# - 例: インターフェース統計、BGPネイバー状態、CPU使用率

# 2. コレクター(Subscriber)
# - gNMIクライアントとしてデータを受信
# - 例: Telegraf, gnmic, Pipeline

# 3. 時系列データベース
# - 受信したデータを格納
# - 例: InfluxDB, Prometheus, TimescaleDB

# 4. 可視化・アラート
# - ダッシュボードでの可視化とアラート通知
# - 例: Grafana, Alertmanager

実践:gnmicを使ったテレメトリ収集

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との連携設定

実際の運用では、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とテレメトリの並行運用から始めるのが安全です。以下のステップを推奨します。

  1. 現状の監視項目を棚卸し:SNMPで取得している全OIDをリストアップし、対応するYANGパスをマッピング
  2. 対応機器の確認:保有するネットワーク機器のgNMI対応状況を確認。対応していない機器はファームウェアアップデートまたは機器更改を計画
  3. パイロット環境の構築:gnmic + InfluxDB + Grafanaの検証環境を構築し、主要な監視項目のテレメトリ収集を開始
  4. 並行運用とデータ比較:SNMPとテレメトリのデータを突き合わせ、テレメトリの精度と網羅性を検証
  5. 段階的なSNMP廃止:テレメトリで代替可能な項目からSNMPポーリングを順次停止

テレメトリ導入の注意点

  • データ量の増大:秒単位のデータ収集はストレージ使用量を大幅に増加させる。適切なリテンションポリシーとダウンサンプリングの設計が必要
  • ベンダー間の差異:OpenConfigの採用度はベンダーによって異なる。ベンダー固有のYANGモデルへの対応が必要な場合もある
  • セキュリティ:gNMIはgRPCベースのため、TLS証明書の管理が必要。認証・認可の設計も重要

まとめ

SNMPからテレメトリへの進化は、単なる技術のアップデートではなく、ネットワーク運用のパラダイムシフトです。リアルタイムデータに基づく迅速な障害検知、AIや機械学習を活用した異常検知の基盤として、テレメトリは今後のネットワーク監視に不可欠な技術となるでしょう。まずは小規模な検証から始め、段階的に移行を進めることをお勧めします。

この記事をシェアする

  • Twitterでシェア
  • Facebookでシェア
  • LINEでシェア