文書の過去の版を表示しています。
Web ユーザエクスペリエンス監視 (WUX)
Pandora FMSによるWUXの紹介
ウェブユーザエクスペリエンスモニタリング(User Experience Monitoring, UX Monitoring Pandora FMS の用語では、単に WUX) は、ユーザがウェブサイトやウェブアプリケーションをどのように操作しているかのデータをリアルタイムに収集、分析、評価するプロセスです。 その目的は、ユーザ体験を改善するために、パフォーマンス、ユーザビリティ、アクセシビリティの問題を検出することです。
Pandora FMS WUX は、この目的に特化したバックエンド(Selenium®)を使って、合成モニタリング(Synthetic Monitoring)を行います。 つまり、Pandora FMS は、リモートサイト(Google Chrome®, Mozilla Firefox®など)とやりとりするために実際のブラウザを利用します。
- It detects problems before real users experience them. It collects real-time browsing data from real users (webscrapping).
- It measures metrics such as load time, interactions, errors and user behavior (web analytics).
- Examples: Measuring page load, response times, screenshots (of the web), testing on different devices, testing complex applications that require logging, JavaScript® interaction, text inputs, passing data from one field to another as if done by a user, mouse clicks, waiting times, and so on.
- 実際のユーザーが問題を経験する前に問題を検出します。 実際のユーザからリアルタイムの閲覧データを収集する(ウェブスクレーピング)。
- ロード時間、インタラクション、エラー、ユーザー行動などの指標を測定します(ウェブ分析)。
- 例 ページロード、レスポンスタイム、(ウェブの)スクリーンショット、異なるデバイスでのテスト、ロギングを必要とする複雑なアプリケーションのテスト、JavaScript®によるインタラクション、テキスト入力、あるフィールドから別のフィールドへ、あたかもユーザーが行ったかのようにデータを渡す、マウスクリック、待ち時間などの測定。
WUX と、Pandora FMS が WEB サーバで行う他の WEB モニタリングの違いは何ですか?
WEB サーバーは基本的な HTTP リクエストを使用し、セッションをシミュレートすることはできますが、実際のブラウザーではないため、JavaScript を実行したり、最新のブラウザーをエミュレートすることはできません。 シンプルなWEBテストであれば通常のWEBテストでも問題ありませんが、WUXはもっと強力です。
Pandora FMSにはどのようなバージョンのWUXがありますか?
- エージェントベースのWUX(Seleniumバージョン2)、バージョン740まで。
- WUXはWUXサーバー(Selenium 3)で集中管理され、バージョン780まで。
- WUXはDiscovery PFMS (Selenium 4)のプラグインとして集中管理されています。
780 より前のバージョンでは、WUX は Pandora FMS サーバ(WUX サーバ)の一部として動作していました。 現在でも可能ですが、WUX を Discovery PFMS で集中モードで利用するよりもセットアップが複雑になります。
Discovery PFMSで集中管理されているWUXもSelenium 4をベースにしており、プラグインとしてエージェントから(オプションで)使用することができます。 WUXサーバーで動作したトランザクションファイル(.side
)は、WUX Discovery PFMSで動作します。
WUX Server (Selenium 3)の使用方法に関する情報は、別館WUX monitoringにあります。
WUX / 自動検出アーキテクチャ
The operation of this plugin for Selenium 4 is carried out thanks to Pandora FMS Discovery Server. As mentioned, previously a dedicated server known as WUX Server was used exclusively and it is also possible to use Discovery PFMS for this purpose.
この Selenium 4 用プラグインの動作は、Pandora FMS 自動検出サーバを利用しています。 前述のように、以前は WUX サーバと呼ばれる専用サーバを使用していましたが、PFMS 自動検出を使用することも可能です。
It is now able to perform executions using Selenium 4, hence its name, and it also supports Selenium 3 transactions (which may have been previously executed in an environment thanks to a WUX Server).
名前の通り Selenium 4 を使用して実行できるようになりました。また、Selenium 3 トランザクションもサポートされています (以前は WUX サーバの環境で実行されていました)。
Regarding transaction executions, there are 4 different methods for connecting to Selenium, which will be discussed in more detail below, along with the requirements that must be met to ensure correct operation.
トランザクションの実行に関して、Selenium に接続するには 4 つの異なる方法があります。これについては、正しい操作を確実に行うために満たす必要のある要件とともに、以下で詳しく説明します。
前提条件
主な要件は、プラグインを実行するサーバーがSelenium 4スタックに接続できること、そしてこのサーバーが監視するウェブサイトのURLと通信できることです。
このWUXプラグインには、各トランザクションで実行される4つの異なるSelenium接続メソッドがあるので、それぞれのケースで必要な実行モードに要件を調整する必要があります。
Local Driver
プラグインは、それが実行されているコンピュータ上で見つかったGoogle ChromeまたはMozilla Firefoxのドライバを使用します. デフォルトでは、これらのコンポーネントは以下のパスで検索されますが、必要に応じて別のパスを指定することもできます。
Google Chrome バイナリ:
/usr/share/pandora_server/util/selenium_headless_drivers/chrome/google-chrome
Chromedriver:
/usr/share/pandora_server/util/selenium_headless_drivers/chromedriver
Mozilla Firefox バイナリ:
/usr/share/pandora_server/util/selenium_headless_drivers/firefox/firefox
Geckodriver:
/usr/share/pandora_server/util/selenium_headless_drivers/geckodriver
これらのドライバは、Pandora FMS ライブラリからパッケージでダウンロードし、デフォルトのパスで解凍することができます。
このモードでブラウザを起動するには、そのブラウザ固有の依存関係もシステムにインストールされていなければならない。
- Mozilla Firefox:
gtk3
,alsa-lib
,libX11-xcb
. - Google Chrome:
nss
,libdrm
,mesa-libgbm
.
Remote Driver
プラグインは URL で示される Selenium 4 サーバーに接続するので、プラグインを実行しているサーバーから Selenium 4 サーバーのリスニングポート (デフォルトでは 4444
TCP) にアクセスする必要があります。
Local Docker
このプラグインは、ローカルドライバモードで指定されたドライバを含むイメージを使って実行するサーバ上でDockerコンテナを起動し、実機からの依存関係を抽象化します。
デフォルトでは、pandorafms/pandora_selenium_headless
イメージが使用され(実行毎に異なるイメージを指定することも可能です)、ドライバはDocker内で以下のパスで検索されます:
- Google Chrome バイナリ:
/tmp/lib/chrome/google-chrome
. - Chromedriver:
/tmp/lib/chromedriver
. - Mozilla Firefox バイナリ:
/tmp/lib/firefox/firefox
. - Geckodriver:
/tmp/lib/geckodriver
.
Remote Docker
プラグインはユーザー名とパスワードを使って SSH 経由でリモートサーバーに接続し、そのサーバー上でプラグイン自身のコピー (その時点でコピーされたもの) を local docker モードで実行します。 したがって、上記のモード要件に加えて、指定したポート (デフォルトでは 22
TCP) で指定した認証情報を使って SSH 経由でリモートサーバーに接続できるようにする必要があります。
SSH接続に指定されたユーザは、Dockerコンテナを起動し、一時ディレクトリにコピーされたファイルにアクセスするのに十分な権限を持っている必要があります。 リモートサーバーへのファイルのコピーには一時ディレクトリが使用されます(デフォルトでは /tmp
)が、実行ごとに異なるパスを指定することもできます。
任意条件
すべての実行モードにおいて、必要に応じて、各取引にGoogle ChromeまたはMozilla Firefoxのプロファイルを使用することが可能である。 この機能を使用する場合、トランザクションを開始するサーバー (local または remote) にこれらのプロファイルへのパスが含まれていることを確認する必要があります。
Dockerの実行モード(local、remote)では、プロファイルフォルダへのパスを持っている必要があります。
また、各実行で示されたSIDEのメインURLへの接続統計を監視することも可能です。 そのためには、プラグインを起動するコンピュータに curl 実行ファイルがインストールされている必要があります。
テストの実行が remote driver モードで行われる場合、統計情報は Selenium 4 サーバーからではなく、プラグインを実行しているサーバーから取得することに注意してください。
PFMS 自動検出で WUX を使用する
PFMS 自動検出プラグインのインストール
Selenium 4 で WUX モニタリングを利用するためには、Pandora FMS ウェブコンソールのディスカバリセクションに .disco
をインストールする必要があります。 これは、Manage disco packagesビューから、.disco
タイプのファイルを選択して、Pandora FMS ライブラリからプラグインをダウンロードすることで実行できます:
Selenium IDEによるトランザクション記録
これらのトランザクションを実行するには、Google ChromeまたはMozilla Firefoxブラウザで利用可能なSelenium IDE拡張機能を使用して事前に保存しておく必要があります。 拡張機能を開いた後、新しいプロジェクトに保存するか、既存のプロジェクトを開くか、新しいプロジェクトを作成するか、単に拡張機能を閉じるかを選択するよう求められます。
最初のオプションを選択すると、作成するプロジェクトに名前を付け、録画のベースURLを入力するよう求められます。
3つ目のオプションを選択した場合、プロジェクト名の入力のみが求められるため、過去の録画がない場合は、ベースとなるURLアドレスを手動で入力して録画を開始する必要があります。
以上の手順で拡張機能の準備ができたら、次にすることは、画面の右上にあるRECボタンをクリックすることです。 選択したブラウザに新しいウィンドウが開き、URLベースセクションに示されたページがロードされます。 この瞬間から、このウィンドウで実行されたアクションは Selenium IDE 拡張プロジェクト に保存されます。
トランザクション実行の後半でモニターするすべてのアクションが実行されたら、Stop recordingボタンをクリックします (RECボタンがあった場所)で録音を停止します。 トランザクションテストの名前を入力するプロンプトが表示されます。 複数のテストがある場合、後で Pandora FMS にロードする際に、順次実行されます。 プロジェクトの各テストに対して、新しいエージェントが作成されます。
その後、以下のようなビューが表示される:
必要であれば、フェーズセパレーター、コメント、待機コマンドなどのコマンドを手動で追加することも可能です (wait)。
セクションSIDEファイルのコマンドにサポートされているコマンドの完全なリストがあります。
これらのコマンドを現在の録音に追加するには、既存のコマンドのいずれかを右クリックし、Insert new commandオプションをクリックします:
これにより、クリックしたコマンドの上に空のコマンド行が挿入され、これを編集してコマンドを手動で追加することができます Insert new commandフィールドに希望のコマンドを入力するだけです:
例えば、フェーズ開始コマンドを使用する:
//phase_start:フェーズ名
新しいphase_start
コマンドが表示されたとき、またはそれが失敗したときに、トランザクションが終了する。
録画が終了し、使用したい追加コマンドの設定が完了したら、プラグイン実行の設定で使用できる .side
ファイルを生成します。 これを行うには、Selenium IDE ウィンドウの右上にあるディスケットアイコンをクリックし、簡単に見つけられるパスにファイル名を付けて保存します。
.side
ファイルが生成されたら、それを開いてみると、実際はJSONファイルであることがわかる。 このJSONフォーマットの内容は、プラグイン設定のTest setupステップのSelenium IDE JSONボックスにコピー&ペーストしなければなりません。
自動検出からのトランザクション実行
Pandora FMS ウェブコンソールのディスカバリツールから録画を実行するには、アプリケーションメニューから Selenium 4 を使ってタスクを作成します (Management → Discovery → Applications):
タスクには名前を指定し、グループを割り当てる必要があります。 説明を追加したり、インターバル時間や実行タイプなどの他の重要なパラメーターを変更することも可能である:
次のステップでは、以下のパラメータが表示されます:
これらによって、トランザクションがどのウェブブラウザで実行されるかを指定するだけでなく、前述の4つの利用可能な実行モードから1つを選択することができる。 互換性のために、Selenium IDEでトランザクションが保存されたのと同じブラウザであることを推奨します。
実行のタイプが指定されると、どのオプションが選択されたかに応じて、異なる設定オプションが表示される。
Local Docker
デフォルトでは使用する画像が表示されているので、別の画像を使用したい場合以外は何も記入しないでください。 トランザクションの実行において特定のユーザーのプロファイルを使用する必要がある場合は、そのユーザーを指定する必要があります。 また、使用するブラウザープロファイルのパスを指定することもできます。
Remote Docker
タスクを実行するリモートサーバーにSSHで接続するために必要なデータを指定する必要がある。 接続データには、IPアドレスまたはFQDN、SSHポート、アクセス認証情報が必要です。
テンポラリパスは実行に必要なファイルをホストし、それ以外のフィールドはローカルDockerの実行と同じです。
Local Driver
このタイプの実行では、Pandora FMS ライブラリからダウンロードできる、実行に必要なドライバのパスを指定できます。
トークンについては、一番下にある:
- Virtual display: 仮想デスクトップを使用する実行に使用する。 指定しない場合、タスクを実行するサーバーには物理デスクトップ(モニター)が接続されている必要がある。
- Headless driver: 非デスクトップ環境に適したこのモードで実行するために使用されるブラウザのため。
両方のトークンにチェックを入れておくことをお勧めします。
Remote Driver
4番目のモードでは、リモートドライバへの接続URLを指定する必要があります。 userパラメータとprofileパラメータの動作は前述と同じです。
接続モードを選択した後、タスク構成を確定する前に最後のステップを設定しなければならない。
安全でない証明書の受け入れや、時間統計の監視を指定することも可能である。 また、トランザクションが実行される画面解像度、グローバル・タイムアウト時間、記録コマンド間の待ち時間など、その他の設定パラメータもある。
最後に、トランザクションの記録のステップで示したように、.side
フォーマットのJSONコンテンツを、Selenium IDE JSON最後のフィールドに入力する必要があります。
タスクが設定された後、数秒後に自動的に実行されるが、最初のステップでタスクがどのように設定されたかに応じて、タスクを強制的に手動で実行する必要がある。
実行が終了すると、タスクからどのエージェントが作成されたか、どのエージェントがテストエージェントに属するか、それぞれのタイプがいくつあるかを示すサマリビューを確認することができます。
PFMS 自動検出タスク結果
この例の場合、Selenium プロジェクトは Selenium 4
と名付けられ、Test 1
と Test 2
という 2 つの異なるテストがあります。 タスク構成中にオプションMonitor time statisticsがチェックされた場合、パフォーマンスデータをホストするプロジェクト名でエージェントが作成されます。
一方、記録されたトランザクションのエージェントも、テストごとに 1 つずつ作成される。 この場合、Test 1
とTest 2
という名前のエージェントが2つ存在することになる:
モニター結果
実行後、エージェントはトランザクションデータとともに作成され、このトランザクショ ンの実行のためのモジュールを含む。 パフォーマンスデータを持つエージェントには、この情報のためのモジュールと、Monitor time statisticsオプションが、タスク設定の最後のステップであらかじめ有効になっている必要があります。
テストエージェントに追加されるモジュールは、少なくとも以下の3つである:
- Global status: テストが正しく完了したか、ある時点で失敗したかを示す。
- Global time: これは、テスト完了までに要した秒数を示す数値モジュールである。
- Last error screenshot: テストが失敗した場合、失敗が発生したときにブラウザに表示されたスクリーンショットがこのモジュールに保存される。
Global statusとLast error screenshotモジュールの説明では、Selenium エンジンから返されたエラーのテキストが表示されます。
トランザクションにフェーズが設定されている場合、各フェーズのステータスと時間を示すモジュールが、以前のものに加えて作成される。 Global time、各フェーズのタイムモジュールの合計である必要はないことを知っておくことが重要である。 Global time、ブラウザが開いたり閉じたりするのに使われる時間も含まれるからです。
パフォーマンス・データに関しては、サイトに到達するまでの各操作にかかった時間をミリ秒単位で示している。 この場合、以下のようになる:
- URL stat DNS: URLのDNS解決にかかる時間。
- URL stat TSSL: SSL接続の確立にかかる時間。
- URL stat TST: 最初のバイトを受信するまでの時間。
- URL stat TT: URLへのアクセスにかかる総トランザクション時間。
- URL stat TTC: TCP接続時間。
- URL stat TTCP: 接続がデータ転送可能になるまでの時間。
- URL status: URLへの接続が可能かどうかを監視する。
エージェントには、WUX データ専用のビューもあります。 それは、右上のタブで見つけることができます:
ダッシュボード用のウィジェットに加え、WUXモジュールに特化したウィジェットが用意されています:
上記の録画は単純な録画です。 録画が異なるフェーズに分割されるように設定されている場合は、WUXデータビューでも区別されます:
ウィジェットも同じだ:
最後に、ウェブからデータをキャプチャすることも可能である(webscrapping)。
手動実行(エージェントから、プラグインとして)
手動実行のために、Selenium 4 プラグインをホストする Pandora FMS サーバ内に、ソフトウェアエージェントを設定することができます。
これを行うために、Selenium 4 プラグインは、プラグインファイルへのパスと必要な設定ファイルを示すことができるように、エージェントプラグインとして 絶対パス を使って設定することができます。
Selenium 4を使用してエージェントプラグインを設定するために使用できるテンプレートは次のようになります:
module_plugin /var/spool/pandora/data_in/discovery/pandorafms.selenium.4/bin/pandora_selenium -c /パス/への/構成/ファイル -s /パス/への/side/ファイル -t タスク名 -i エージェント間隔 -g ID_グループ -x
タスクのコンフィギュレーション・ファイルとマシンにロードされた.SIDEファイルは、あらかじめ手作業でコンフィギュレーションする必要があることを考慮に入れることが重要である。
設定ファイルを準備するには、“パラメータと設定 “セクションに進み、記入するデータテンプレートが配置されています。 .SIDE ファイルの場合、Selenium IDE 拡張機能によって生成されたファイルをコピーするだけで十分です。
-x
パラメーターは、後で処理するXML形式の実行データを生成するため、適用することが重要である。 ディスカバリーによるデフォルトの実行の場合、受信するデータ形式はJSONである:
Pandora FMS と同じサーバにインストールされていないソフトウェアエージェントからプラグインを実行することも可能です。 このためには、ソフトウェアエージェントをホストしているサーバーで、プラグインの.disk
パッケージをローカルにダウンロードし、そのフォーマットを.zip
に変更するために名前を変更し、バイナリおよび動作に必要な残りのファイルにアクセスするためにコンテンツを解凍する必要があります。
また、-x
パラメータで XML 形式のデータを送信し、-S
パラメータで XML を受信する Tentacle サーバの IP アドレスとポートを指定します。 実行は以下のようになります:
module_plugin /パス/への/バイナリ/ファイル/pandora_selenium -c /パス/への/構成/ファイル -s /パス/への/side/ファイル -t タスク名 -i エージェント間隔 -g ID_グループ -x -S IP_住所_Tentacle_サーバー:Tentacle_ポート
このタイプの実行で生成されるXMLは、それぞれ異なるエージェントに対応するため、プラグインが実行されているエージェント内でモジュールがホストされないことを覚えておくことが重要です。
最後に、この種の実行は、端末から手動で実行することも、ソフトウェア・エージェントから実行することも可能であるが、常にディスカバリーPFMSセクションから実行することを推奨することに留意すべきである。
パラメータと設定
短いパラメータ / 長いパラメータ | 説明 |
---|---|
-v --verbose | オプション. プラグイン実行の進捗情報をSTDERRで表示する。 |
-c <task_configuration_file_path> --conf <task_configuration_file_path> | 実行されるタスクのコンフィギュレーション・ファイルへのパス。 |
-s <side_file_path> --side <side_file_path> | 実行されるSIDEファイルへのパス。 |
-t <task_name> --task <task_name> | タスクの固有名. これは、同じコンピューター上で実行されている他のタスクのエレメントを上書きしないように、一時的なエレメントを生成するために使用される。 |
-i <agents_interval> --interval <agents_interval> | オプション. プラグインが生成するエージェントの監視間隔。 デフォルト: 300 . |
-g <group_id> --group <group_id> | オプション. プラグインによって生成されたエージェントを作成したいグループのID。 デフォルト: 0 . |
-x --xml_mode | オプション. 指定された場合、プラグインはSTDOUT出力を通してではなく、エージェントのためにXMLファイルを生成します。 |
-S <server:port> --server <server:port> | オプション. XML によるエージェントの生成 XMLファイルを送信するTentacleサーバのIPアドレスとポート。 |
-T <temp_folder> --temp <temp_folder> | オプション. XML によるエージェント生成用。 指定された Tentacle サーバに送信する前に生成される XML ファイルの一時ディレクトリ。 |
設定ファイル (--conf
)
{ "worker_mode" : "<local | remote>", "run_mode" : "<driver | docker>", "browser" : "<chrome | firefox>", "driver_url" : "http://<selenium_ip>:<selenium_port>/wd/hub", "ssh_address" : "<ssh_ip>", "ssh_port" : "<ssh_port>", "ssh_user" : "<ssh_user>", "ssh_password" : "<ssh_password>", "ssh_password_encrypt" : "<1 | 0>", "ssh_temp_folder" : "<ssh_temp_folder_path>", "docker_image": "<docker_image>", "chromedriver_path": "<chromedriver_path>", "chrome_binary_path": "<chrome_binary_path>", "chrome_user_data_dir" : "<chrome_user_data_dir>", "chrome_profile" : "<chrome_profile>", "geckodriver_path": "<geckodriver_path>", "firefox_binary_path": "<firefox_binary_path>", "firefox_profile" : "<firefox_profile>", "accept_insecure_certs" : "<1 | 0>", "monitor_stats" : "<1 | 0>", "browser_width" : "<width>", "browser_height" : "<height>", "global_timeout" : "<seconds>", "wait_between_commands" : "<seconds>" }
コンフィギュレーションの各要素:
worker_mode | トランザクションがローカルで開始されるか、リモートで開始されるかを示す。 |
run_mode | プラグインをドライバで実行するか、Dockerで実行するかを示す。 |
browser | トランザクションに使用されるウェブブラウザを示す。 |
driver_url | トランザクションを実行する Selenium 4 サーバーへの URL を示します。 remote/driver モードのみ。 |
ssh_address | プラグインを実行するためにSSHで接続するサーバーのIPアドレスを示します。 remote/docker モードのみ。 |
ssh_port | オプション. SSH接続のポート番号を示す。 デフォルト: 22 . remote/docker モードのみ。 |
ssh_user | SSH接続のユーザーを指定します。 remote/docker モードのみ。 |
ssh_password | ユーザーのパスワードを示す ssh_user . remote/docker モードのみ。 |
ssh_password_encrypt | オプション. 上記のパスワードが暗号化されて送信されるか( 1 )、されないか(0 )を示す。 remote/docker モードのみ。 Pandora FMS Discovery サーバからプラグインを実行することで、パスワードを暗号化できます。 |
ssh_temp_folder | オプション. SSHサーバーでの実行中に必要なファイルの一時ディレクトリへのパスを指定します。 デフォルト: /tmp . remote/docker モードのみ。 |
docker_image | オプション. トランザクションを実行するDockerイメージの名前を示す。 デフォルト: pandorafms/pandora_selenium_headless . docker モードのみ。 |
chromedriver_path | オプション. chromedriver バイナリのパスを指定する。1) local/driver モードのみ。 |
chrome_binary_path | オプション. Google Chromeのバイナリへのパスを指定します。2) local/driver モードのみ。 |
chrome_user_data_dir | オプション. 使用するGoogle Chromeのデータディレクトリ( data_dir )へのパスを指定します。 |
chrome_profile | オプション. 使用するGoogle Chromeのプロファイル名を指定します。 data_dir 内になければならない。 指定しない場合は、ブラウザのデフォルト・プロファイルが使用されます。 |
geckodriver_path | geckodriver バイナリへのパスを指定する。3) local/driver モードのみ。 |
firefox_binary_path | Mozilla Firefoxのバイナリへのパスを指定します。4) local/driver モードのみ。 |
firefox_profile | オプション. 使用するMozilla Firefoxプロファイル・ディレクトリへのパスを指定します。 指定しない場合は、ブラウザのデフォルト・プロファイルが使用されます。 |
accept_insecure_certs | オプション. 1 」に設定すると、取引中にアクセスしたURLの安全でないSSL証明書は、自動的に有効な証明書として受理されます。 |
monitor_stats | オプション. 値 1 で指定された場合、指定されたSIDEファイルのメインURLに接続統計モジュール㏄を生成する。 |
browser_width | オプション. トランザクションのウェブブラウザの幅をピクセル単位で示す。 デフォルト: 1920 . |
browser_height | オプション. トランザクションのブラウザの高さをピクセル単位で示す。 デフォルト: 1080 . |
global_timeout | オプション. プラグインが実行するタスクのグローバルタイムアウトを秒単位で示します。 また、Seleniumコマンドが実行される際のデフォルトのタイムアウトでもあります。 デフォルト: 5 . |
wait_between_commands | オプション. プラグインがSIDEコマンドを実行するまでの待機時間を秒単位で示します。 この値はSIDE本体で setSpeed コマンドにより調整可能。 デフォルト: 0 . |
例えば、こうだ:
{ "worker_mode" : "local", "run_mode" : "driver", "browser" : "chrome", "driver_url" : "", "ssh_address" : "", "ssh_port" : "", "ssh_user" : "", "ssh_password" : "", "ssh_password_encrypt" : "", "ssh_temp_folder" : "", "docker_image": "", "chromedriver_path": "", "chrome_binary_path": "", "chrome_user_data_dir" : "", "chrome_profile" : "", "geckodriver_path": "", "firefox_binary_path": "", "firefox_profile" : "", "accept_insecure_certs" : "0", "monitor_stats" : "1", "browser_width" : "1920", "browser_height" : "1080", "global_timeout" : "10", "wait_between_commands" : "0.2" }
.SIDEファイル用コマンド
追加モジュールを生成するために、以下のカスタムコマンドを設定することができます。 //
):
//phase_start:<phase_name> | フェーズの開始を示す。このフェーズは、別の//phase_start コマンドが見つかるか、 テストが終了するまで続く。 これは、フェーズのステータスを示すモジュールと、完了までにかかった時間を示す別のモジュールを生成する。 例えば、こうだ: //phase_start:Login |
//getValue;<module_name>;<module_type>;<regexp> | ウェブページのソースコードから正規表現で得られるウェブページの内容を含むモ ジュールを生成する。 例えば、こうだ: //getValue;Temperature;generic_data;<span class="temperature">(\d+\.*\,*\d*).*</span> ソースコードにこの行があるウェブページでは、温度が表示される: <p> The temperature of the solar panel is: <span class="temperature">54 º C</span></p> |
//getVariable;<module_name>;<module_type>;<variable> | 以下のstore コマンドで、SIDEに格納された変数の中身をモジュールとして生成する。 例えば、こうだ: //getVariable;List count;generic_data;listCount |
//getScreenshot;<module_name> | 現在のブラウザのスクリーンショットを含むモジュールを生成します。 例えば、こうだ: //getScreenshot;URL home |
プラグインで実行可能なSIDEファイルのコマンドは以下の通りです(使用方法についてはSelenium IDEのドキュメントを参照してください):
addSelection |
answerOnNextPrompt |
assert |
assertAlert |
assertChecked |
assertConfirmation |
assertEditable |
assertElementPresent |
assertElementNotPresent |
assertNotChecked |
assertNotEditable |
assertNotSelectedValue |
assertNotText |
assertPrompt |
assertSelectedValue |
assertSelectedLabel |
assertText |
assertTitle |
assertValue |
check |
chooseCancelOnNextConfirmation |
chooseCancelOnNextPrompt |
chooseOkOnNextConfirmation |
click |
clickAt |
close |
do |
doubleClick |
doubleClickAt |
dragAndDropToObject |
editContent |
else |
elseIf |
executeScript |
executeAsyncScript |
forEach |
if |
mouseDown |
mouseDownAt |
mouseMoveAt |
mouseOut |
mouseOver |
mouseUp |
mouseUpAt |
open |
pause |
removeSelection |
run |
runScript |
select |
selectFrame |
selectWindow |
sendKeys |
setSpeed |
setWindowSize |
store |
storeAttribute |
storeJson |
storeText |
storeTitle |
storeValue |
storeWindowHandle |
storeXpathCount |
submit |
times |
type |
uncheck |
verify |
verifyChecked |
verifyEditable |
verifyElementPresent |
verifyElementNotPresent |
verifyNotChecked |
verifyNotEditable |
verifyNotSelectedValue |
verifyNotText |
verifySelectedLabel |
verifySelectedValue |
verifyText |
verifyTitle |
verifyValue |
waitForElementEditable |
waitForElementNotEditable |
waitForElementNotPresent |
waitForElementNotVisible |
waitForElementPresent |
waitForElementVisible |
waitForText |
webdriverAnswerOnVisiblePrompt |
webdriverChooseCancelOnVisibleConfirmation |
webdriverChooseCancelOnVisiblePrompt |
webdriverChooseOkOnVisibleConfirmation |
while |
ウェブスクレーピング
Pandora FMSでウェブスクラッピングを行うことは、複雑なトランザクションのパフォーマンスや結果を測定するために設計されたものですが、実現可能です。
ウェブスクレイピングとは、ウェブサイトから情報を自動で抽出する技術である。 手作業でデータを収集する代わりに、プログラムやスクリプトを使ってウェブページを閲覧し、関連する情報を特定してデータベースや構造化ファイルに保存する。
ここで説明されていることは、ディスカバリーモードのWUX(Selenium 4のみ)と、サーバー統合モードのWUX(バージョン777またはそれ以前)、Selenium 3の両方で使用できます。
最も簡単な方法は、Web ページ ID から直接値を取得する方法(Selenium コンソール拡張のインスペクタを使用し、それを Pandora FMS に渡す)か、正規表現を使って 生 で HTML データを処理する方法です。 どちらの場合も、Selenium トランザクションに追加のコマンドを導入する必要があります。
例えば、ウェブスクラッパーとして使用し、Amazon Store®の商品の評価数を読み取り、値のキャプチャを使用して変数に格納します:
これはREVIEW
という変数にTEXT
という型として格納される。 そして、その変数の値を表示するための追加コマンドecho
が作成される:
ここでは、Seleniumエクステンションによって生成された.side
コードの最後の2つのステップを見ることができる:
{ "id": "55546183-fc2f-45b5-af7e-2ff27464798f", "comment": "", "command": "storeText", "target": "css=.a-spacing-medium > .a-size-base", "targets": [ [ "css=.a-spacing-medium > .a-size-base", "css:finder" ], [ "xpath=//div[@id='cm_cr_dp_d_rating_histogram']/div[3]/span", "xpath:idRelative" ], [ "xpath=//span/div/div/div/div/div/div[3]/span", "xpath:position" ] ], "value": "REVIEW" }
{ "id": "69cd3cea-5981-4011-bb3d-88a1b58dc18e", "comment": "", "command": "echo", "target": "${REVIEW}", "targets": [], "value": "" }
この方法の欠点は、テキスト文字列として保存されることである。ID(この場合はspan)を使うことで、そのIDのタグの間はすべて保存されるからである。
より “洗練された “方法で値を取得したい場合は、正規表現を使用したparseメソッドを使用してテキストを処理する必要があります:
- この場合、Pandora FMS で数値が取得され、数値モジュールに変換されます。
.side
のソースコードとして、作成されたコマンドはこのようなコードに変換される。 二重引用符のような文字がどのようにエスケープ"
または\
文字になるかに注意することが重要である。- これを行うには、HTMLインスペクタを使って、値を取得したいコード領域を分析する必要がある:
タグの間にあるものを探す:
<span id="acrCustomerReviewText" class="a-size-base">''
そして
</span>
正規表現を適用すると次のようになる:
<span id="acrCustomerReviewText" class="a-size-base">(\d+) valoraciones</span>
これは、Selenium シーケンスの最後に「ダミー」コマンドを作成し(//
でコメント)、getValue
コマンドを使用して、AMZ_001
、generic_data
タイプ(つまり、数値)、およびエスケープされた regexp を提供するモジュールを作成することによって行わなければなりません:
{ "id": "ae557b25-b096-4d6e-baa7-f7219ac16e04", "comment": "", "command": [ "//getValue;AMZ_001;generic_data;", "<span id=\"acrCustomerReviewText\"", " class=\"a-size-base\">(\\d+) valoraciones</span>" ], "target": "", "targets": [], "value": "" }
実行後は、従来の Pandora FMS データが返され、アラートを適用したり、グラフやレポートに含めたりすることができます。
このトランザクションは実際のブラウザを使用するため、特定のユーザーに接続し、必要なデータを最終的に取得するためにナビゲートすることもできる。
WUX サーバとSelenium 3
技術補足資料「WUX サーバと Selenium 3 を使用した WUX 監視」に記載しています。
(OBSOLETE) デスクトップ UX (PDR)
PDR の展開
PDR は Windows でのみ動作するように設計されています。Pandora エージェントで実行されるとき プロセスモード で実行する必要があります。サービスモードでは動作しません。デスクトップセッションのブロックはできませんので、仮想マシンの利用をお勧めします。
事前準備:
- デスクトップモード、自動起動、自動ログインでの Windows OS
設定には以下を実行します:
Windows10® より前のバージョンの場合:
control userpasswords2
“このコンピュータを使うにはユーザ名とパスワードが必要(Users must enter a user name and password to use this computer)” のチェックを外します。
Windows 10® の場合:
MS Windows® バージョン 10で自動起動を有効にする 1つの方法としては、Microsoft® ドキュメントの https://docs.microsoft.com/en-us/sysinternals/downloads/autologon ダウンロードセクション で入手可能な Sysinternals Powertoys を使用することです。そして、監視を実行するユーザを有効にします。次に例を示します。
環境設定するには、以下のディレクトリを作成します。
C:\PDR
https://pandorafms.com/library/pdr-cmd-for-ux-monitoring/ から入手した PDR.rar
ファイルを C:\PDR
へ展開します。
PDR セッションの記録
レコーダーを起動するには、以下のスクリプトを実行します。
C:\PDR\pdr
起動したら、レコーディング環境に入ります。
実行するアクションを選択し、それらを適用する領域でスクリーンショットを実行します。 以下に、最も一般的な例を示します。
一般的なアクション:
フロー制御アクション:
このスクリプト言語の詳細は、http://sikulix-2014.readthedocs.io/en/latest/index.html を参照してください。
プロジェクトが記録されると、次の要素を持つファイルが作成されます。
- 自動実行コードを含んだ .py ファイル
- ウェブブラウザ制御イメージ
実行の簡単な例としては、Windows の電卓が正しく動作するかどうかを確認します。 一度に1つずつスライドさせる方法を見てみましょう。
1. “click” アクションを選択し、アクションをしたいエリアを選択します。画面が “エリア選択” モードに変わります。
2. type アクションとテキスト “calc” を入力し、電卓が表示されるのを待ってクリックします。電卓が操作できるようになったら、次のようにアクションを入力します。
3. 関連する部分クリックし、以前と同様の領域を選択します。
4. 最後に、保存して Run をクリックして実行します。
重要な注意点:
- 記録環境内の任意の画像をダブルクリックすると、クリックする場所を正確に選択するなど、コントロールキャプチャの詳細を調整できます。
- オペレーティングシステムの遅延によって実行が停止しないように、各クリックの間に「待機」アクションを入力することを強くお勧めします。
- レコーダーはスクリーンショットのような領域を探しますので、ボタンがその上に置かれているときに強調表示されているものがあれば特に注意する必要があります(たとえば、カーソルがそれらの上にあるときに電卓のボタンがオレンジ色に変わります)。
記録を保存したフォルダに、python ファイルと画像ファイルがあります。
注意:次のコードを使用して、PDR レコーディングエンジンからによるキャプチャ内容をカスタマイズできます。
## OPTIONAL ##capture file names import shutil file = "C:\probes\screenshot_prueba.sikuli.png" focusWindow = App.focusedWindow() regionImage = capture(focusWindow) shutil.move(regionImage, file)
これは、指定したファイルに、指定した特定の時間のアクティブウインドウのスクリーンショットを作成します。 座標を使用してスクリーンショットをカスタマイズすることができます。次の構文を用います:
capture(x, y, w, h)
ここで、変数は以下の通りです。
X: horizontal position of the rectangle to take a screenshot on.
Y: vertical position of the rectangle to take a screenshot on.
W: Screenshot width.
H: Screenshot height.
X: キャプチャしたい領域の水平方向の位置
Y: キャプチャしたい領域の垂直方向の位置
W: キャプチャしたい幅
H: キャプチャしたい高さ
Pandora UX PDR でトランザクションセッションの記録
特別なセッションの記録は必要ありません。異なるスクリプトでセッションを記録するだけです。Pandora UX は、複雑なトランザクションの結果を返し整理します。次の段階では、正しく動作させるための実行の呼び出し方を見ていきます。
トランザクション処理を作成するために複数のレコーディングを行う場合は、記録時に探している要素が存在することに注意する必要があります。 単一のトランザクション処理ごとに、レコーディング内容を手動で実行することをお勧めします。手動で実行してみたあとに、アクションが期待どおりに行われるようにします。
次の例では、上記の例のプロセス次の段階を構成する記録プロセスを確認できます。電卓の結果をメモ帳にペーストします。以下に例を示します。
ここでは、テキストファイルを特定の場所に保存し、前のファイルを上書きするという別の手順を示します。これにより、柔軟性が大幅に向上し、並行してファイルの監視が可能になり、ヘビー級のデスクトップアプリケーションに対するさまざまな情報を扱えます。この 3つ目のシーケンス例は、以下のステップからなります。
PDR セッションの実行
標準実行
あらかじめ記録した PDR セッションを起動するには、pdr.cmd ファイルを置いた場所とともに動作モードを指定します。このファイルの引数は ”-r”、セッションガイドラインを含むファイル(-script)を指定し、スクリーンショットが保存されるディレクトリ(-folder)の指定は “\”で終了します。実行失敗時にスクリプトを再実行するための -retries オプションも利用できます。
次の実行では、スクリーンショットはアクティブウインドウのみが対象です。
pandora_ux_x64 -exe C:\PDR\pdr -args -r -script C:\pandora_ux\calculadora.sikuli -folder C:\pandora_ux\ -ss_config active -retries 3
次のモジュールが返されます。
- UX_Time_project_name
- UX_Status_project_name
- UX_Control_Snapshot_project_name (初回の実行時のみ)
フェーズでエラーが発生した場合は、次のモジュールが作成されます。
- UX_Snapshot_project_name
エラー時には、アクティブウインドウの画像が表示されます(-ss_config が有効な場合)。
正常時の実行結果例:
<module> <name><![CDATA[UX_Status_calculadora.sikuli]]></name> <type>generic_proc</type> <![CDATA[1]]> <description><![CDATA[C:\pandora_ux\calculadora.sikuli execution completed Control snapshot rebuild ]]></description> <tags>UX</tags> <module_group>UX</module_group> </module> <module> <name><![CDATA[UX_Time_calculadora.sikuli]]></name> <type>generic_data</type> <![CDATA[20.204]]> <description><![CDATA[C:\pandora_ux\calculadora.sikuli execution completed Control snapshot rebuilt ]]></description> <tags>UX</tags> <module_group>UX</module_group> <module_parent>UX_Status_calculadora.sikuli</module_parent> </module> <module> <name><![CDATA[UX_Control_Snapshot_calculadora.sikuli]]></name> <type>async_string</type> <![CDATA[data:image/png;base64, IBCAIAAAAOCnfhAAAAAXNSR…/4x79e/7757f8H2C00s1C73yMAAAAASUVORK5CYII=]]> <description><![CDATA[Control image rebuilt]]></description> <tags>UX</tags> <module_group>UX</module_group> <module_parent>UX_Status_calculadora.sikuli</module_parent> </module>
エラー時の実行結果例:
<module> <name><![CDATA[UX_Status_std.html]]></name> <type>generic_proc</type> <![CDATA[0]]> <description><![CDATA[Failed to execute verifyText]]></description> <tags>UX</tags> <module_group>UX</module_group> </module> <module> <name><![CDATA[UX_Time_std.html]]></name> <type>generic_data</type> <![CDATA[15.463]]> <description><![CDATA[Failed to execute verifyText]]></description> <tags>UX</tags> <module_group>UX</module_group> <module_parent>UX_Status_std.html</module_parent> </module> <module> <name><![CDATA[UX_Snapshot_std.html]]></name> <type>async_string</type> <![CDATA[data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAA…JRU5ErkJggg==]]> <description><![CDATA[Image (last error)]]></description> <tags>UX</tags> <module_group>UX</module_group> <module_parent>UX_Status_std.html</module_parent> </module>
すべて問題なければ、Windows マシンの Pandora FMS エージェントのプラグインとしてコマンド設定を行います。以下に例を示します。(1行です)
module_plugin C:\Users\artica\Documents\Product\UX-Trans\ux\pandora_ux_x64.exe -exe C:\PDR\pdr.bat -args -r -script C:\PDR\calc.sikuli -folder C:\PDR\ -ss_config active -checkpoint -post "taskkill /F /IM calc.exe"
ご覧の通り、実行にはオプションが追加されています。パラメータ –checkpoint は、エラーが無かったとしても最終結果のスクリーンショットを表示します。-post は、セッションの実行が完了した後にアクションを実行します。この場合、ウインドウを多重に開くなどを防ぐために、電卓のプロセスを終了します。
エージェントに module_plugin の設定ができたら、プロセスモードでの起動準備完了です。管理者権限のコマンドラインから以下を実行します。
"%ProgramFiles%\pandora_agent\PandoraAgent.exe" --process
“PandoraAgent.exe” の場所はインストールに依存します。
起動すると、どのようにアクションが記録に従って自動的に実行されるかを見ることができます。ここからは、エージェントのプロセスは終了してはいけません。 また、リモートデスクトップで開始したセッションや実行は中断してはいけません。マシンには触れない状態にしておきます。これが、仮想マシンが必要である理由です。
他の自動監視のテストがある場合、次のようにしてPandora FMS に読み込むことができます。
pandora_ux.64 -exe <exe of the automation system> -args <system arguments> -script <test file path>
<exe of the automation system>
: exe (executable) of the automation system.<system arguments>
: System arguments.<test file path>
: Test file path.
<exe of the automation system>
: 自動化システムの exe (実行可能ファイル)。<system arguments>
: システムの引数。<test file path>
: テストファイルのパス。
トランザクションベースの実行
いろいろな処理が記録され、正しく機能することが確認されたら、PDR で以下を実行します。
C:\Users\artica\Documents\Product\UX-Trans\ux\pandora_ux_x64.exe -exe C:\PDR\pdr.cmd -args -r -t calculadora_trans -script C:\PDR\calc.sikuli,C:\PDR\savecalc.sikuli,C:\PDR\savefile.sikuli -folder C:\PDR\ -ss_config active
見ての通り、-scrit のパラメータで新たなスクリプトの場所を指定する必要があるだけです。前のスクリプトとはカンマで区切ります。また、-t パラメータですべての異なるフェーズをカバーするトランザクションの名前を指定します。より多くのフェーズがあったとしても設定の考え方は同じです。以下に例を示します。
pandora_ux_x64.exe -exe C:\PDR\pdr.cmd -args -r -t proceso_transaccional -script C:\PDR\script1,C:\PDR\script2,C:\PDR\script3,C:\PDR\script4 -folder C:\PDR\ -ss_config active
この例では、次の行をエージェントの設定ファイルに追加します。
module_plugin C:\Users\artica\Documents\Product\UX-Trans\ux\pandora_ux_x64.exe -exe C:\PDR\pdr.cmd -args -r -t calculadora_trans -script C:\PDR\calc.sikuli,C:\PDR\savecalc.sikuli,C:\PDR\savefile.sikuli -folder C:\PDR\ -ss_config active -checkpoint -post "taskkill /F /IM calc.exe"
-checkpoint パラメータで、それぞれのフェーズの最終スクリーンショットを Pandora コンソールに表示することができます。
フェーズごとに、以下のモジュールが返ります。
- UX_Time_project_name.phase_order
- UX_Status_project_name.phase_order
フェーズでエラーになった場合は、次のモジュールが作成されます。
- UX_Snapshot_project_name.phase_order
エラーの場合は、エラーが発生した時点の画像が表示されます。
次の名前で全体のまとめのモジュールも返されます。
- UX_Global_Time_project_name
- UX_Global_Status_project_name
- UX_Global_Snapshot_project_name
エージェントがプロセスモードで動き、モジュールを Pandora FMS が受け取ると、コンソールで見ることができます。繰り返しになりますが、階層モード で、モジュール間の関係とフェーズ間の区切りがわかりやすく表示されます。
フェーズとタイムチャートの詳細は、トランザクションの画面で見ることができます。
エラーのスクリーンショットは、UX クライアント(PWR)と PWR サーバが共に同じマシンで動作しているときにのみ表示されます。そうでない場合は、Pandora で画像を表示するために、PWR サーバの画像配布ディレクトリがクライアントからアクセスできる必要があります。
同じモジュールを使用して、アラートを作成し、システムの時間経過に伴う変化を表示するために、履歴表示やグラフ生成ができます。
システムを再起動したときなどに実行の中断を避けるために、システムが起動したときに、Pandora エージェントをプロセスモードで起動させるプログラムタスクを作成することと、パスワード無しでマシンへ自動ログインし、エージェントが確実に実行されるようにすることをお勧めします。
これにより、対象の Windows インスタンスでは、マシンが再起動しても Pandora FMS エージェントが常にプロセスモードで実行され、常にPDR プローブによって収集されたデータを送信できることが保証されます。
さまざまなデスクトップシステムでは問題が発生する可能性があります。そのため、前述の設定を使い、デスクトップモードで自動起動を単一のデスクトップ使用することをお勧めします。
/usr/share/pandora_server/util/selenium_headless_drivers/chromedriver
./usr/share/pandora_server/util/selenium_headless_drivers/chrome/google-chrome
./usr/share/pandora_server/util/selenium_headless_drivers/geckodriver
./usr/share/pandora_server/util/selenium_headless_drivers/firefox/firefox
.