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トランザクション” の実行では、フォーム内での自分自身の認証、メニューオプションのクリック、フォームの入力、各ステップで特定のテキスト文字列を返すことの確認など、完全なブラウジングプロセスを忠実に再現します。
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”.
ウェブページをモニタするには、まずはモジュールタブをクリックします。その後 'ウェブサーバモジュールの新規作成(Create a new webserver module)' を選択し、作成(Create) をクリックします。
作成をクリックすると、ウェブをモニタするために必要な設定を入力するためのフォームが表示されます。名前や、Webチェックのタイプなど、基本的なものです。
複数のチェックタイプが選択できます。
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\)
です。 これにより、強力な検索を行うことができますが、文字や数字以外の文字は \
でエスケープする必要があることに注意してください。
フォームをチェックするには、いくつかの拡張変数があります。
これらの値を利用することにより、フォームにデータを送信し、正しく動作するかどうかをチェックすることができます。
ドメインのリダイレクションには対応していません。この問題に対応するには、リダイレクトされた後にアクセスされるアドレスでモジュールを作成する必要があります。
前のケースでは、 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
resource 1
must be added in a line before task_end
.task_end
の前の行に resource 1
を追加する必要があります。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 上での全体の設定は次のようになります。
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
head
parameter to obtain the status code.curl
must be typed in.head
パラメータを使用することが重要です。curl
と入力する必要があります。
いくつかのウェブページでは、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 に呼び出しを許可する適切な権限があるかどうかを確認する必要があります。
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 は、複数スレッドで HTTPS リクエストを実行するとクラッシュすることがあります(OpenSSL の制約による)。代替としては curl ツール を利用することです。この問題を解決するためには、/etc/pandora/pandora_server.conf を編集し、次の行を加えます。
web_engine curl
Pandora FMS サーバを再起動すると、ウェブチェックに LWP の代わりに Curl バイナリが利用されます。
Goliath が提供する機能に加えて、Web トランザクション監視を実行する他の方法があります。一つは分散型(UX)で、アクセスできないネットワークであっても、サーバとは異なるシステムに “エージェント” として展開します。もう一つは集中化された方法(WUX)です。より詳細については ユーザエクスペリエンス監視 (UX および WUX) を参照してください。
ウェブチェックは、プロキシ経由でも行うことができます。プロキシを設定するには、拡張オプション(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
以外の文字列を受信すると、モジュールは障害状態になります。
get_content_advanced
must be enclosed in brackets.\
.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) を実行する数です。例:
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<mpl=default<mplcache=2 cookie 1 resource 0 check_string Google task_end