スクリプトの作成
「Scripted Browser」および「Scripted REST」モニター・タイプに「Availability Monitoring」機能を使用するには、最初にスクリプトを作成してアップロードする必要があります。これは、アプリケーションでユーザー・トランザクションをシミュレートするために使用される、記録されたユーザー・パスです。
スクリプトは、スクリプトを使用して作成するモニター・タイプに基づいて、次のファイル・タイプに記録する必要があります:
- スクリプト・ブラウザ・モニター・タイプにのみ適用可能な
.side
ファイル。.side
は、Selenium統合開発環境(IDE)レコーダを使用して作成されます。Seleniumコマンドおよび.side
ファイルのエクスポート方法の詳細は、Seleniumドキュメントを参照してください。Application Performance Monitoringにアップロードできるのは1つのスクリプトのみです。テスト・スイートのアップロードはサポートされていません。 - スクリプト・ブラウザ・モニター・タイプにのみ適用可能な
.ts
ファイル。Playwrightを操作する場合は、.ts
TypeScriptを使用できます。Playwrightの詳細は、https://playwright.dev/docs/introを参照してください。 - スクリプト化されたRESTモニター・タイプにのみ適用可能な
.js
ファイル。.js
ファイルは、postman-request
パッケージを使用して作成できます。postman-request
パッケージの詳細は、postman-requestを参照してください。
Application Performance Monitoringにスクリプトをアップロードするには:
ページ上部で選択可能なオプションを使用して、スクリプトに次のアクションを実行することもできます:
- 編集: クリックして、スクリプトを編集します。モニターでこのスクリプトが使用されている場合、スクリプトを編集するとパラメータの互換性がなくなる可能性があるため、対応する変更をモニターにも行う必要があります。
- 表示: クリックして、スクリプトを表示します。
- ダウンロード: クリックして、スクリプト(
.side
、.playwright
または.js
)ファイルをダウンロードします。 - タグの追加: クリックして、スクリプトにタグを追加します。
- 削除: クリックして、スクリプトを削除します。モニターでこのスクリプトが使用されている場合は、スクリプトを削除できません。
ページの下部で、スクリプトを使用してモニターのリストを表示したり、「モニターの作成」をクリックしてスクリプト・モニターを作成できます。詳細は、モニターの作成を参照してください。
スクリプトを更新する拡張オプション
可用性モニタリングのスクリプトを使用すると、ユーザー・パスを記録し、アプリケーション内のユーザー・トランザクションをシミュレートできます。
特定のタスクを実行するためにカスタム・コマンドを使用してスクリプトを更新できます。次の項では、スクリプトに追加できるコマンドの一部を説明します。
オリジナル・スクリプトを編集して変更する前に、Application Performance Monitoringで実行されるスクリプト・モニターで必ずオリジナル・スクリプトを使用してアップロードおよび検証することをお薦めします。変数などのカスタム・コンテンツでスクリプトを更新すると、ローカルのSelenium IDEデプロイメントからスクリプトの再実行が影響を受ける可能性があります。
カスタム変数の追加
.side
および.js
スクリプトの内容にカスタム変数を追加すると、これを使用して動的パラメータを定義できます。これにより、Application Performance Monitoringでスクリプトまたはモニターからこれらのパラメータを制御できます。たとえば、ユーザー名または要素選択名が変更されることが予想される場合や、モニターにアクセスできる他のユーザーにそのような値が表示されないように値をシークレットにする場合は、カスタム変数を使用できます。
param name
は必須ですが、param value
およびisParamValueSecret
はオプションです。isParamValueSecret
のデフォルト値はfalse
です。次の形式を参照してください。
-
サイドおよびJS形式:
<ORAP><ON>param name</ON><OV>param value</OV><OS>isParamValueSecret(true/false)</OS></ORAP>
-
Playwrightフォーマット:
console.log("<ORAP><ON>param name</ON><OV>param value</OV><OS>isParamValueSecret(true/false)</OS></ORAP>");
カスタム・マーカーの追加
カスタム・マーカー・コマンドを.side
および.js
スクリプトの内容に追加できます。このスクリプトを使用して、カスタム・メッセージおよび期間をスクリプトからモニタリング・サービスのメトリック・エクスプローラに渡すことができます。これにより、「DURATION: Check Elements」や操作(たとえば、setValue
)などのCustomMarkerディメンションをモニタリング・サービスに渡すことができます。CustomMarkerディメンションはCustomMetricメトリックで使用でき、このディメンションを使用すると、ログインからページ全体のロードまでの期間など、トランザクション・ステップの期間マーカーとして次の操作をスクリプトに追加できます。
setValue
: スクリプトの開始時間からこの操作がコールされるまでの期間を記録します。startTime
: この操作とendTime
操作の間の期間を記録します。endTime
:startTime
操作とこの操作の間の期間を記録します。
startTime
およびendTime
操作は相互に連携して動作します。startTime
およびendTime
操作を含むCustomMarkerの場合、メトリック値は<endTime - startTime>
です。
CustomMarkerディメンションおよび操作のコマンドと例を次に示します。
- サイドスクリプト:
実行する操作でコマンド・ブロックを追加します。コマンド値をカスタム・コマンドとして認識するには、コマンド値を
oraSynCustomMarker
にする必要があります。コマンド・パラメータtarget
およびvalue
の値は、それぞれCustomMarkerディメンションおよび操作の値である必要があります。.side
スクリプトでカスタム・マーカーを取得するために使用するコマンドを次に示します:{ “id”: “36d45a35-5c07-4d86-8144-90ee7b52260b”, “comment”: “”, “command”: “oraSynCustomMarker”, “target”: “Add Marker Name”, “targets”: [], “value”: “setValue” }
次に例を示します:
{ “id”: “36d45a35-5c07-4d86-8144-90ee7b52260b”, “comment”: “For calling Availability Monitoring custom metrics”, “command”: “oraSynCustomMarker”, “target”: “DURATION: Check Elements”, “targets”: [], “value”: “setValue” }
- Jsスクリプト:
次のコマンドを追加します。
oraSynCustomMarker(customMarker, customOperation)
customMarker
をCustomMarkerディメンションの値に置き換え、CustomOperation
をディメンションで実行する操作に置き換えます。次に例を示します:oraSynCustomMarker("DURATION: Check Elements", "setValue")
- Playwrightスクリプト:
次のフォーマットを使用します:
console.log("oraSynCustomMarker:setValue:SetMarker"); // capturing the marker from the starting of the script console.log("oraSynCustomMarker:startTime:PageDuration"); // setting the starting marker console.log("oraSynCustomMarker:endTime:PageDuration"); // setting the end marker of the respective starting marker
メトリックがアラーム指定トリガーを満たしたときに通知されるCustomMetricおよびCustomMarkerディメンションを使用して、モニタリング・サービスにアラームを作成することもできます。アラーム機能およびその作成方法の詳細は、アラームの管理を参照してください。
カスタムスクリーンショットを追加
.side
および.ts
スクリプトにコマンドを追加して、カスタム・スクリーンショットを取得できます。この機能を使用すると、問題を診断するために、スクリプトの実行中の任意の時点でスクリーンショットを撮ることができます。標準のスクリーンショットに加えて、最大10個のカスタム・スクリーンショットを取ることができます。
- サイドスクリプト:
{ "id": "e227f32f-47f6-432b-976a-6b5db5b53e94", "comment": "", "command": "oraSynCustomScreenshot", "target": "AddScreenshotName", "targets": [], "value": "true" }
- Playwrightスクリプト:
console.log("oraSynCustomScreenshot:<fileName>")
マルチファクタ認証(MFA)の使用
可用性モニタリング・トランザクションは、認証シークレットを付与された時間ベースのワンタイム・パスワード(TOTP)トークンを生成するマルチファクタ認証(MFA)をサポートしています。このTOTPを生成するには、モニターの作成時に秘密キーを指定する必要があります。
oraSynTimeBasedOTP
を含めてから、TOTP値を使用する変数${oraSynTimeBasedOTP}
を入力する必要があります。
- サイドスクリプト:
{ "id": "123abc12-12ab-1a12-1a2a-1234ab123abc", "comment": "", "command": "oraSynTimeBasedOTP", "target": "1ABCDE1A1XTXVOIDQRZP1ZXTZAUDLIBJZ", "targets": [], "value": "" } // After providing the command, user needs to provide the variable. { "id": "123abc12-12ab-1a12-1a2a-1234ab123abc", "comment": "", "command": "type", "target": "id=mfa_token", "targets": [ ["id=mfa_token", "id"], ["name=mfa_token", "name"], ["css=#mfa_token", "css:finder"], ["xpath=//input[@id='mfa_token']", "xpath:attributes"], ["xpath=//div[@id='root']/div[3]/div/div[2]/form/div/div/input", "xpath:idRelative"], ["xpath=//div/input", "xpath:position"] ], "value": "${oraSynTimeBasedOTP}" }
TOTPを生成するコマンドはoraSynTimeBasedOTP
です。このコマンドは、TOTPの生成に必要な秘密キーを受け入れます。秘密キーはターゲットとして渡される必要があります。通常の変数または機密変数として渡すことができます。-
標準パラメータ:
{ "id": "123abc12-12ab-1a12-1a2a-1234ab123abc", "comment": "", "command": "oraSynTimeBasedOTP", "target": "1ABCDE1A1XTXVOIDQRZP1ZXTZAUDLIBJZ", "targets": [], "value": "" }
-
機密パラメータまたは類似パスワード・パラメータ:
{ "id": "123abc12-12ab-1a12-1a2a-1234ab123abc", "comment": "", "command": "oraSynTimeBasedOTP", "target": "<ORAP><ON>MFA_Secret</ON><OV>1ABCDE1A1XTXVOIDQRZP1ZXTZAUDLIBJZ</OV><OS>true</OS></ORAP>", "targets": [], "value": "" }
{ "id": "123abc12-12ab-1a12-1a2a-1234ab123abc", "comment": "", "command": "type", "target": "id=mfa_token", "targets": [ ["id=mfa_token", "id"], ["name=mfa_token", "name"], ["css=#mfa_token", "css:finder"], ["xpath=//input[@id='mfa_token']", "xpath:attributes"], ["xpath=//div[@id='root']/div[3]/div/div[2]/form/div/div/input", "xpath:idRelative"], ["xpath=//div/input", "xpath:position"] ], "value": "${oraSynTimeBasedOTP}" }
TOTP (生成される)が使用される場所を指定する必要があります。通常、TOTPは、それぞれのTOTPテキスト入力フィールドに値として入力されます。TOTPは、変数名
${oraSynTimeBasedOTP}
に格納されます。変数名は、TOTP値が入力される${oraSynTimeBasedOTP}
として指定する必要があります。 -
-
Playwrightスクリプト:
TOTPを生成するコマンドはoraSynTimeBasedOTP
です。このコマンドは、TOTPの生成に必要な秘密キーを受け入れます。console.log("oraSynTimeBasedOTP:<value>")
例:
var oraSynTimeBasedOTP = ''; // Mandatory to define. This variable holds the TOTP value. console.log('oraSynTimeBasedOTP:1ABCDE1A1XTXVOIDQRZP1ZXTZAUDLIBJZ'); // This is normal parameter format to provide the MFA secret. await page.getByRole('textbox', { name: 'Enter One Time Passcode'}).fill(oraSynTimeBasedOTP); // Here the TOTP value will be utilized to fill in the TOTP text input field.
Vaultシークレットの使用
現在、パブリック・バンテージ・ポイントおよび専用バンテージ・ポイントでのVaultシークレット認証は、それぞれS2SおよびInstance Principalsを使用して行われます。S2SおよびInstance Principalは、オンプレミス・バンテージ・ポイントでは使用できません。
オンプレミス・バンテージ・ポイントの場合は、リソース・プリンシパルを使用する必要があります。キーワードRESOURCE_PRINCIPAL
がスクリプトに追加されると、リソース・プリンシパルがVaultシークレットの認証に使用されます。これは、あらゆる種類のバンテージ・ポイントで機能します。詳細は、リソース・プリンシパルでのVaultシークレットの使用を参照してください。
.side
、.ts
または.js
スクリプトで指定できます。これにより、スクリプトを更新したり、モニターを再起動することなく、ユーザー名やパスワードなどの変数を動的に更新できます。単にボールトにシークレットを作成し、テナントに次のポリシーを設定して、モニターの実行中に解決されるスクリプトで使用します:
-
パブリック・バンテージ・ポイント・ポリシー
APMサービスのポリシーを設定して、特定のボールトまたはコンパートメント内のシークレットにアクセスできます:
- 特定のボールト:
Allow service applicationperformancemonitoring to read secret-family in compartment <compartment-name> where all {target.vault.id=‘ocid1.vault.oc1.<vault-ocid>’ , any {target.vaultsecret.id=‘ocid1.vaultsecret.oc1.phx.<secret-ocid1>, target.vaultsecret.id=‘ocid1.vaultsecret.oc1.phx.<secret-ocid2>}}
-
特定のコンパートメント(コンパートメントの名前を使用):
Allow service applicationperformancemonitoring to read secret-family in compartment <compartment-name>
特定のコンパートメント(コンパートメントのIDを使用):
Allow service applicationperformancemonitoring to read secret-family in compartment id <compartment-ocid>
- 特定のボールト:
-
専用のバンテージ・ポイント・ポリシー
APMサービスのポリシーを設定して、コンパートメントの名前またはIDを使用してコンパートメント内のシークレットにアクセスできます:
-
特定のコンパートメント(コンパートメントの名前を使用):
Allow dynamic-group <dvp dynamic group eg stack-11-aug-apmSyntheticDVP-dg> read secret-family in compartment <compartment-name>
-
特定のコンパートメント(コンパートメントのIDを使用):
Allow dynamic-group <dvp dynamic group eg stack-11-aug-apmSyntheticDVP-dg> read secret-family in compartment id <compartment-ocid>
-
-
スクリプトのタイプに応じて、次の構文を使用します。
-
.side
スクリプトの場合は、次の構文を使用します。<ORAS>secretOcid</ORAS><ORASREG>vaultRegion</ORASREG>
例:
<ORAS>ocid1.vaultsecret.oc1.phx.abcdefghijklmnopqrstuvwxyz123456789</ORAS><ORASREG>us-phoenix-1</ORASREG>
-
.ts
スクリプトの場合は、次の構文を使用します。var password = "<ORAS>ocid1.vault.oc1.vault-ocid</ORAS><ORASREG>vaultRegion</ORASREG>" await page.getByRole('textbox', { name: 'password' }).fill(password);
-
.js
スクリプトの場合は、次の構文を使用します。method: 'GET', url:'<ORAS>secretOcid</ORAS><ORASREG>vaultRegion</ORASREG>'
例:
method: 'GET', url:'<ORAS>ocid1.vaultsecret.oc1.phx.abcdefghijklmnopqrstuvwxyz123456789</ORAS><ORASREG>us-phoenix-1</ORASREG>'
この
secretOcid
は、実行中に現在のシークレット値をフェッチするために解決されます。<ORASREG>
構文はオプションです。ボールト・サービスがモニターとは異なるリージョンにある場合に使用できます。vaultRegion
を使用して、ボールトとシークレットをそこから解決するリージョンを指定できます。リージョン間で同じスクリプトを使用できます。スクリプトには1つの<ORASREG>region</ORASREG>
のみが存在する必要があります。ノート
シークレット値の最大長は255
です。 -
リソース・プリンシパルでのVaultシークレットの使用
リソース・プリンシパルでVaultシークレットを使用するようにスクリプトを更新できます。
Vaultシークレットにアクセスするために、リソース・プリンシパル・ベースのサポートが追加されました。リソース・プリンシパル・ベースのポリシーを追加して、「Rest」、「Siderunner」および「Playwright」モニターがVaultシークレットにアクセスできるようにします。
- モニターリソースタイプに動的グループを作成します。
次のいずれかのルールを追加して、リソース・タイプ
apmsyntheticmonitor
のすべてのモニター・リソースがVaultシークレットにアクセスできるようにします:- オプション1:
All {resource.type='apmsyntheticmonitor'}
このオプションは、単一のリソース(単一のモニターなど)がある場合に使用します。
- オプション2:
ANY {resource.type='apmsyntheticmonitor'}
このオプションは、単一のリソース(単一のモニターなど)がある場合、または複数のリソース(APMドメインなど)がある場合に使用します。
- オプション1:
- リソース・プリンシパルを使用したボールトへのアクセスを許可するポリシーを追加します:
Allow dynamic-group <vault dg> to read to secret-family in compartment <compartment-name>
オプション: クロス・テナンシVaultシークレット・アクセスの場合、次を実行します:
- APMドメイン・テナンシにポリシーを追加します:
DEFINE tenancy vault_tenancy as <ocid_of_vault_tenancy> ENDORSE dynamic-group apm_domain_tenancy_dynamic_group to read secret-family in tenancy vault_tenancy
- Vaultテナンシにポリシーを追加します:
DEFINE tenancy apm_domain_tenancy as <ocid_of_apm_domain_tenancy> DEFINE dynamic-group apm_domain_tenancy_dynamic_group as <ocid_of_apm_domain_tenancy_dynamic_group> ADMIT dynamic-group apm_domain_tenancy_dynamic_group of tenancy apm_domain_tenancy to read secret-family in compartment <vault_compartment_name>
DEFINE
、ENDORSE
およびADMIT
文の詳細は、オブジェクト・ストレージのドキュメントを参照してください。 - APMドメイン・テナンシにポリシーを追加します:
RESOURCE_PRINCIPAL
キーワードを使用してスクリプトにVaultパラメータを追加しますjs
、side
またはplaywright
スクリプトで承認構文を指定します。VaultシークレットOCIDおよびリージョンとともに、RESOURCE_PRINCIPAL
キーワードを渡す必要があります。ノート
これは、Vaultパラメータのいずれかでのみ追加する必要があります。サイド例:
この場合、スクリプトは次の例のようになります。
"command": "<ORAS>ocid1.vaultsecret.oc1.phx.amaaaaaatttttuuuuaa</ORAS><ORASREG>us-phoenix-1</ORASREG><ORASAUTH>RESOURCE_PRINCIPAL</ORASAUTH>",
プレイライトの例:
プレイライトの場合、スクリプトは次の例のようになります。var password = "<ORAS>ocid1.vault.oc1.vault-ocid</ORAS><ORASREG>vaultRegion</ORASREG><ORASAUTH>RESOURCE_PRINCIPAL</ORASAUTH>" await page.getByRole('textbox', { name: 'password' }).fill(password);
詳細は、Vaultシークレットの使用を参照してください。
JSの例:
SCRIPTED_RESTモニターの場合は、スクリプトで
RESOURCE_PRINCIPAL
キーワードを使用します。例については、次の
.js
スクリプトを参照してください:var request = require('postman-request'); var options = { method: '<ORAS>ocid1.vaultsecret.oc1.phx.amaaaaaafpqv5yya7p2uv63scv37yz64u75x47ajuibwoynro3ygbu2rrtxa</ORAS>', url: '<ORAS>ocid1.vaultsecret.oc1.phx.amaaaaaafpqv5yyagfnrwsjmoabretgffs4nkfocrfokvnldtt7nee7htsya</ORAS><ORASREG>us-phoenix-1</ORASREG><ORASAUTH>RESOURCE_PRINCIPAL</ORASAUTH>' }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(response.statusCode); });