こんにちは!現場で毎日アラートの嵐と格闘しているエンジニアの皆さん、お疲れ様です。
夜中コタツに入った瞬間に飛んでくる「なんかネットワーク遅いんだけど!」という曖昧な連絡。Zabbixのダッシュボードを開けば、赤や黄色の文字がズラリと並んでいるけれど、「結局、どこがボトルネックで、どこが死んでるんだよ……!」と頭を抱えた経験、ありませんか?
多くの現場では、Zabbixを導入したものの、標準のマップ機能は「なんだか絵が古くさい」「リンクの帯域と連動しないから結局使えない」と放置されがちです。
でも、ちょっと待ってください。
Zabbixのマップ機能は、正しく拡張してやれば「最強の障害インパクト分析ボード」に化けるんです。
これをマスターすれば、障害発生時に「どのルーターのどのポートが飽和していて、下流のどのサービスに影響が出ているか」が、一目で、直感的にわかるようになります。毎日の運用のストレスが劇的に軽くなりますよ。
今日は、その秘密のレシピを、優しく丁寧にステップバイステップで伝授しますね!
—
1. なぜ「普通のZabbixマップ」では使い物にならないのか?
まず、敵を知ることから始めましょう。
Zabbixの標準マップは、静的なアイコンを配置して、トリガーのステータスに応じてアイコンの色が変わる(緑→赤)という基本機能を持っています。
しかし、これだけでは本当のネットワーク監視としては不十分です。
- 何が起きていないか: リンク(回線)のトラフィック量に応じて線の色が動的に変わらない。
- どこが痛んでいるか: インターフェースの帯域幅(IF-MIB)に対する使用率(%)が視覚化されない。
私たちが目指すのは、「トラフィックが80%を超えたらリンクが黄色に、95%を超えたら赤く点滅し、リンクダウンしたら太い赤線になる。さらに、その先にある仮想サーバー群のアイコンが一斉に赤く染まる」という、生きたトポロジーマップです。
—
2. 準備:リンク帯域を動的にカラーリングするための前提条件
Zabbixでこれを実現するには、以下の3つのピースが必要です。
1. SNMPによるインターフェース情報の取得(`ifHCInOctets` / `ifHCOutOctets` / `ifSpeed`)
2. トリガープロトタイプの活用(インターフェース速度に対する使用率計算)
3. マップ上の「リンク(お絵描き機能)」へのマクロ・トリガー紐付け
今回は、最も重要で現場のニーズが高い「回線使用率に応じたリンクの色変化」に焦点を当ててセットアップしていきましょう。
—
3. 実践ステップ:動的トポロジーマップの作り方
さあ、手を動かしていきましょう。ここでは、コアスイッチとエッジルーターを繋ぐ10GbEの回線を例に取ります。
ステップ1:インターフェースの「使用率トリガー」を確実に用意する
まずは、リンクの帯域逼迫を検知するトリガーが必要です。テンプレート(例:`Template Net Cisco IOS SNMP`など)に、以下のような計算式(プロトタイプでも可)のトリガーが存在するか確認してください。
例: インターフェースの帯域(ifSpeed)に対する直近5分のIN方向トラフィック使用率が90%を超えた場合
(last(/Cisco Switch/net.if.in[ifHCInOctets.101]) 8) / last(/Cisco Switch/net.if.speed[ifSpeed.101]) 100 > 90
このトリガーに、分かりやすい名前(例: `[警告] Core-R1 Gi0/1 回線使用率90%超`)をつけておきます。
ステップ2:マップのキャンバスを作成する
1. Zabbixのメニューから [監視] > [マップ] を開きます。
2. [マップの作成] をクリック。
- 名前: `プロダクション環境トポロジー`
- 幅 / 高さ: モニターに合わせて(例: `1200 x 800`)
3. [追加] を押したら、作成したマップの名前をクリックして編集画面(コンストラクタ)に入ります。
ステップ3:デバイスアイコンの配置とリンクの結線
1. [アイコン] の「追加」から、ルーターやスイッチのアイコンを配置します。
2. アイコンを選択した状態で、「Ctrl」キーを押しながらもう一つのアイコンをクリックし、画面下の「リンク」項目にある [編集] を押します。
3. ここからが魔法の始まりです。リンクの設定画面が開きます。
ステップ4:【最重要】リンクに「色」と「トリガー」を命じる
リンク設定画面で、単に線を引くだけでなく、トラフィックや障害とリンクを連動させます。
- ラベル:
ここに以下のマクロを仕込みます。リアルタイムのトラフィック量が図上に表示されるようになります。
IN: {Cisco Switch:net.if.in[ifHCInOctets.101].last()} / OUT: {Cisco Switch:net.if.out[ifHCOutOctets.101].last()}
- リンクインジケータ(条件と色):
Zabbixの標準マップでは、リンクに対して「特定のトリガーが障害状態になったときの色」を指定できます。
- デフォルトの色: 緑(#00FF00 など。平時)
- リンクカラー / トリガーの追加:
先ほどステップ1で作った「回線使用率90%超」のトリガーをここに紐付けます。
- 状態が「障害(Problem)」のときの色を 赤(#FF0000) に設定します。
これで、回線が逼迫してトリガーが発報すると、二つのデバイスを繋ぐ「線そのもの」が赤く染まるようになります。
—
4. 精度を高める:ノイズのない「意味のある」マップにするための鉄則
さて、ここまで設定するとマップが賑やかになりますが、「アラートのノイズ」に溺れては意味がありません。 現場で本当に使えるマップにするための、私からの実践的なアドバイスをいくつか贈ります。
1. 背景はダークモード(暗い色)が正義
人間の目は、白い背景のたくさんの赤色よりも、黒い背景に浮かび上がる「1つの赤い光」に素早く反応するようにできています。マップの背景にはダークグレーや黒を採用し、障害時だけが鮮やかに発色するようにデザインしましょう。
2. 物理構成ではなく「論理・影響範囲」で配置する
地理的な位置関係通りに並べると、かえって見づらくなります。「上位ルーター → コアスイッチ → 各フロア/サービス群」というデータフローの上下関係を意識して上から下に配置するのが、障害時の認知負荷を下げるコツです。
3. ドリルダウンを効かせる
アイコンの「URL」プロパティを活用し、アイコンをクリックしたらZabbixの該当ホストの最新グラフ画面、あるいはGrafanaのダッシュボードにジャンプするように仕込んでおきましょう。マップはあくまで「異常の発見(What & Where)」、詳細な原因究明は「グラフ(Why)」へとシームレスに繋ぐのがプロのアーキテクチャです。
—
おわりに:あなたの運用を「受動」から「能動」へ
いかがでしたでしょうか?
今回紹介した動的なトポロジーマップの構築は、最初は少し手間に感じるかもしれません。しかし、一度この「生きたダッシュボード」を組んでしまえば、障害発生時にアラートの文字列表を上から順に睨めっこする必要はなくなります。
マップを一瞥した瞬間に、「あ、あそこのセグメントが詰まっているな」と直感的に分かり、素早く打つ手を決めることができる。この体験は、毎日の運用を確実に楽にしてくれますし、何よりエンジニアとしての自信に繋がります。
ぜひ、今週末のメンテナンスタイムやちょっとした空き時間に、あなたの監視環境でも試してみてくださいね。
それでは、快適なオブザーバビリティライフを!