ネットワーク

ネットワーク監視のSNMPを解説!

SNMP

ネットワーク運用で欠かせないのが「監視」です。

サーバーやルーターの状態を把握できれば、障害を未然に防ぎ、安定したサービスを提供できます。

その仕組みを支える代表的な仕組み(プロトコル)が SNMP(Simple Network Management Protocol) です。

今回は、SNMPの基礎から実際の運用イメージ、分かり易く理解できるように解説していきます!

1. SNMPとは?

SNMP は、ネットワーク機器やサーバーの状態を「遠隔から取得・監視・管理」するための通信ルールです。

たとえば以下のような情報を取得できます。

SNMPで取得できる情報

  • CPUやメモリの使用率
  • ネットワークトラフィック(送受信量)
  • ディスクの残容量
  • プリンターのトナー残量

つまり、機器に取り付けた「健康診断センサー」のような役割を果たすのがSNMPです。

2. SNMPの仕組み

先ずここが大事なのですが、SNMPは大きく マネージャ(監視する側)エージェント(監視される側) に分かれています。

  • マネージャ:監視サーバー(Zabbix、PRTGなど)
  • エージェント:監視対象の機器(ルーター、サーバーなど)に内蔵

この両者がSNMPで通信し、監視を実現します。

MIBの仕組み

SNMPでマネージャがエージェントに情報を問合せた際にエージェント側の情報はどう管理されているのでしょうか?

それが、「MIB(Management Information Base)」になり、ネットワーク機器(ルータ、スイッチ、サーバなど)が持っている「どんな項目を監視できるか」 をまとめた表みたいなものですね。

簡単に言うと「管理情報の辞書・データベース」ですね。

イメージ的には以下のようになります。

ということで、SNMPは以下の3つの要素で成り立っていることになります。

要素役割
マネージャー(NMS)ネットワーク全体を監視・制御するソフトウェア(例:Zabbix、SolarWinds)
エージェント監視対象機器に組み込まれた監視プログラム。機器の情報を収集しマネージャーに返す
MIB(Management Information Base)監視項目を格納したデータベース。CPU使用率、メモリ、ポート状態などを管理

3. SNMPで使われる主な通信

上記の図でも出てきましたが、SNMPの通信方式としては以下のお作法があります。

基本的にはネットワーク機器の情報をマネージャが取得「GET」したり、設定「SET」し、何かあったらネットワーク機器が通知「TRAP」するというシンプルな感じですね。

通信方法説明
GETマネージャーがエージェントに情報を問い合わせる
SETマネージャーがエージェントの設定を変更する
TRAPエージェントが異常をマネージャーへ通知する
GETNEXT / GETBULK複数のデータをまとめて取得する

4. 実際の活用例

ここまでSNMPの仕組みを解説しましたが、実際の現場でどう使われているか例を挙げます。

SNMPの活用例

  • ルーターのCPU使用率やポート状態の監視
  • サーバーのメモリ使用量やディスク残量の取得
  • ネットワークプリンターの紙切れやトナー切れ通知
  • UPS(無停電電源装置)のバッテリー状態管理

いろんな機器の情報を取得して管理できるので、活用範囲は幅広いことがわかると思います。

実際はどんな情報をどのタイミングで取得するかなど、運用設計が大事だったりしますね。

5. SNMPのバージョンとセキュリティ

SNMPはこれまで何回かバージョンアップしてきました。

バージョンアップの理由としては、機能面、セキュリティ面を高くするためですね。

現在はSNMPv3が推奨です。

v1やv2cは情報が平文で送られるため、盗聴や改ざんリスクがありますので、現在は使われていないと思います。

バージョン特徴セキュリティ
v1初期仕様。機能が限定的ほぼなし
v2c情報取得効率が向上ほぼなし(コミュニティ名で管理)
v3認証(Auth)+暗号化(Priv)対応高い安全性

6. まとめ

今回はネットワーク運用の監視に重要なSNMPに関して解説してきました。

SNMPまとめ

  • SNMPはネットワーク監視の標準プロトコル
  • マネージャー・エージェント・MIBの3つで構成されている
  • GET・TRAPなどで機器情報を取得/通知
  • セキュリティ面ではSNMPv3が安心

ネットワークは今後も至るところで活用されていきます。

安定したネットワークの運用を実現するSNMPは非常に重要な仕組みとなりますね。

SNMPは定期的に情報をGETするために「ポーリング」を使ってます。このポーリングに関しても当ブログにて解説もしてますので、よろしければ読んでみてください。

以上です!

-ネットワーク