Zabbix & SNMP:スイッチ/ルーター監視の極意(ネットワークの「ブラックボックス化」を防ぐ)

Monitoring tutorial - IT technology blog
Monitoring tutorial - IT technology blog

ネットワークが「ブラックボックス」化する恐怖

深夜2時、スマートフォンのバイブレーションが激しく鳴り響きました。当時15台のLinuxサーバーを監視していたPrometheusが、一斉にアラート(赤色)を発信していました。サービスはタイムアウトを繰り返し、サーバー自体は正常に動作しているように見えましたが、30分間の格闘の末、Cisco 3850コアスイッチのアップリンクポートがループによって輻輳していることが判明しました。

その時、ネットワーク情報が「見えない」ことの恐ろしさを痛感しました。Prometheusはサーバー監視には強力ですが、Cisco、Mikrotik、Juniperなどのネットワーク機器に関しては、Zabbixが間違いなくナンバーワンの選択肢です。SNMPプロトコルの処理能力に優れたZabbixは、デバイスの隅々まで可視化してくれます。あの夜の私のように暗闇の中で手探りしたくなければ、すぐにネットワーク機器をZabbixの監視下に置くべきです。

なぜサーバーのようにAgentをインストールできないのか?

サーバーであれば、Zabbix Agentをすぐにインストールできます。しかし、スイッチやルーターは「クローズドシステム(Closed Systems)」です。CiscoのOS内部に深く入り込んで、.deb.rpmファイルをインストールすることはできません。

そこで救世主となるのが、SNMP (Simple Network Management Protocol)です。これはネットワーク機器が自身の状態を「告白」するための共通言語です。CPU、RAMから各ポートのトラフィックまで、あらゆるパラメータがこのプロトコルを通じて転送されます。SNMPを有効にしなければ、高価なスイッチもただの「沈黙する鉄の塊」にすぎません。

3つの一般的なデータ取得方法:どれを選ぶべき?

これまでに多くのプロジェクトで試行錯誤してきた3つのアプローチを紹介します:

  • 方法1:OID (Object Identifier) を手動で追加する: 各パラメータのコード表を調べる必要があります。非常に時間がかかり、間違いやすいため、デバイスが非常に古い場合や特殊な場合にのみ推奨されます。
  • 方法2:SNMPトラップを使用する: 何か異常が発生した際に、デバイス側からZabbixに「通知」します。レスポンスは速いですが、サーバー側の設定が複雑で、パケットロスが発生しやすいという欠点があります。
  • 方法3:テンプレートとLLD (Low-Level Discovery) を使用する: これが「本命」です。Zabbixが自動的にデバイスをスキャンします。例えば48ポートのスイッチであれば、自動的に48個の監視アイテムを作成してくれます。今回はこの方法を解説します。

実践:Zabbix + SNMP テンプレートの展開

ステップ1:デバイス側でSNMPを有効にする

Zabbix Serverがデータにアクセスするための権限を付与する必要があります。Community Stringは十分に複雑なものを設定してください。ハッカーが数秒でネットワーク構成をスキャンできてしまうため、決して「public」は使用しないでください。

Cisco Catalystでの設定例:

conf t
snmp-server community My@Secret#Pass2024 RO
snmp-server contact Admin_IT_Team
snmp-server location Rack05_Floor02
exit
write memory

Mikrotikシリーズの場合は、以下のコマンドを使用します:

/snmp set enabled=yes contact="IT_Dept" location="ServerRoom"
/snmp community set [find name=public] name=My@Secret#Pass2024 addresses=192.168.1.50/32

注:192.168.1.50 is Zabbix ServerのIPアドレスです。安全を確保するため、このIPのみがデータクエリを実行できるように制限します。

ステップ2:Zabbixでホストを登録する

デバイスの準備ができたら、Web UIで操作を行います:

  1. Configuration > Hosts > Create host に移動します。
  2. Host name: 命名規則に従って入力します(例:HN-Core-SW01)。
  3. Templates: “Network Generic Device by SNMP” または “Cisco IOS by SNMP” などのメーカー専用テンプレートを選択します。
  4. Interfaces: Add > SNMP をクリック。デバイスのIPを入力し、SNMPv2を選択します。
  5. Macros: Macrosタブで {$SNMP_COMMUNITY} を探し、Changeをクリックしてパスワード My@Secret#Pass2024 を入力します。

ステップ3:ローレベルディスカバリ (LLD) の威力

Zabbixは自動的にディスカバリプロセスを実行します。「ポートはいくつありますか?」とSNMP Walkコマンドを送信し、数分後には24または48の全ポートがトラフィックグラフと共に表示されます。

Zabbix Serverからの接続を確認するには、以下のコマンドを使用します:

snmpwalk -v 2c -c My@Secret#Pass2024 192.168.1.100 1.3.6.1.2.1.1.1

画面に機種名やファームウェア情報が返ってくれば、99%成功です。

ステップ4:「死活」に関わるアラートのしきい値を設定する

アラート設定のない監視は、監視していないのと同じです。私は常に以下の3つを優先しています:

  • ICMP Ping: デバイスとの接続が完全に切断された場合.
  • Link Down: アップリンクポートのケーブルが抜けた際に即座に通知.
  • High Bandwidth: 1Gbpsポートで5分間連続して800Mbpsを超えた場合.

Telegramで通知を受け取るには、Alerts > Media Types に移動します。Bot Tokenを設定し、障害発生時に技術チームのグループに通知が飛ぶようActionを作成します。

痛い目を見ないための経験則

最も多いトラブルは、設定が正しいはずなのにSNMPアイコンが赤くなることです。原因の多くはファイアウォールによるUDP 161ポートの遮断です。パケットの行きと帰りの両方を注意深く確認してください。

古いスイッチを使用する場合のもう一つの注意点:Update interval(更新間隔)を短くしすぎないでください。48ポートに対して1秒ごとの更新を強制すると、スイッチのCPUが100%に跳ね上がり、SNMPプロセスがフリーズすることがあります。トラフィック監視なら1分、温度やRAMなどは5分に一度で十分です。

Zabbixを使いこなすのは難しくありません。難しいのは、深夜に不要なアラートが飛ばないようにシステムを微調整することです。皆さんがぐっすり眠れる夜を過ごせるよう願っています!

Share: