ja:documentation:pandorafms:monitoring:06_web_monitoring

ウェブ監視

In Pandora FMS it works as an independent server, similar to the Network server, the WMI server or the remote plugins server. This system operates under the principle of web transaction, where each completed transaction against one or several WEB pages is defined by one or more consecutive steps, which must conclude satisfactorily to consider that the transaction has ended successfully.

Pandora FMS では、ネットワークサーバ、WMIサーバ、プラグインサーバなどと同様に、独立したサーバとして機能します。 このシステムは、“Webトランザクション” という考えのもとで動作します。ここでは、各トランザクションは 1つまたは複数の連続ステップで定義され、トランザクションを正常に完了させるために、正しく順序だてられている必要があります。“Webトランザクション” の実行では、フォーム内での自分自身の認証、メニューオプションのクリック、フォームの入力、各ステップで特定のテキスト文字列を返すことの確認など、完全なブラウジングプロセスを忠実に再現します。

  • Web server has important limitations such as the dynamic management of JavaScript at runtime.
  • For more complex web transactions, Pandora FMS has another much more powerful (and complex) component called WUX Monitoring (Web User Experience).
  • Web サーバには、実行時の JavaScript の動的管理などの重要な制限があります
  • より複雑な Web トランザクション用に、Pandora FMS には WUX 監視 (Web ユーザエクスペリエンス) と呼ばれる、さらに強力な (そして複雑な) コンポーネントがあります。

The Pandora FMS server must be activated and restarted with:

以下のように Pandora FMS サーバを有効化再起動します。

webserver 1

実行したいリクエスト数に応じて、スレッド数およびデフォルトのタイムアウトを増やします。

 web_threads 1 
 web_timeout 60

Goliat が使うライブラリのタイプ (LWP または CURL) を変更できる拡張設定トークンがあります。デフォルトでは CURL が利用されていますが、切り替えることができます。

web_engine curl


Pandora FMS has protection against CSRF and it may happen that the web checks, when debugged, you get this message:
Cannot verify the origin of the request
Please take this protection into account when considering the use of “WUX monitoring”.


Pandora FMS は CSRF に対して保護されており、デバッグ時に Web チェックで次のメッセージが表示される場合があります:
Cannot verify the origin of the request
WUX 監視 の使用を検討する際には、この保護を考慮に入れてください、

ウェブページをモニタするには、まずはモジュールタブをクリックします。その後 'ウェブサーバモジュールの新規作成(Create a new webserver module)' を選択し、作成(Create) をクリックします。

作成をクリックすると、ウェブをモニタするために必要な設定を入力するためのフォームが表示されます。名前や、Webチェックのタイプなど、基本的なものです。

goliat_types.jpg

複数のチェックタイプが選択できます。

  • 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ヘッダーを返すことができます。

ウェブチェック

この必須フィールドは、実行される WEB チェックを定義します。 これは、1つ以上のステップまたは単一のリクエストで定義されます。 これらのリクエストは、Web 検査フィールドに特別な形式で設定しなければなりません。 チェックは task_begin で開始し、task_end で終了します。

簡単なトランザクションの例を以下に示します。

 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

check_string 構文がとる引数は、通常のテキスト文字列ではなく、“正規表現”です。 つまり、文字列 “Pandora FMS (4.0)” の検索は正規表現で行う必要があります。 例えば、Pandora FMS \(4.0\) です。 これにより、強力な検索を行うことができますが、文字や数字以外の文字は \ でエスケープする必要があることに注意してください。

フォームをチェックするには、いくつかの拡張変数があります。

  • resource (1 または 0):ウェブリソース (画像、ビデオなど) のすべてをダウンロードします。
  • cookie (1 または 0):クッキーを保持し、以降のチェックのためにセッションを保持します。
  • variable_name:フォームの変数名です。
  • variable_value:上記変数名に対する値です。

これらの値を利用することにより、フォームにデータを送信し、正しく動作するかどうかをチェックすることができます。

ドメインのリダイレクションには対応していません。この問題に対応するには、リダイレクトされた後にアクセスされるアドレスでモジュールを作成する必要があります。

前のケースでは、 curl コマンドのパラメータが短いバージョンでは、

-L

であり、長いバージョンでは、

--location

であるため、HTTP 3XX リダイレクトを受けた場合、リダイレクトされたドメインに対して再度実行されます。 ただし、Pandora FMS の柔軟性により、デバッグボタンを使用できます。

モジュールの作成時点では、モジュールは有効化されておらず、最初のチェックを実行した後モジュールを使用できるようになります。これを強制的に実行して時間を節約できます。

このモジュールを変更するときは、デバッグ(Debug) ボタンをクリックすると、デバッグモードに入って クエリ(Query) を編集できます。

モジュールのクエリを クエリの実行(Execute query) ボタンで実行したり、目的の結果が得られるまで他の値に変更して再実行したりできます。

To check the response time or latency of a web page, select the module type Remote HTTP module to check latency. Example:

ウェブの応答時間をチェックしたい場合は、モジュールタイプ Remote HTTP module to check latency を選択します。例:

task_begin
get https://pandorafms.com
task_end
  • For the download time to include all resources (JavaScript, CSS, images, etc.), resource 1 must be added in a line before task_end.
  • Web checks also support the use of proxy in the Proxy URL token.
  • すべてのリソース (JavaScript、CSS、画像など) のダウンロード時間取得には、task_end の前の行に resource 1 を追加する必要があります。
  • Web チェックでは、Proxy URL トークンでのプロキシの使用もサポートされています。

The web download time is not the time it takes to display a website in a browser, as this is usually dependent on the JavaScript load time.

ウェブサイトのダウンロード時間は、ブラウザで Web サイトを表示するのにかかる時間ではありません。通常、これはJavaScriptの読み込み時間に依存し、JavaScriptをダウンロードしますが、実行しません。

より実用的な、Web フォームのチェックです。 しかし、これは単に Web ページ上のテキストをチェックするよりもはるかに複雑です。 このサンプルチェックでは、Pandora 自身のコンソールを使用してログインし、ログインできたことを確認し、ログインしているユーザのデータが表示されているワークスペースのテキストを確認します。 デフォルトのコンソールであれば、管理者のユーザには、“Admin Pandora” という記述が含まれています。

このタイプのチェックを実行するには、ログインに必要な資格情報が必要です。これらの値を使用して HTML フォームに「送信」するためです。また、ページに移動して HTML のソースから変数名を見る必要があります。どのように Goliat が動作するかを理解するためには、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

Pandora FMS 上での全体の設定は次のようになります。

goliat_full_sample.jpg

To check the server status code of a website, select the type of module Remote HTTP module to check server status code:

ウェブサイトのサーバステータスコードを確認するには、モジュールの種類を選択します Remote HTTP module to check server status code:

task_begin
head https://pandorafms.com
task_end
  • It is important to use the head parameter to obtain the status code.
  • In server configuration, in section web_engine curl must be typed in.
  • ステータス コードを取得するには、head パラメータを使用することが重要です。
  • サーバ設定のセクション web_enginecurl と入力する必要があります。

いくつかのウェブページでは、HTTP 基本認証 を必要とします。通常、これは高速認証、高度なセキュリティチェック(暗号化、データ永続性など)へのアクセスを可能にする最小限のセキュリティとして使用されます。

(上記スクリーンショットのように)拡張オプションで設定することも、次の設定トークンを使用して WEB タスク定義で直接設定することもできます。

チェックタイプ(Check type)

HTTP サーバチェックタイプ

http認証(ログイン)(http auth (login))

ユーザ名

http認証(パスワード)(http auth (password))

パスワード

プロキシ認証レルム(Proxy auth realm)

認証レルム名

プロキシ認証(サーバ)(Proxy auth (server))

待ち受けているドメインと HTTP ポート

プロキシURL(Proxy URL)

プロキシサーバの URL

プロキシ認証(ログイン)(Proxy auth (login))

プロキシ接続ユーザ

プロキシ認証(パスワード)(Proxy auth (pass))

プロキシ接続パスワード

タスク全体の例:

 task_begin
 get http://artica.es/pandoraupdate4/ui/
 cookie 1
 resource 1
 check_string Pandora FMS Update Manager \(4.0\)
 http_auth_serverport artica.es:80
 http_auth_realm Private area
 http_auth_user admin
 http_auth_pass xxxx
 task_end

The use of quotation marks in the password for http_auth_pass is not supported. Avoid using single quotes ' .

http_auth_pass に指定するパスワードではクォーテーションには対応していません。シングルクォート ' の利用は避けてください。

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 バイナリが利用されます。

Goliath が提供する機能に加えて、Web トランザクション監視を実行する他の方法があります。一つは分散型(UX)で、アクセスできないネットワークであっても、サーバとは異なるシステムに “エージェント” として展開します。もう一つは集中化された方法(WUX)です。より詳細については ユーザエクスペリエンス監視 (UX および WUX) を参照してください。

Pandora FMS ドキュメント一覧に戻る

ウェブチェックは、プロキシ経由でも行うことができます。プロキシを設定するには、拡張オプション(Advanced options) をクリックすると表示される、プロキシURL(Proxy URL) フィールドにプロキシの URL を設定する必要があります。

例えば、URL は次のようになります。

http://proxy.domain.com:8080

認証が必要なプロキシの場合は、次のように my-user にユーザ名、my_pwd にパスワードを指定します。

http://my_user:my_pwd@proxy.domain.com:8080

Sometimes monitoring does not consist of finding out whether a specific Web site is working or how long it takes, but to get a real time value, such as the total number of modules registered in the same PFMS server through the API. For this example a module called Remote HTTP module to retrieve numeric data will be used with the appropriate regular expression:

特定の Web サイトが稼動しているか、どれくらい時間がかかっているかを知りたいわけではなく、API を通してPandora FMS サーバに登録されたモジュール数などのコンテンツの内容を確認したい場合もあります。そのためには、適切な正規表現で Remote HTTP module to retrieve numeric data モジュールを利用します。

task_begin
get http://127.0.0.1/pandora_console/include/api.php?apipass=1234&user=internal_API&pass=1234&op=get&op2=total_modules&id=0
get_content \d+
task_end

出力は次のようになります。

It is also possible to specify a more complex regular expression for collecting data from more complex HTTP responses with the get_content_advanced configuration token. In this didactic example, the year is obtained in the footer of Pandora FMS official documentation (and stored in a string data type, Remote HTTP module to retrieve string data):

また、より複雑な HTTP 応答からのデータを収集するための正規表現を設定トークン get_content_advanced で指定することもできます。この実践的な例では、Pandora FMS 公式ドキュメントのフッターから年を取得します(また、文字列データタイプ Remote HTTP module to retrieve string data で保存します:

task_begin
get https://pandorafms.com/manual/
get_content_advanced \(c\) ([\d]+) Pandora FMS\(tm\) </span>
task_end

Note that the inverse interval has been used: if a string other than 2022 is received, the module will go into critical.

しきい値の反転が使用されていることに注意してください。2022 以外の文字列を受信すると、モジュールは障害状態になります。

  • The part of the regular expression defined in get_content_advanced must be enclosed in brackets.
  • If the text to be looked for contains parentheses, you must escape the characters by means of the backslash \.
  • get_content_advanced に定義する正規表現は、カッコでくくらなければいけません。
  • 検索するテキストにカッコが含まれている場合は、バックスラッシュ \ を使用して文字をエスケープする必要があります。

To configure the thresholds that will trigger warning or critical status, use the module configuration to verify that the received string matches what is expected.

警告または障害状態のしきい値を設定するには、モジュールの設定を使用して、受信した文字列が期待どおりのものであることを確認します。

拡張プロパティのフィールドは他のタイプのモジュールのフィールドと似ていますが、WEB チェックではいくつかの異なるフィールドがあります。

タイムアウト(Timeout)

これはリクエストのタイムアウトです。この時間を超えるとリクエストは破棄されます。

エージェントブラウザID(Agent browser id)

これは、特定のページが一部の Web ブラウザのみを受け入れる場合に使用する Web ブラウザの識別子です。(詳細は、https://www.zytrax.com/tech/web/browser_ids.htm を参照してください)

リクエスト(Requests)

Pandora FMS は、このパラメータで示された回数だけチェックを繰り返します。 チェックの 1つが失敗した場合、障害とみなされます。モジュール内のチェックの数に応じて、一定数のページが取得されます。 つまり、モジュールが 3つのチェックで構成されている場合は、3ページがダウンロードされ、リクエストフィールドに値が設定されている場合は、ダウンロード数はその数を掛け合わせた数になります。 モジュールが処理を完了するのにかかる合計時間を把握するには、これを覚えておくことが重要です。

リトライ(Retries)

成功するまで リクエスト(Request) を実行する数です。例:

  • リトライ = 2、リクエスト = 1: 最初のテストに失敗すると、もう一度実行し、2回目で成功すると、正常と判断します。
  • リトライ = 1、リクエスト = 2: 2回のチェックを実行します。しかし一方の失敗で、障害と判断します。

Goliat は HTTP と HTTPS の両方をチェックできます。 HTTPS を利用しているセキュリティで保護されたウェブサイトのチェックを行うには、その URL にプロトコルを組み込むだけです。

task_begin
get https://www.google.com/accounts/ServiceLogin?service=mail&passive=true&rm=false&continue=https%3A%2F%2Fmail.google.com%2Fmail%2F%3Fui%3Dhtml%26zy%3Dl&bsv=zpwhtygjntrz&ss=1&scc=1&ltmpl=default&ltmplcache=2
cookie 1
resource 0
check_string Google
task_end
  • ja/documentation/pandorafms/monitoring/06_web_monitoring.txt
  • 最終更新: 2024/11/16 07:59
  • by junichi