【Zabbix】Web監視をテンプレート化する

公開日:  最終更新日:2013/08/04

通常ZabbixではWeb監視は別枠となっていてアイテムなどは存在せず、
トリガーで直接登録するといった方法になる。
しかし、ホストが増えるとこの作業がすごくめんどくさい。
なので、トリガーの部分だけでもと思いがんばったところ、結構無理やりテンプレート化できた!のでその備忘録。

sponcer link

Web監視のテンプレート化の説明

通称Web監視のアイテムは存在しない。

そのためテンプレート化しようにもひもづけることができないので、トリガーもうまく作れない。

そこでひらめいたのが、ないなら作ってしまえばいい!
ということで、計算アイテムを用いてWeb監視のキーを引き出すアイテムを無理やり作成した。
アイテムさえ作れればこちらのもの。
そのアイテムにひもづけてトリガーを設定すればテンプレートもほいほいだ。

ただ、このテンプレートを使う場合、シナリオ名とステップ名は固定しなければならない。
しかし、通常は同名のシナリオ名とステップ名は作ることが出来ない。
だが、恐らくZabbixのバグであろう点をついて無理やり作成することに成功した。
計算アイテムと、同名のシナリオ、ステップを作成することで今回テンプレート化に成功している。

Web監視のテンプレート使用方法

まずはレスポンスコードとレスポンスタイムのテンプレートを作成したのでこちらのテンプレートをインポートしてください。
Zabbix Web Monitor Templateのダウンロード
では、テンプレートもできたところで通常のWeb監視と同じようにホストなどを登録していきます。
ホストの作成
「設定」→「ホスト」→「ホストの作成」からホストを作ります。
「ホスト名」に適当に入れ、(「/」は使えないので当方では「_」で代用しています)
「表示名」に監視パスを入力
 ※表示名はのちほどメールで通知する際にURLとして使うのでここに監視URLを書いておこう。(ただしhttp://などはのぞく)
「グループ」に適当にグループを所属させる

なお、この時にはWEB監視の設定がまだできておらず、無効になってしまったりするのでまだテンプレートは適用させない。
シナリオの作成
シナリオについてはステップが多いが1個1個頑張って作るしかない。
「設定」->「ウェブ」から、先ほど作成したホストのグループとホスト名を選択し、「シナリオの作成」ボタンを押下する。
シナリオについては以下のように入力する。
アプリケーション:WEB
名前:web_801
 (どうせあとで変えるのでかぶらなければなんでもいいです。)
エージェント:適当に。スマフォとかガラケーとかで変えたいなら適宜入力する。
02_scenario.png
続けて「ステップ」タブを押下して「追加」リンクを押下。
ステップの設定は以下のとおり。
名前:web_801(これもシナリオ同様適当でいい)
URL:監視するURL
要求ステータスコード:200
03_step.png
ステップが追加できたらそのまま保存ボタンを押下してシナリオを保存する。
そしてここからが肝。
作成したシナリオを再度編集し、シナリオの名前とステップの名前を以下のように名称を変更する

ユーザーエージェント HTTPの場合の名前 HTTPSの場合の名前
PC web_80 web_443
スマフォ sp_80 sp_443
ガラケー mob_80 mob_443

通常新規作成する際に同じ名称のものが既に他のホストであっても存在する場合は、同名のシナリオ、ステップは作成できないのだが、
一度作ったものに対するものの名称変更ならばなぜか問題無いというZabbixのバグ?らしきものを突いてシナリオとステップを同じに揃えることができる。
ていうか、どうせホストに紐付くものなんだから別に作成するときにシナリオ名とステップ名がホストのものになければ、別に作れたっていいじゃないかという気はするが。。。
なんにせよ同じに揃えることによってテンプレートのアイテムで指定できるようになるのだ!!
やったね!
UAが違う場合やHTTPSの監視の場合は以上のような作業を繰り返し行なって登録していけばいい。
テンプレートの適用
ウェブの設定がおわればあとはいよいよテンプレートの適用をする。
これはとくに難しくないので省くが、ホストの設定の「テンプレート」タブから「Web_base」を追加するだけ。
あとはトリガーやアプリケーションの設定をすることなく簡単にWEB監視ができる。
アクションの設定
このままだとメールの通知がきたときにURLとか書かれないのでできればURLがあるといいよなぁということで、
うちではアクションのメッセージの設定はこんなかんじでやってる。

Trigger: {TRIGGER.NAME}
Trigger status: {TRIGGER.STATUS}
Trigger severity: {TRIGGER.SEVERITY}
Trigger URL: {TRIGGER.URL}{HOST.NAME1}
Trigger Comment : {TRIGGER.COMMENT}

Trigger URLが肝。
このテンプレートのトリガーのURLには80ポートと443ポートでそれぞれ「http://」と「https://」だけが定義されている。
そんでもってホストの表示名である{HOST.NAME1}を合わせることでURLを表記している。
これで80と443とのURLの違いをわけている。
(本当はシナリオのステップからURL引っ張ったりとかできればいいんだけどね)
ちなみにこのテンプレートの欠点としては80と443で監視するURLが違ったりするとどっちも同じURLしか表示できないところにあったりする。
そこんとこは個別にトリガーと表示名をいじいじしてうまく調整して頂ければとおもう。
zabbixのウェブ監視はもうちょっと使い勝手よくなればいいのになぁと思う今日この頃なのでした。
こんな無理矢理にしてじゃなくて普通にアイテムとして使えるだけでも大分使いやすくなるのに、、

  • このエントリーをはてなブックマークに追加
  • Pocket

関連記事-こちらもどうぞ

  • 記事はありませんでした
  • み。

    はじめまして。
    >> 同名のシナリオ、ステップは作成できないのだが、一度作ったものに対するものの名称変更ならばなぜか問題無いというZabbixのバグ?

    というのがうまくいきません。
    一旦別名で作成後、何度変更を試みても既に存在しますと弾かれてしまいます。。
    今はもうだめになってしまったのでしょうか。。

    • mogmet

      > みさん
      はじめまして。
      今はバグが修正されてしまって使えないようです。
      しかしZabbix2.2では公式にテンプレート機能が搭載されたようなのでそちらをお試しください。

      • み。

        ご回答ありがとうございます。
        公式テンプレートでトリガーはホスト毎に毎回書かなければいけないものの実現できました。

PAGE TOP ↑