ウェブ監視
クラッシックなウェブ監視
概要
Pandora FMS では、ウェブサーバは ネットワークサーバ 内で動作します。このシステムは Web トランザクション の原理に基づいて動作します。つまり、1 つ以上の Web ページに対する各トランザクションは、1 つ以上の連続したステップによって定義され、トランザクションが正常に完了したとみなされるには、これらのステップが正常に完了している必要があります。
- ネットワークサーバには、実行時の JavaScript の動的管理などの重要な制限があります。
- より複雑な Web トランザクション用に、Pandora FMS には WUX 監視 (Web ユーザエクスペリエンス) と呼ばれる、さらに強力な (そして複雑な) コンポーネントがあります。
インストールと設定
ネットワークサーバはデフォルトで有効になっています。リクエスト数に応じて、スレッド数とデフォルトのタイムアウト値を増やす必要がある場合があります。
web_threads 1 web_timeout 60 # Use curl or LWP web_engine curl
Pandora FMS には CSRF に対する保護機能があり、Web チェックをデバッグするときに次のメッセージが表示される場合があります:
Cannot verify the origin of the request
この保護機能を考慮して、“WUX モニタリング” の使用を検討してください。
ウェブモジュールの作成
ウェブページをリモート監視するには、エージェントを作成したら、モジュールのトップタブ(モジュール(Modules))をクリックします。そこで、ウェブモジュールの新規作成(Create a new web module)を選択し、作成(Create)をクリックします。
ウェブチェックのタイプを選択します:
- Remote HTTP module to check latency: 最初のリクエストから最後のチェックが完了するまでのトータルの時間を取得します (ウェブチェックを完了するには、1つ以上のトランザクションがあります)。複数のリクエストが定義されている場合、それぞれの平均時間が利用されます。
- Remote HTTP module to check server response: すべてのトランザクションの結果をチェックし、1 (正常) もしくは、0 (異常) を返します。一部のステップが失敗すると、全体を障害として認識します。誤検出を避けるために、リトライ回数を設定することができます。 障害が発生した場合にテストを何回か実行する場合は、リトライ フィールドを使用してください(下記の詳細フィールドを参照)。
- Remote HTTP module to retrieve numeric data: 正規表現を利用して HTTP 応答から数値を取得します。
- Remote HTTP module to retrieve string data: 正規表現を利用して HTTP 応答から文字列を取得します。
- Remote HTTP module to check server status code::
web_engine curlの設定トークンで curl ツールの利用を有効化すると、HTTPヘッダーを返すことができます。
ウェブチェック: この必須フィールドは、実行するウェブチェックを定義します。これは、1つ以上のステップ、または単純なリクエストで定義されます。チェックは task_begin タグで始まり、task_end タグで終了します。
フォームのテストには、いくつかの追加変数を使用できます。
- resource (1 または 0):ウェブリソース (画像、ビデオなど) のすべてをダウンロードします。
- cookie (1 または 0):クッキーを保持し、以降のチェックのためにセッションを保持します。
- variable_name:フォームの変数名です。
- variable_value:上記変数名に対する値です。
簡単なトランザクションの例を以下に示します。
task_begin head http://apache.org/ task_end
コマンドを追加した別の例:
task_begin get http://apache.org/ cookie 0 resource 0 check_string Apache Software Foundation task_end
この基本的な例では、ウェブページに文字列があるかどうかをチェックしています。これは変数 check_string があるためです。 この変数では、HTML 自体をチェックすることはできません。テキストのサブストリングのみを検索します。 私たちは、Webサイト <http://apache.org> で “Apache Software Foundation” を探しています。 その文字列が存在する場合、チェックは OK を返します(サーバーの応答を確認するリモート HTTP モジュールの場合)
文字列が Web ページに存在しないことを確認するには、'check_not_string' を利用できます。
check_not_string Section 3
ドメインリダイレクトの場合、チェックが機能しないことがあります。これを解決する一つの方法は、最終的なドメインを指すようにモジュールを変更することです。例: curl -L
ウェブの応答時間チェック
ウェブの応答時間をチェックしたい場合は、モジュールタイプ Remote HTTP module to check latency を選択します。例:
task_begin get https://pandorafms.com task_end
- すべてのリソース (JavaScript、CSS、画像など) のダウンロード時間取得には、
task_endの前の行にresource 1を追加する必要があります。 - Web チェックでは、Proxy URL トークンでのプロキシの使用もサポートされています。
ウェブサイトのダウンロード時間は、ブラウザで Web サイトを表示するのにかかる時間ではありません。通常、これはJavaScriptの読み込み時間に依存し、JavaScriptをダウンロードしますが、実行しません。
ウェブページのフォームのチェック
フォームチェックは、Webページ上のテキストを単純にチェックするよりもはるかに複雑です。この種のチェックを実行するには、必要な認証情報が必要です。さらに、ページにアクセスしてHTMLコードを取得し、変数名を取得する必要があります。さらに、ネットワークサーバへのクエリを入力するには、最低限のHTMLの知識が必要です。
複数のステップを含む WEB トランザクションテストを設計する実用的な方法は、デバッグモードでステップを 1 つずつテストすることです。
Pandora コンソールのログイン URL が以下であると仮定します。
http://192.168.70.116/pandora_console/
HTML コードを確認すると、ログインフォームの変数は次の通りです。
nick> ユーザ名pass> パスワード
フォームの認証を通すためには、変数 variable_name および variable_value の両方が必要です。Pandora FMS コンソールのデフォルトは、admin および pandora です。
最初のステップはフォームへのアクセスです。次に、ユーザとパスワードを送り認証します。(認証の成功を 2つ目のステップで確認します)
task_begin post http://192.168.70.116/pandora_console/index.php?login=1 variable_name nick variable_value admin variable_name pass variable_value pandora cookie 1 resource 1 task_end
上記の設定で、ウェブページにアクセスし認証することができます。これにより、認証した状態でのウェブページ上の何らかのチェックを実行できます。cookie 1 トークンを使用して、前の手順で取得した cookie の永続性を維持します。 それらがなければ、セッションを再現することはできません。
2つ目のステップでは、ユーザーの詳細ページにアクセスし電話番号を探します。ユーザ “admin” のデフォルトは、555-555-555 です。 コンソールに正しくログインできているかどうかがわかります。
task_begin get http://192.168.70.116/pandora_console/index.php?sec=workspace&sec2=operation/users/user_edit cookie 1 resource 1 check_string 555-555-5555 task_end
最後にコンソールからログアウトし、ログアウトメッセージを探します。
task_begin get http://192.168.70.116/pandora_console/index.php?bye=bye cookie 1 resource 1 check_string Logged out task_end
サーバステータスコードの確認
ウェブサイトのサーバステータスコードを確認するには、モジュールの種類を選択します Remote HTTP module to check server status code:
task_begin head https://pandorafms.com task_end
- ステータス コードを取得するには、
headパラメータを使用することが重要です。 - サーバ設定のセクション web_engine に
curlと入力する必要があります。
HTTP の簡単な認証
一部のページでは、シンプルなHTTP認証が必要となる場合があります。これは通常、より高度なセキュリティチェック(暗号化、データの永続化など)へのアクセスを可能にする、最低限のセキュリティチェックとして使用されます。
http_auth_passに指定するパスワードではクォーテーションには対応していません。- シングルクォート
'の利用は避けてください。
WEB サービスおよび API モニタリング
Pandora FMS と Goliat webチェックにて、REST APIを監視することができます。ただし、SOAP や XML-RPC を用いた API は監視できません。
例えば、動作しているときに数値(0からn)で返すような特定の Web API を監視したい場合、次のようなコードで、Pandora は何も応答が無い場合に障害と認識します。
task_begin get http://artica.es/integria/include/api.php?user=my_user&pass=my_pass&op=get_stats&ms=opened,,1 check_string \n[0-9]+ task_end
実際の応答は次の通りです。
HTTP/1.1 200 OK Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Connection: close Date: Mon, 13 May 2013 15:39:27 GMT Pragma: no-cache Server: Apache Vary: Accept-Encoding Content-Type: text/html Expires: Thu, 19 Nov 1981 08:52:00 GMT Client-Date: Mon, 13 May 2013 15:39:27 GMT Client-Peer: 64.90.57.215:80 Client-Response-Num: 1 Client-Transfer-Encoding: chunked Set-Cookie: a81d4c5e530ad73e256b7729246d3d2c=pcasWqI6pZzT2x2AuWo602; path=/ 0
正規表現で出力を確認することにより、全体が正しく動作しているかを確認できます。より複雑な出力の場合は、それに合わせた正規表現を用います。データ部分だけでなく、応答内容全体をチェックすることに注意してください。そのため、HTTP ヘッダーにもマッチさせることができます。
別の例:
task_begin get https://swapi.dev/api/planets/1/ get_content Tatooine task_end
この場合、モジュールが監視を実行できるようにするデータのタイプは、'Remote HTTP module to retrieve string data (web_content_string)' である必要があります。
task_begin get https://pokeapi.co/api/v2/pokemon/ditto/ get_content imposter task_end
上記のモジュールと同様に、モジュールが正しく機能するには、定義されたデータのタイプが Remote HTTP module to retrieve string data (web_content_string)' である必要があります。
get_content_advanced でモジュールを作成することもできます。
task_begin get https://api.hillbillysoftware.com/Awards/ByYear/1990 get_content_advanced "Nominee":"([A-Za-z]]+)","Year":"1990" task_end
この呼び出しは以下を返します。
Pandora FMS は、次のように結果を表示します。
- 呼び出しが適切に実行されるように、括弧内のキャプチャグループを正しく定義することが重要です。
- API 呼び出しを行う場合、対象 API にクエリを実行するための権限が必要であることに注意することが重要です。
拡張オプション
HTTP ヘッダーのカスタマイズ
header オプションで、HTTP ヘッダのカスタマイズしたり追加したりできます。たとえば、Host HTTP ヘッダーを変更するには次のようにします。
task_begin get http://192.168.1.5/index.php header Host 192.168.1.1 task_end
ウェブチェックのデバッグ
ウェブチェックをデバッグしたい場合は、debug <ログファイル> オプションを追加します。ログファイル.req および ログファイル.res というファイルが作成され、HTTP リクエストと応答が記録されます。たとえば次のようにします。
task_begin get http://192.168.1.5/index.php debug /tmp/request.log task_end
LWP の代わりの Curl の利用
LWP は、複数スレッドで HTTPS リクエストを実行するとクラッシュすることがあります(OpenSSL の制約による)。代替としては curl ツール を利用することです。この問題を解決するためには、/etc/pandora/pandora_server.conf を編集し、次の行を加えます。
web_engine curl
Pandora FMS サーバを再起動すると、ウェブチェックに LWP の代わりに Curl バイナリが利用されます。
高度なトランザクション監視
PFMS ウェブサーバが提供する機能に加えて、トランザクション監視を実行する別の方法があります: WEB ユーザエクスペリエンス監視 (WUX)。

