【Zabbix】Web監視をテンプレート化する
通常ZabbixではWeb監視は別枠となっていてアイテムなどは存在せず、
トリガーで直接登録するといった方法になる。
しかし、ホストが増えるとこの作業がすごくめんどくさい。
なので、トリガーの部分だけでもと思いがんばったところ、結構無理やりテンプレート化できた!のでその備忘録。
Web監視のテンプレート化の説明
通称Web監視のアイテムは存在しない。
そのためテンプレート化しようにもひもづけることができないので、トリガーもうまく作れない。
そこでひらめいたのが、ないなら作ってしまえばいい!
ということで、計算アイテムを用いてWeb監視のキーを引き出すアイテムを無理やり作成した。
アイテムさえ作れればこちらのもの。
そのアイテムにひもづけてトリガーを設定すればテンプレートもほいほいだ。
ただ、このテンプレートを使う場合、シナリオ名とステップ名は固定しなければならない。
しかし、通常は同名のシナリオ名とステップ名は作ることが出来ない。
だが、恐らくZabbixのバグであろう点をついて無理やり作成することに成功した。
計算アイテムと、同名のシナリオ、ステップを作成することで今回テンプレート化に成功している。
Web監視のテンプレート使用方法
まずはレスポンスコードとレスポンスタイムのテンプレートを作成したのでこちらのテンプレートをインポートしてください。
Zabbix Web Monitor Templateのダウンロード
では、テンプレートもできたところで通常のWeb監視と同じようにホストなどを登録していきます。
ホストの作成
「設定」→「ホスト」→「ホストの作成」からホストを作ります。
「ホスト名」に適当に入れ、(「/」は使えないので当方では「_」で代用しています)
「表示名」に監視パスを入力
※表示名はのちほどメールで通知する際にURLとして使うのでここに監視URLを書いておこう。(ただしhttp://などはのぞく)
「グループ」に適当にグループを所属させる
なお、この時にはWEB監視の設定がまだできておらず、無効になってしまったりするのでまだテンプレートは適用させない。
シナリオの作成
シナリオについてはステップが多いが1個1個頑張って作るしかない。
「設定」->「ウェブ」から、先ほど作成したホストのグループとホスト名を選択し、「シナリオの作成」ボタンを押下する。
シナリオについては以下のように入力する。
アプリケーション:WEB
名前:web_801
(どうせあとで変えるのでかぶらなければなんでもいいです。)
エージェント:適当に。スマフォとかガラケーとかで変えたいなら適宜入力する。
続けて「ステップ」タブを押下して「追加」リンクを押下。
ステップの設定は以下のとおり。
名前:web_801(これもシナリオ同様適当でいい)
URL:監視するURL
要求ステータスコード:200
ステップが追加できたらそのまま保存ボタンを押下してシナリオを保存する。
そしてここからが肝。
作成したシナリオを再度編集し、シナリオの名前とステップの名前を以下のように名称を変更する
ユーザーエージェント | 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のウェブ監視はもうちょっと使い勝手よくなればいいのになぁと思う今日この頃なのでした。
こんな無理矢理にしてじゃなくて普通にアイテムとして使えるだけでも大分使いやすくなるのに、、