web監視時の要求文字列の設定について
お世話になります。
web監視を使って特定のURLの監視を行いたいと考えています。
下記のような形で設定を行ったのですが、どうも出力される文字列がうまく取得できず
正常時でも下記のようなエラーになってしまいます。
エラー: required pattern "{"status":true}" was not found on https://***/healthcheck
要求文字列を'(シングルクオート)で囲ってみたりしたのですが、結果は変わりませんでした。
そこで2点相談させていただきたいのですが、
1)要求文字列はどのように設定すればよいか?
2)アラート通知を出すとき、JSON文字列を含めることは可能か?(アイテム:web.test.errorでできそうな気はしています)
お手数ですがアドバイスなどありましたらお願いいたします。
■環境
Zabbix 3.0.10
zabbix-agent 3.0.23
CentOS Linux release 7.3.1611 (Core)
■監視対象
https://***/healthcheck
正常時
ステータスコード200を返す
ブラウザでアクセスすると、JSONにて{"status":true}を返す
※末尾に改行文字はなく、一行だけ出力される
異常時
ステータスコード500を返す
ブラウザでアクセスすると、JSONにて{"status":false}を返す
※末尾に改行文字はなく、一行だけ出力される
■やりたいこと
ステータスコード:200、取得文字列が{"status":true}である場合、正常であるようにしたい
上記以外を異常とし、アラートをメールなどで通知したい。また、アラート本文にJSON文字列を含めたい
■zabbixの設定
Webシナリオにて
シナリオタブ
デフォルト設定より変更なし
ステップタブ
ステップ1
デフォルト設定から変更した箇所
リダイレクトをたどる、にチェック
タイムアウト:15秒
要求文字列:{"status":true}
要求ステータスコード:200
認証タブ
Basic認証を設定
suite - 投稿数: 15
足りない情報ありましたら追記しますので、よろしくおねがいします。
kaeru - 投稿数: 263
suite様
回答がつかないようなので返答させて頂きます。
JSONの値を表示するサイトが手元に無いので検証できませんが、
以下ではいかがでしょうか。
・要求文字列にてエスケープする。
{\"status\":true}
・それで駄目なら要求文字列をtrueとする。
上記でダメならJSON形式で何か引っかかっているかもしれません。
wgetで値を取って内容を確認したとき、{"status":true}となりますでしょうか。
yk_taiko - 投稿数: 184
要求文字列は正規表現で表す項目だったかと思います。
「{」や「}」をエスケープしてどうなるか、確認してみてください。
suite - 投稿数: 15
kaeru様
yk_taiko様
ご返答ありがとうございます。{}をエスケープしたところ、無事に取得できました。