採用情報

お問い合わせ

BLOG

Zabbix テック・ラウンジ

2023 年 02 月 09 日

Zabbix の Web 監視でログインを伴う WordPress の監視を行う

本記事では、MIRACLE ZBX 6.0 の Web 監視の設定例を紹介します。

Zabbix の Web 監視には、Web シナリオ監視と http エージェント監視があり、一連の操作をまとめて監視したい場合は Web シナリオ監視を利用します。
本記事では、Web シナリオ監視の簡単な設定方法と WordPress を対象にしたログインを伴う設定方法について紹介します。

Web シナリオ監視の仕組み

Web シナリオは、HTTP リクエストの内容を設定する 1 つ以上のステップで構成されます。
各ステップごとに、HTTP poller プロセスが libcurl を使用して監視対象にリクエストを送信し、レスポンスを取得します。
libcurl では、JavaScript が実行できないため JavaScript の動作や実行結果を監視することはできません。

HTTP poller プロセスの起動数は、zabbix_server.conf の StartHTTPPollers で設定できます。
監視設定の数が多い場合等は適宜調整が必要です。

Web シナリオ監視では、監視対象の Web ページが期待した結果を返すことやダウンロード速度、応答時間等を監視することができます。
Web サイトへのログイン、ログイン後の Web ページを監視することもできます。

使用環境

本記事の設定例では以下の環境を使用します。
その他のバージョンでも基本的に同様の設定で Web 監視を行うことができます。

  • MIRACLE ZBX 6.0.9-2

目次

  1. 簡単な Web 監視の設定例
  2. ログインを伴う Web 監視の設定例

簡単な Web 監視の設定例

本項の設定例では、google.co.jp へのアクセスと Google 検索の結果に期待する文字列が含まれているかを監視する設定を行います。
また、作成した監視アイテムに対するトリガーの設定も行います。

手順 1 Web シナリオの作成

[ 設定 ]->[ ホスト ] を開き、Web 監視を作成するホストの [Web] を押下します。
次に、画面右上の [Web シナリオの作成 ] を押下します。

ここでは、Web シナリオの名前や監視間隔、保存期間、試行回数等を設定します。
監視対象へのアクセスに HTTP プロキシを経由する場合は、ここで HTTP プロキシの設定を行ってください。

今回は名前を「Web 監視テスト」、その他の設定はデフォルト値とします。

Web シナリオの作成

手順 2 ステップの追加

Web シナリオにステップを設定します。
[ ステップ ] タブに移動し、[ 追加 ] を押下してください。

ここでは、 アクセスする URL とそれに対するリクエスト、要求文字列、要求ステータスコードを設定します。

2-1

google.co.jp にアクセスしてステータスコード 200 が返ることを監視するステップを作成します。

ステップを追加して、下記項目を設定して [ 追加 ] を押下して設定を保存します。

※スクリーンショットでは [ 更新 ] となっていますが、新規作成の場合は [ 追加 ] となります。

名前 トップページ
URL https://www.google.co.jp
要求ステータスコード 200

google.co.jp にアクセスしてステータスコード 200 が返ることを監視するステップを作成

2-2

Google で「サイバートラスト」を検索して返ってきた結果に「https://www.cybertrust.co.jp」が含まれるか監視するステップを作成します。
Google 検索では、GET で「q」パラメータに検索ワードを指定することで検索を行うことができます。

ステップを追加して、下記項目を設定して [ 追加 ] を押下して設定を保存します。

名前 検索
URL https://www.google.co.jp/search
クエリフィールド 名前
q サイバートラスト
要求文字列 https://www.cybertrust.co.jp
要求ステータスコード 要求ステータスコード

Google で「サイバートラスト」を検索して返ってきた結果に「https://www.cybertrust.co.jp」が含まれるか監視するステップを作成

2-3

シナリオの [ 作成 ] を押下して Web シナリオの設定を完了します。
これで Web 監視設定は完了です。

各設定項目の詳細は、以下のマニュアルを参照してください。
https://www.zabbix.com/documentation/6.0/en/manual/web_monitoring

Web 監視を設定すると以下のアイテムが追加され、[ 監視データ ]->[ 最新データ ] で監視結果を確認することができます。

アイテム名 アイテム名
Download speed for scenario < シナリオ名 > シナリオ全体のダウンロード速度(全ステップの平均値)
Failed step of scenario < シナリオ名 > 失敗したステップの番号
Last error message of scenario < シナリオ名 > エラーメッセージ
Download speed for step < ステップ名 > of scenario < シナリオ名 > ステップのダウンロード速度
Response time for step < ステップ名 > of scenario < シナリオ名 > ステップの応答時間
Response code for step < ステップ名 > of scenario < シナリオ名 > ステップのステータスコード

Web 監視で追加されるアイテムの詳細は以下のマニュアルを参照してください。

 監視結果を確認

手順 3 トリガーの設定

本項では、Web 監視「Web 監視テスト」の監視で問題が発生した場合に障害とするトリガーを作成します。

[ 設定 ]->[ ホスト ]-> 対象ホストの [ トリガー ] 画面の [ トリガーを作成 ] を押下します。

下記項目を設定して [ 追加 ] を押下し、設定を保存します。
名前に {ITEM.VALUE} マクロを使用することでエラーメッセージを障害の名前に含めることができます。

名前 Web 監視エラー : {ITEM.VALUE}
条件式 length(last(/< ホスト名 >/web.test.error[Web 監視テスト ]))>0 and last(/< ホスト名 >/web.test.fail[Web 監視テスト ])>0

上記のトリガー条件式では、エラーメッセージを返す web.test.error[] の文字数が 0 より多く、かつ失敗したステップの番号を返す web.test.fail が 0 より大きい場合、つまり Web 監視中にエラーメッセージが返り特定のステップが失敗した場合に障害と判定されます。

 問題が発生した場合に障害とするトリガーを作成

ログインを伴う Web 監視の設定例

本項の設定例では、監視対象の WordPress 5.8.1 に対して以下の流れを確認する設定を行います。
また、作成した監視アイテムに対するトリガーの設定も行います。

  1. WordPress へのログイン
  2. ダッシュボードページの表示(ログイン状態でのみ表示可能)
  3. WordPress からのログアウト
  4. ログインが必要なページヘのアクセスでログイン画面にリダイレクトされる

WordPress の構築方法については、以下の記事で解説しています。

手順 1 シナリオの作成

[ 設定 ]->[ ホスト ] を開き、Web 監視を作成するホストの [Web] を押下します。
次に、画面右上の [Web シナリオの作成 ] を押下します。

今回は名前を「Wordpress ログインテスト」、その他の設定はデフォルト値とします。

Wordpress ログインテストの作成

手順 2 ステップの追加

同様に Web シナリオにステップを設定します。

2-1

WordPress のログイン画面にアクセスしてステータスコード 200 が返ることを監視するステップを作成します。
POST フィールドでは、POST で送信するデータを設定できます。

今回用意した WordPress では、log パラメータにユーザ名、pwd パラメータにパスワードを設定することでログインできます。

変数では、取得した Web ページから正規表現にマッチする情報を抜き出して変数に格納できます。
変数は後のステップで使用することができます。

WordPress では、CSRF 等への対策としてアクション実行時やフォームからのデータ送信時に GET/POST フィールドに nonce と呼ばれるトークンを追加します。
後のステップで使用するため、 「_wpnonce」の値を抜き出して変数に格納します。

ステップを追加して、下記項目を設定して [ 追加 ] を押下して設定を保存します。

※スクリーンショットでは [ 更新 ] となっていますが、新規作成の場合は [ 追加 ] となります。

名前 名前
URL http://< 接続先の IP アドレス / ドメイン名 >/wp-login.php
POST フィールド 名前
log writer01
pwd wordpress
wp-submit ログイン
変数 名前
{wpnonce} regex:action=logout&#038;_wpnonce=([0-9a-z]{10})
リダイレクトをたどる 有効
要求ステータスコード 200

WordPress のログイン画面にアクセスしてステータスコード 200 が返ることを監視するステップを作成

2-2

ログイン後に表示される Web ページを監視するステップを作成します。
このステップでは、ログイン後に表示できるダッシュボードページが表示できるかを監視します。

ステップを追加して、下記項目を設定して [ 追加 ] を押下して設定を保存します。

名前 ログイン後ページ
URL http://< 接続先の IP アドレス / ドメイン名 >/wp-admin/
要求文字列 ダッシュボード
リダイレクトをたどる 有効
要求ステータスコード 200

 ログイン後に表示される Web ページを監視するステップを作成

2-3

ログアウトを行うステップを作成します。

ログインを伴う監視を行う際はログアウトも併せて行うことをお薦めします。
ログアウトを行わないと監視を行う毎に監視対象にログインセッションが残り続けることがあります。

クエリフィールドにログアウトするための action と 1 つ目のステップで取得した変数 {wpnonce} を設定します。

ステップを追加して、下記項目を設定して [ 追加 ] を押下して設定を保存します。

名前 ログアウト
URL http://< 接続先の IP アドレス / ドメイン名 >/wp-login.php
クエリフィールド 名前
action logout
_wpnonce {wpnonce}
リダイレクトをたどる 有効
要求ステータスコード 200

 ログアウトを行うステップを作成

2-4

ログアウトが正しく行われ、ダッシュボードの URL にアクセスするとログイン画面が表示されることを監視するステップを作成します。

ステップを追加して、下記項目を設定して [ 追加 ] を押下して設定を保存します。

名前 ログアウト後ページ
URL http://< 接続先の IP アドレス / ドメイン名 >/wp-admin/
リダイレクトをたどる 有効
要求ステータスコード 200

 ログアウトが正しく行われ、ダッシュボードの URL にアクセスするとログイン画面が表示されることを監視するステップを作成

2-5

シナリオの [ 作成 ] を押下して Web シナリオの設定を完了します。
これで Web 監視設定は完了です。

各設定項目の詳細は、以下のマニュアルを参照してください。

Web 監視を設定すると以下のアイテムが追加され、[ 監視データ ]->[ 最新データ ] で監視結果を確認することができます。

アイテム名 説明
Download speed for scenario < シナリオ名 > シナリオ全体のダウンロード速度(全ステップの平均値)
Failed step of scenario < シナリオ名 > 失敗したステップの番号
Last error message of scenario < シナリオ名 > エラーメッセージ
Download speed for step < ステップ名 > of scenario < シナリオ名 > ステップのダウンロード速度
Response time for step < ステップ名 > of scenario < シナリオ名 > ステップの応答時間
Response code for step < ステップ名 > of scenario < シナリオ名 > ステップのステータスコード

Web 監視で追加されるアイテムの詳細は以下のマニュアルを参照してください。

 監視結果を確認

手順 3 トリガーの設定

本項では、Web 監視「Wordpress ログインテスト」の監視で問題が発生した場合に障害とするトリガーを作成します。

[ 設定 ]->[ ホスト ]-> 対象ホストの [ トリガー ] 画面の [ トリガーを作成 ] を押下します。

下記項目を設定して [ 追加 ] を押下し、設定を保存します。
名前に {ITEM.VALUE} マクロを使用することでエラーメッセージを障害の名前に含めることができます。

名前 ログイン監視エラー : {ITEM.VALUE}
条件式 length(last(/< ホスト名 >/web.test.error[Wordpress ログインテスト ]))>0 and last(/< ホスト名 >/web.test.fail[Wordpress ログインテスト ])>0

上記のトリガー条件式では、エラーメッセージを返す web.test.error[] の文字数が 0 より多く、かつ失敗したステップの番号を返す web.test.fail が 0 より大きい場合、つまり Web 監視中にエラーメッセージが返り特定のステップが失敗した場合に障害と判定されます。

 問題が発生した場合に障害とするトリガーを作成

試しに WordPress のログインパスワードを変更してログインに失敗するようにすると、以下のような障害となります。
エラーメッセージから「_wpnonce」の値が取得できなかったことが確認できます。

ログインに失敗するようにすると、以下のような障害となります

まとめ

Webシナリオ監視による簡単な Web監視の設定とログインを伴う監視設定を紹介しました。
Webシナリオ監視では、Webサービスのユーザが行う一連の操作を想定した監視ができます。本記事で紹介した設定の他にも GETや POST、変数等の設定を活用してより複雑な監視設定を行うこともできます。


本記事に関連するリンク

Zabbix 7.0 新機能調査報告書 無料ダウンロード
CentOS 7 延長サポートサービス
デジタルトランスフォーメーションのための電子認証基盤 iTrust
SSL/TLS サーバー証明書 SureServer Prime