ネットワークが「ブラックボックス」化する恐怖
深夜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で操作を行います:
- Configuration > Hosts > Create host に移動します。
- Host name: 命名規則に従って入力します(例:HN-Core-SW01)。
- Templates: “Network Generic Device by SNMP” または “Cisco IOS by SNMP” などのメーカー専用テンプレートを選択します。
- Interfaces: Add > SNMP をクリック。デバイスのIPを入力し、SNMPv2を選択します。
- 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を使いこなすのは難しくありません。難しいのは、深夜に不要なアラートが飛ばないようにシステムを微調整することです。皆さんがぐっすり眠れる夜を過ごせるよう願っています!

