Pandora: Documentation ja: Web Monitoring

From Pandora FMS Wiki
Jump to: navigation, search

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

1 ユーザのウェブブラウジング目線の監視

1.1 概要

Enterprise 版では、Goliat サーバと呼ばれる Webサーバコンポーネントを用いて、Web を監視することができます。

GoliatLogo 2.jpg

この機能は、Pandora FMS の創設者の古いプロジェクトが元になっています。Goliat F.I.S.T. は、Web サービスにおいて動的な認証の実行を行うオープンソースのプロジェクトでした。(2002年から)ソースコードを確認することができますが、更新は 2010年で終了しました。 [1]

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

処理のある時点で障害が発生するとチェックに失敗します。 完全なトランザクションには、実際のナビゲーションに含まれるすべてのリソース(グラフィックス、アニメーションなど)のダウンロードが含まれます。 応答時間とパフォーマンスチェックの実行に加えて、Webページから値を抽出して処理することも可能です。

Goliatは、HTTP と HTTPS の両方を透過的に監視し、クッキーによるセッション管理、パラメータの受け渡しをサポートします。もちろん、各ページに関連するリソースをダウンロードできます。ただし、実行時の動的な javascript の管理などに制限があります。 より複雑な Web トランザクションの場合、Pandora FMS には WUX 監視(Webユーザーエクスペリエンス)というより強力で複雑なコンポーネントがあります。詳しくはこちら [2] を参照してください。

1.2 インストールと設定

Goliat を利用できるようにするには、最初に Pandora FMS Enterprise サーバを有効化する必要があります。

webserver 1

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

web_threads 1 
web_timeout 60

Goliat が使うライブラリのタイプ (LWP または CURL) を変更できる拡張設定トークンがあります。デフォルトでは、LWP が利用されていますが、問題(SSL 接続、長時間のタイムアウト、多数のスレッドの並列性の問題)がある場合は、CURL へ切り替えることができます。

web_engine curl

1.3 ウェブモジュールの作成方法

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

Gagita2.png

作成をクリックすると、ウェブをモニタするために必要な設定を入力するためのフォームが表示されます。名前や、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 応答から文字列を取得します。

ウェブチェック

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

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

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

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

Template warning.png

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

 


Template warning.png

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

 


1.4 ウェブの応答時間チェック

ウェブの応答時間をチェックしたい場合は、モジュールタイプ Remote HTTP module to check latency を選択する必要があるのみです。http://pandorafms.com の応答時間を知りたい場合、コードは次のようになります。

task_begin
get http://pandorafms.com
task_end

設定トークン resource 1 を追加すると、すべてのリソース(JavaScript、CSS、イメージなど)をダウンロードし、それにかかった実際の時間を計算できるようになります。

Info.png

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

 


1.5 プロキシ経由でのウェブチェック

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



Goliat proxy conf.png



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

http://proxy.domain.com:8080

認証が必要なプロキシの場合は、次のように URL を設定します。

http://my_user:[email protected]:8080

1.6 Webコンテンツの取得

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

task_begin
get http://finance.google.com/finance/info?client=ig&q=NASDAQ%3aGOOG
get_content \d+\.\d+
task_end

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



Google stock quote.png


また、より複雑な HTTP 応答からのデータを収集するための正規表現を設定トークン get_content_advanced で指定することもできます。

task_begin
get http://finance.yahoo.com/q?s=GOOG
get_content_advanced <span id="yfs_l84_goog">([\d\.]+)</span>
task_end

Template warning.png

(get_content_advanced に定義する)正規表現は、カッコでくくらなければいけません。

 


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

1.7 ウェブページのフォームのチェック

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

このタイプのチェックを実行するには、ログインに必要な資格情報が必要です。これらの値を使用して HTML フォームに「送信」するためです。また、ページに移動して HTML のソースから変数名を見る必要があります。どのように Goliat が動作するかを理解するためには、HTML に関する最小限の知識が必要です。この例では、デフォルトの認証情報である "asdmin" ユーザおよびパスワードに "pandora" を使用しています。 デフォルト設定を変更していない場合は、良い機会なので変更してください。

Info.png

複数ステップの WEB トランザクションテストを設定するときに、設定を確認する良い方法としては、ステップの 1つで何かが見逃された場合に備えて、ステップごとにテストすることです。

 


Pandora コンソールのログイン URL が以下であると仮定します。

http://192.168.70.116/pandora_console/

HTML コードを確認すると、ログインフォームの変数は次の通りです。

  • nick: ユーザ名
  • pass: パスワード

フォームの認証を通すためには、変数 variable_name および variable_value の両方が必要です。

最初のステップはフォームへのアクセスです。次に、ユーザとパスワードを送り認証します。(認証の成功を 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

1.8 WEB リクエストの動作

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

タイムアウト(Timeout)

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

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

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

リクエスト(Requests)

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

リトライ(Retries)

リクエストとは別の動作をします。たとえば、この値が 1より大きく、最初に失敗すると、成功するまで指定した回数だけ再試行します。 たとえば、retries = 2 および Rrequests = 1 の場合、最初のテストが失敗した場合はもう一度試行し、2番目のテストが成功した場合は、チェックが有効と見なされます。 Requests = 2、Retries = 1 の場合は 2回チェックしますが、どちらかが失敗した場合は障害と見なします。

1.9 HTTP の簡単な認証

いくつかのウェブページでは、HTTP 認証を必要とします。これは、通常のユーザとパスワードのフォームではありません。例えば、サイトにアクセスしたときに、ユーザ名とパスワードの入力がポップアップします。

Conexion http.png

(上記スクリーンショットのように)拡張オプションで設定することも、次の設定トークンを使用して 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

1.10 WEB サービスモニタリング

Pandora FMS と Goliat webチェックにて、REST 仕様に基づいたウェブサービス/APIを監視することができます。ただし、SOAP や XML-RPC のウェブサービスは監視できません。

例えば、動作しているときに数値(0からn)で返すような特定の Web API を監視したい場合、次のようなコードで、Pandora は何も応答が無い場合に障害と認識します。

task_begin
get http://artica.es/integria/include/api.php?user=slerena&pass=xxxx&op=get_stats&params=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

これは、モジュールは正常状態を返します。なぜなら、正規表現により改行コードの前に 0 が見つかるためです。データ部分だけでなく、応答内容全体をチェックすることに注意してください。そのため、HTTP ヘッダーにもマッチさせることができます。他の応答を確認するのであれば、異なる正規表現が必要です。

1.11 HTTPS モニタリング

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

1.12 IPv6 対応

バージョン 4.0.3 から、Goliat (Pandora FMS ウェブシナリオ監視のためのライブラリ)は、IPv6 に対応しています。IPv6 サイトのモニタリングには、fqdn を利用する必要があります。

モニタリング対象は、ホスト名でなければいけません(例: ipv6.google.com)。IPv6 アドレス表記(例: [::1], [2404:6800:4004:803::1014]など)には対応していません。これは、LWP(libwww-perl)の制約によるものです。

1.13 拡張オプション

1.13.1 HTTP ヘッダーのカスタマイズ (バージョン 4.0.2 から)

header オプションで、HTTP ヘッダのカスタマイズしたり追加したりできます。たとえば、Host HTTP ヘッダーを変更するには次のようにします。

task_begin
get http://192.168.1.5/index.php
header Host 192.168.1.1
task_end

1.13.2 ウェブチェックのデバッグ (バージョン 4.0.2 から)

ウェブチェックをデバッグしたい場合は、debug <ログファイル> オプションを追加します。ログファイル.req および ログファイル.res というファイルが作成され、HTTP リクエストと応答が記録されます。たとえば次のようにします。

task_begin
get http://192.168.1.5/index.php
debug /tmp/request.log
task_end

上記の設定では、/tmp/request.log.req/tmp/request.log.res というファイルが生成されます。

1.13.3 LWP の代わりの Curl の利用

LWP は、複数スレッドで HTTPS リクエストを実行するとクラッシュすることがあります。この問題を解決するためには、/etc/pandora/pandora_server.conf を編集し、次の行を加えます。

web_engine curl

Pandora FMS サーバを再起動すると、ウェブチェックに LWP の代わりに Curl バイナリが利用されます。

2 Selenium を使った Web シナリオ監視

Selenium logo.png

Pandora FMS の Enterprise に付属する Goliat の機能に加えて、Pandora FMS のサーバではなくエージェントを使ってシナリオ監視を行う別の方法があります。これにより負荷を軽減することができ、異なるウェブサイトやアプリを監視するためにリモートのネットワークにあるサーバを利用することができます。

Goliat の代わりに、Selenium [3] を利用します。これは、"クリック" で操作することができ、Goliat よりも使いやすいです。Selenium のプラグインは、システムブラウザを使って Selenium サーバと通信を行います。Chrome、Firefox、IE などを利用できます。Windows または Linux で実行し、応答速度やセッションの確認も行います。また、ブラウザでサポートされている、javascript や java アプレット、フラッシュなどにも対応しています。

非常に幅広く特徴的な Selenium プラグインのドキュメントは、Enterprise Selenium プラグインと共に、Pandora FMS モジュールライブラリ から取得できます。

この機能性は向上しており、Pandora UX を使用して、デスクトップとウェブの両方のユーザ操作のセッションを自動監視できるようになりました。