WEB監視の設定方法

いつもお世話になっております。Zabbix初心者です。

現在、Zabbix自体の監視用Webシナリオを作成・検証してから監視対象へ実装しようとしております。
Webシナリオ/ステップ設定でZabbixへのログイン情報を間違えて入力したにも関わらず、
監視状態としては、「正常」と表示されております。
どの部分の設定に誤りがあるのかご教授頂くことは可能でしょうか。

【環境】
使用バージョン  :Zabbix 2.0.3
【設定内容】
*シナリオ設定*
アプリケーション :web
名前        :ZABBIX Web Interface
更新間隔(秒)  :300
エージェント    :任意
ステータス :有効
変数        :{username}=*****
            {password}=******(間違ったパスワード)
ステップ      :-

*ステップ設定*
名前 :index.php
URL :http://対象のIPアドレス/zabbix/index.php
POST :name=*****&password=*****(間違ったパスワード)&enter=Enter
タイムアウト    :15
要求文字列 :なし
ステータスコード :200

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー TNK の写真

現時点の設定では、ログインに失敗してログインエラー画面が正し
く(レスポンスコード200で)返却されているので、正常と判断され
ます。

ログインに失敗したことを判断されたいのであれば、返却された画
面のHTML内にログイン成功時に表示される文字列を「要求文字列」
に指定してみてください。

ただし、ここの要求文字列には日本語などのマルチバイト文字列は
利用できませんので、今回例示頂いたZabbixのWebインターフェイ
スの場合であれば、ログイン確認に利用するアカウントのプロファ
イルで英語(en_GB)に変更しておいてください。
そして、デフォルトの設定であれば、ログイン直後にダッシュボー
ドが表示されると思いますので、正常にログインしたときにのみ表
示される文字列、例えば「Get support」か「Print」のどちらかの
文字列を要求文字列に指定してみてはいかがでしょうか。

あと、POSTには、

 name=アカウント名&password=パスワード&enter=Sign+in

を指定してみてください。

ユーザー shouwa2 の写真

ご回答頂き、ありがとうございます。

ご指摘頂いた通り実施した所、問題なく監視出来るようになりました。
今回の検証を基に、下記のようなWEBシナリオを作成予定でございます。
その際、どういった点に考慮し、WEBシナリオを作成すべきでしょうか。
重ねてご依頼となってしまいますが、ご確認のほど、よろしくお願い致します。

*WEBシナリオ*
①Zabbixへログイン(TOPページのPrint文字を要求文字列に指定) →解決済み
②TOPページから[Reports]ページへ移行(要求文字列として[STATUS OF ZABBIX]を指定)
  →この際、POSTの記載等は、どう考えて記載すべきでしょうか。

ユーザー TNK の写真

残念ながら、そこから先は現時点のバージョンのZabbixのWeb監視
機能では正しく処理できなかったと思います。

Zabbix Webフロントエンドのログイン後の画面遷移では、ログイン
時にWebサーバから返却されたパラメータを引き継いで、次の画面
の遷移時にそのパラメータを付与してWebサーバにリクエストを投
げなければなりませんが、現時点のバージョンのZabbixのWeb監視
機能では、Webサーバから受け取った値を次の画面に引渡すような
ことを設定することができません。

同様に、クッキーを利用するようなWebアプリケーションも同様で
す。

このような制限があるため、例えばWebサーバとDBとの連携ができ
ているかを監視するためには、固定されたパラメータでの呼び出し
で実現できる画面遷移の部分を呼び出すようにするか、簡単なチェ
ック専用のアプリケーションをWebサーバ上に配置するかをご検討
ください。

ユーザー kodai の写真

ログインしたときのクッキー情報は次のステップに引き継がれますので、ログインした状態は保持して次のチェックを行うことができます。

②TOPページから[Reports]ページへ移行(要求文字列として[STATUS OF ZABBIX]を指定)
  →この際、POSTの記載等は、どう考えて記載すべきでしょうか。

POSTは設定しなくても、単純にURLを指定すれば監視可能です。

また、ZabbixのWeb監視はマルチバイトには対応していないわけではなく、正確にはUTF-8以外の文字列は正しく判定することができません。Webサイト自体がUTF-8であれば、日本語の文字列も検知文字列に含めることができます。

ユーザー TNK の写真

ご指摘の通り、Zabbix Webフロントエンドであれば、次URLをURLに
指定すればいけるようです。
例;
 http://対象のIPアドレス/zabbix/report1.php

他のWebアプリケーションでは、うまく行かない場合もありますの
でご注意ください。

Webサイト自体がUTF-8であれば、日本語の文字列も検知文字列に含めることができます。

UTF-8ならできたはずと思ったのですが、先の回答を書く前に実際
にやってみて日本語でのログイン後画面判定ができなかったので、
わざわざ英語に切り替えてやって先の回答を書いていました。

再度やってみたら「サポート」「プリント」なら日本語でも正常に
マッチングできているようです。

ユーザー shouwa2 の写真

ご教授頂きありがとうございます。
無事にWEBシナリオを作成することが出来ました。

一つ気になる点が残っているのですが、
初めに教えて頂いたログイン時のPOSTの値については、
Zabbixログインページのソースコードをどう解読すれば、導き出せるのでしょうか。

今回の検証を基に他の機器へWEBシナリオを作成する際、
POSTの値を確認する時に役立たせて頂けたらと考えております。
(HTMLに関して知識が足らず、申し訳ないです。。。)

ユーザー TNK の写真

表示されたZabbixのログイン画面のソースを、

 form
 input

というキーワードで検索してそれぞれの箇所を確認してみてくださ
い。

formというかたまり(からまで)の中に複数のinput
(name, password, autologin, enter)があって、それぞれの入力項
目に対する名前それぞれに値を指定する引数を指定します。

autologinは指定しなくてもよかったはずなので、name、password、
enterを指定したものをPOSTのサンプルとして提示させて頂きまし
た。
1点だけ補足すると、半角スペースを「+」に置き換えてます。
# 「Sign in」->「Sign+in」

詳細は、HTML関連のサイトや書籍で勉強されてみてはいかがでしょ
うか。

ユーザー shouwa2 の写真

アドバイス頂きありがとうございます。

さっそく本番環境向けにWEBシナリオを設定してみましたが、
ログイン動作の部分でhttp405エラー等もろもろが発生し、
該当ページへのログインが上手く出来ていない状態となっております。

Zabbix自体のログを確認して、エラーとなっている根本の原因を確認したいのですが、
Zabbix自体のどこに詳細なログが格納しているのかご教授頂くことは可能でしょうか。

***WEBシナリオ***
①TOPページへのログイン  →ログインが上手く出来ず、要求文字列が取得出来ないとのエラー
②他のページへの画面遷移 →①が失敗してることで確認できず。。

ユーザー TNK の写真

Web監視の詳細なログは出力されなかったかもしれません。
zabbix_server.confのDebugLevelを4にすれば、ある程度は確認で
きたかもしれませんが、求められているようなレベルでは出力され
ないかもしれません。

HTTPステータスが405であるならば、そのURLの呼び出し方が誤って
いると思われます。
プロトコルとしてGETしか許可していないのにPOSTしたり、逆にPOST
しか許可していないのにGETしたりした場合に発生するはずです。

POSTかGETかは、formのmethodで確認できると思いますので、再度、
Webブラウザでアクセスするときにどうやって呼び出しているかを
再度ご確認ください。

例えば、Firfoxであれば、Firebugをいう機能拡張を利用すると、
どのようなリクエストを投げて、どのような結果を取得したかを
詳細に確認することができます。

ユーザー shouwa2 の写真

アドバイス頂きありがとうございます。

さっそくFirebugにてリクエストを確認した結果、
下記のような動作をおこなっているようでした。
この場合、そもそもWEB監視を行うこと自体が可能なのでしょうか。
記載内容が不足しておりましたら、申し訳ございません。。

***実施したいページのリクエスト結果***
①GET  ホスト名
②POST login_check.cgi
③GET トップページ名.do

***Zabbixログイン時のリクエスト結果***
①POST index.php
②GET dashboard.php
③GET jsLoader~.php

ユーザー TNK の写真

GETは、POSTの欄に何も入力しなければ、ZabbixサーバからはGETで
アクセスするようになっているはずです。

POSTの部分には、必要なパラメータを入力してください。