差分
このページの2つのバージョン間の差分を表示します。
次のリビジョン | 前のリビジョン 次のリビジョン 両方とも次のリビジョン | ||
ja:documentation:03_monitoring:06_web_monitoring [2021/04/17 10:56] 0.0.0.0 created |
ja:documentation:03_monitoring:06_web_monitoring [2021/07/03 23:16] junichi [WEB サービスおよび API モニタリング] |
||
---|---|---|---|
行 1: | 行 1: | ||
+ | ====== ウェブモニタリング ====== | ||
+ | {{indexmenu_n> | ||
+ | |||
+ | [[ja: | ||
+ | |||
+ | ===== クラッシックなウェブ監視 ===== | ||
+ | |||
+ | ==== 概要 ==== | ||
+ | |||
+ | Enterprise 版{{: | ||
+ | |||
+ | この機能は、Pandora FMS の創設者の古いプロジェクトが元になっています。Goliat F.I.S.T. は、Web サービスにおいて動的な認証の実行を行うオープンソースのプロジェクトでした。(2002年から)ソースコードを確認することができますが、更新は 2010年で終了しました。 [[https:// | ||
+ | |||
+ | Pandora FMS では、ネットワークサーバ、WMIサーバ、プラグインサーバなどと同様に、独立したサーバとして機能します。 このシステムは、" | ||
+ | |||
+ | 処理のある時点で障害が発生するとチェックに失敗します。 完全なトランザクションには、実際のナビゲーションに含まれるすべてのリソース(グラフィックス、アニメーションなど)のダウンロードが含まれます。 応答時間とパフォーマンスチェックの実行に加えて、Webページから値を抽出して処理することも可能です。 | ||
+ | |||
+ | Goliatは、HTTP と HTTPS の両方を透過的に監視し、クッキーによるセッション管理、パラメータの受け渡しをサポートします。もちろん、各ページに関連するリソースをダウンロードできます。ただし、実行時の動的な javascript の管理などに制限があります。 より複雑な Web トランザクションの場合、Pandora FMS には [[: | ||
+ | |||
+ | |||
+ | ==== インストールと設定 ==== | ||
+ | Goliat を利用できるようにするには、最初に Pandora FMS Enterprise サーバを有効化する必要があります。 | ||
+ | |||
+ | webserver 1 | ||
+ | |||
+ | 実行したいリクエスト数に応じて、スレッド数およびデフォルトのタイムアウトを増やします。 | ||
+ | |||
+ | < | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Goliat が使うライブラリのタイプ (LWP または CURL) を変更できる拡張設定トークンがあります。デフォルトでは CURL が利用されていますが、切り替えることができます。 | ||
+ | |||
+ | web_engine curl | ||
+ | |||
+ | ==== ウェブモジュールの作成方法 ==== | ||
+ | ウェブページをモニタするには、まずはモジュールタブをクリックします。その後 ' | ||
+ | |||
+ | {{ wiki: | ||
+ | |||
+ | // | ||
+ | |||
+ | {{ wiki: | ||
+ | |||
+ | 複数のチェックタイプが選択できます。 | ||
+ | |||
+ | * **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 チェックを定義します。 これは、1つ以上のステップまたは単一のリクエストで定義されます。 これらのリクエストは、Web 検査フィールドに特別な形式で設定しなければなりません。 チェックは // | ||
+ | |||
+ | 簡単なトランザクションの例を以下に示します。 | ||
+ | |||
+ | < | ||
+ | | ||
+ | head http:// | ||
+ | | ||
+ | </ | ||
+ | |||
+ | {{ wiki: | ||
+ | |||
+ | 保存したのち、モジュールを強制実行して結果を見ることができます。 | ||
+ | |||
+ | {{ wiki: | ||
+ | |||
+ | コマンドを追加した別の例: | ||
+ | |||
+ | < | ||
+ | | ||
+ | get http:// | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | この基本的な例では、ウェブページに文字列があるかどうかをチェックしています。これは変数 **check_string** があるためです。 この変数では、HTML 自体をチェックすることはできません。テキストのサブストリングのみを検索します。 私たちは、Webサイト http:// | ||
+ | |||
+ | 文字列が Web ページに存在しないことを確認するには、' | ||
+ | |||
+ | check_not_string Section 3 | ||
+ | |||
+ | '' | ||
+ | |||
+ | フォームをチェックするには、いくつかの拡張変数があります。 | ||
+ | |||
+ | * **resource (1 または 0)**: | ||
+ | * **cookie (1 または 0)**: | ||
+ | * **variable_name**: | ||
+ | * **variable_value**: | ||
+ | |||
+ | これらの値を利用することにより、フォームにデータを送信し、正しく動作するかどうかをチェックすることができます。 | ||
+ | |||
+ | <WRAP center round important 60%> | ||
+ | ドメインのリダイレクションには対応していません。この問題に対応するには、リダイレクトされた後にアクセスされるアドレスでモジュールを作成する必要があります。 | ||
+ | </ | ||
+ | |||
+ | 前のケースでは、 **curl** コマンドのパラメータが短いバージョンでは '' | ||
+ | |||
+ | {{ wiki: | ||
+ | |||
+ | モジュールの作成時点では、モジュールは有効化されておらず、最初のチェックを実行した後モジュールを使用できるようになります。これを強制的に実行して時間を節約できます。 | ||
+ | |||
+ | このモジュールを変更するときは、**デバッグ(Debug)** ボタンをクリックすると、デバッグモードに入って **クエリ(Query)** を編集できます。 | ||
+ | |||
+ | {{ wiki: | ||
+ | |||
+ | モジュールのクエリを **クエリの実行(Execute query)** ボタンで実行したり、目的の結果が得られるまで他の値に変更して再実行したりできます。 | ||
+ | |||
+ | {{ wiki: | ||
+ | |||
+ | ==== ウェブの応答時間チェック ==== | ||
+ | ウェブの応答時間をチェックしたい場合は、モジュールタイプ //Remote HTTP module to check latency// を選択する必要があるのみです。< | ||
+ | |||
+ | < | ||
+ | | ||
+ | get https:// | ||
+ | | ||
+ | </ | ||
+ | |||
+ | 設定トークン '' | ||
+ | |||
+ | <WRAP center round tip 60%> | ||
+ | ウェブサイトのダウンロード時間は、ブラウザで Web サイトを表示するのにかかる時間ではありません。通常、これはJavaScriptの読み込み時間に依存し、Goliat は JavaScriptをダウンロードしますが、実行しません。 | ||
+ | </ | ||
+ | |||
+ | ==== プロキシ経由でのウェブチェック ==== | ||
+ | ウェブチェックは、プロキシ経由でも行うことができます。プロキシを設定するには、// | ||
+ | |||
+ | 例えば、URL は次のようになります。 | ||
+ | |||
+ | http:// | ||
+ | |||
+ | 認証が必要なプロキシの場合は、次のように '' | ||
+ | |||
+ | http:// | ||
+ | |||
+ | {{ wiki: | ||
+ | |||
+ | ==== Webコンテンツの取得 ==== | ||
+ | 特定の Web サイトが稼動しているか、どれくらい時間がかかっているかを知りたいわけではなく、Google の株価などコンテンツの内容を確認したい場合もあります。そのためには、適切な正規表現で //Remote HTTP module to retrieve numeric data// モジュールを利用します。 | ||
+ | |||
+ | < | ||
+ | | ||
+ | get http:// | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | 出力は次のようになります。 | ||
+ | |||
+ | {{ wiki: | ||
+ | |||
+ | また、より複雑な HTTP 応答からのデータを収集するための正規表現を設定トークン '' | ||
+ | |||
+ | < | ||
+ | | ||
+ | get http:// | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | <WRAP center round important 60%> | ||
+ | '' | ||
+ | </ | ||
+ | |||
+ | 警告または障害状態のしきい値を設定するには、モジュールの設定を使用して、受信した文字列が期待どおりのものであることを確認します。 | ||
+ | |||
+ | ==== ウェブページのフォームのチェック ==== | ||
+ | より実用的な、Web フォームのチェックです。 しかし、これは単に Web ページ上のテキストをチェックするよりもはるかに複雑です。 このサンプルチェックでは、Pandora 自身のコンソールを使用してログインし、ログインできたことを確認し、ログインしているユーザのデータが表示されているワークスペースのテキストを確認します。 デフォルトのコンソールであれば、管理者のユーザには、" | ||
+ | |||
+ | このタイプのチェックを実行するには、ログインに必要な資格情報が必要です。これらの値を使用して HTML フォームに「送信」するためです。また、ページに移動して HTML のソースから変数名を見る必要があります。どのように Goliat が動作するかを理解するためには、HTML に関する最小限の知識が必要です。 | ||
+ | |||
+ | <WRAP center round tip 60%> | ||
+ | 複数ステップの WEB トランザクションテストを設定するときに、設定を確認する良い方法としては、ステップの 1つで何かが見逃された場合に備えて、ステップごとにテストすることです。 | ||
+ | </ | ||
+ | |||
+ | Pandora コンソールのログイン URL が以下であると仮定します。 | ||
+ | |||
+ | http:// | ||
+ | |||
+ | HTML コードを確認すると、ログインフォームの変数は次の通りです。 | ||
+ | |||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | フォームの認証を通すためには、変数 '' | ||
+ | |||
+ | 最初のステップはフォームへのアクセスです。次に、ユーザとパスワードを送り認証します。(認証の成功を 2つ目のステップで確認します) | ||
+ | |||
+ | < | ||
+ | task_begin | ||
+ | post http:// | ||
+ | variable_name nick | ||
+ | variable_value admin | ||
+ | variable_name pass | ||
+ | variable_value pandora | ||
+ | cookie 1 | ||
+ | resource 1 | ||
+ | task_end | ||
+ | </ | ||
+ | |||
+ | 上記の設定で、ウェブページにアクセスし認証することができます。これにより、認証した状態でのウェブページ上の何らかのチェックを実行できます。cookie 1 トークンを使用して、前の手順で取得した cookie の永続性を維持します。 それらがなければ、セッションを再現することはできません。 | ||
+ | |||
+ | 2つ目のステップでは、ユーザーの詳細ページにアクセスし電話番号を探します。ユーザ " | ||
+ | |||
+ | < | ||
+ | task_begin | ||
+ | get http:// | ||
+ | cookie 1 | ||
+ | resource 1 | ||
+ | check_string 555-555-5555 | ||
+ | task_end | ||
+ | </ | ||
+ | |||
+ | 最後にコンソールからログアウトし、ログアウトメッセージを探します。 | ||
+ | |||
+ | < | ||
+ | task_begin | ||
+ | get http:// | ||
+ | cookie 1 | ||
+ | resource 1 | ||
+ | check_string Logged out | ||
+ | task_end | ||
+ | </ | ||
+ | |||
+ | Pandora FMS 上での全体の設定は次のようになります。 | ||
+ | |||
+ | {{ wiki: | ||
+ | |||
+ | ==== WEB リクエストの動作 ==== | ||
+ | 拡張プロパティのフィールドは他のタイプのモジュールのフィールドと似ていますが、WEB チェックではいくつかの異なるフィールドがあります。 | ||
+ | |||
+ | **タイムアウト(Timeout)** | ||
+ | |||
+ | これはリクエストのタイムアウトです。この時間を超えるとリクエストは破棄されます。 | ||
+ | |||
+ | |||
+ | **エージェントブラウザID(Agent browser id)** | ||
+ | |||
+ | | ||
+ | |||
+ | |||
+ | **リクエスト(Requests)** | ||
+ | |||
+ | | ||
+ | |||
+ | **リトライ(Retries)** | ||
+ | |||
+ | 成功するまで **リクエスト(Request)** を実行する数です。例: | ||
+ | |||
+ | * リトライ = 2、リクエスト = 1: 最初のテストに失敗すると、もう一度実行し、2回目で成功すると、正常と判断します。 | ||
+ | * リトライ = 1、リクエスト = 2: 2回のチェックを実行します。しかし一方の失敗で、障害と判断します。 | ||
+ | |||
+ | ==== HTTP の簡単な認証 ==== | ||
+ | |||
+ | いくつかのウェブページでは、[[https:// | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | (上記スクリーンショットのように)拡張オプションで設定することも、次の設定トークンを使用して 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))** | ||
+ | |||
+ | プロキシ接続パスワード | ||
+ | |||
+ | タスク全体の例: | ||
+ | < | ||
+ | |||
+ | | ||
+ | get http:// | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | </ | ||
+ | |||
+ | <WRAP center round important 60%> '' | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | ==== WEB サービスおよび API モニタリング ==== | ||
+ | |||
+ | Pandora FMS と Goliat webチェックにて、[[https:// | ||
+ | |||
+ | 例えば、動作しているときに数値(0からn)で返すような特定の Web API を監視したい場合、次のようなコードで、Pandora は何も応答が無い場合に障害と認識します。 | ||
+ | < | ||
+ | |||
+ | task_begin | ||
+ | get http:// | ||
+ | check_string \n[0-9]+ | ||
+ | task_end | ||
+ | |||
+ | </ | ||
+ | |||
+ | 実際の応答は次の通りです。 | ||
+ | |||
+ | < | ||
+ | HTTP/1.1 200 OK | ||
+ | Cache-Control: | ||
+ | Connection: close | ||
+ | Date: Mon, 13 May 2013 15:39:27 GMT | ||
+ | Pragma: no-cache | ||
+ | Server: Apache | ||
+ | Vary: Accept-Encoding | ||
+ | Content-Type: | ||
+ | Expires: Thu, 19 Nov 1981 08:52:00 GMT | ||
+ | Client-Date: | ||
+ | Client-Peer: | ||
+ | Client-Response-Num: | ||
+ | Client-Transfer-Encoding: | ||
+ | Set-Cookie: a81d4c5e530ad73e256b7729246d3d2c=pcasWqI6pZzT2x2AuWo602; | ||
+ | |||
+ | 0 | ||
+ | |||
+ | </ | ||
+ | |||
+ | 正規表現で出力を確認することにより、全体が正しく動作しているかを確認できます。より複雑な出力の場合は、それに合わせた正規表現を用います。データ部分だけでなく、応答内容全体をチェックすることに注意してください。そのため、HTTP ヘッダーにもマッチさせることができます。 | ||
+ | |||
+ | 別の例: | ||
+ | |||
+ | < | ||
+ | | ||
+ | get https:// | ||
+ | | ||
+ | | ||
+ | |||
+ | </ | ||
+ | |||
+ | この場合、モジュールが監視を実行できるようにするデータのタイプは、' | ||
+ | |||
+ | < | ||
+ | | ||
+ | get https:// | ||
+ | | ||
+ | | ||
+ | |||
+ | </ | ||
+ | |||
+ | 上記のモジュールと同様に、モジュールが正しく機能するには、定義されたデータのタイプが Remote HTTP module to retrieve string data (web_content_string)' | ||
+ | |||
+ | **get_content_advanced** でモジュールを作成することもできます。 | ||
+ | < | ||
+ | | ||
+ | get https:// | ||
+ | | ||
+ | | ||
+ | |||
+ | </ | ||
+ | |||
+ | この呼び出しは以下を返します。 | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Pandora FMS は、次のように結果を表示します。 | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | <WRAP center round important 60%> 呼び出しが正しく実行されるように、括弧内にキャプチャグループを適切に定義することが重要です。 </ | ||
+ | |||
+ | <WRAP center round important 60%> API 呼び出しを作成するときは、宛先 API に呼び出しを許可する適切な権限があるかどうかを確認する必要があります。 </ | ||
+ | |||
+ | |||
+ | ==== HTTPS モニタリング ==== | ||
+ | Goliat は HTTP と HTTPS の両方をチェックできます。 HTTPS を利用しているセキュリティで保護されたウェブサイトのチェックを行うには、その URL にプロトコルを組み込むだけです。 | ||
+ | |||
+ | < | ||
+ | task_begin | ||
+ | get https:// | ||
+ | cookie 1 | ||
+ | resource 0 | ||
+ | check_string Google | ||
+ | task_end | ||
+ | </ | ||
+ | |||
+ | ==== 拡張オプション ==== | ||
+ | === HTTP ヘッダーのカスタマイズ === | ||
+ | //header// オプションで、HTTP ヘッダのカスタマイズしたり追加したりできます。たとえば、// | ||
+ | |||
+ | < | ||
+ | | ||
+ | get http:// | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | === ウェブチェックのデバッグ === | ||
+ | ウェブチェックをデバッグしたい場合は、'' | ||
+ | |||
+ | < | ||
+ | | ||
+ | get http:// | ||
+ | debug / | ||
+ | | ||
+ | </ | ||
+ | |||
+ | === LWP の代わりの Curl の利用 === | ||
+ | LWP は、複数スレッドで HTTPS リクエストを実行するとクラッシュすることがあります(OpenSSL の制約による)。代替としては [[https:// | ||
+ | |||
+ | web_engine curl | ||
+ | |||
+ | Pandora FMS サーバを再起動すると、ウェブチェックに LWP の代わりに Curl バイナリが利用されます。 | ||
+ | |||
+ | ===== 高度なトランザクション監視 ===== | ||
+ | |||
+ | Goliath が提供する機能に加えて、Web トランザクション監視を実行する他の方法があります。一つは分散型(UX)で、アクセスできないネットワークであっても、サーバとは異なるシステムに " | ||
+ | |||
+ | [[ja: | ||