Skript erstellen
Um das Feature "Verfügbarkeitsüberwachung" für die Monitortypen "Skriptbrowser" und "Skript-REST" zu verwenden, müssen Sie zuerst ein Skript erstellen und hochladen. Dies ist ein aufgezeichneter Benutzerpfad, mit dem Benutzertransaktionen in der Anwendung simuliert werden.
Das Skript muss je nach Monitortyp, den Sie mit dem Skript erstellen möchten, in den folgenden Dateitypen aufgezeichnet werden:
- Die Datei
.side
gilt nur für den Monitor-Typ "Skriptbrowser". Die.side
-Datei wird mit dem Selenium Integrated Development Environment-(IDE-)Recorder erstellt. Informationen zu Selenium-Befehlen und zum Exportieren einer.side
-Datei finden Sie in der Selenium-Dokumentation. Beachten Sie, dass Sie nur ein einzelnes Skript in Application Performance Monitoring hochladen können. Das Hochladen einer Testsuite wird nicht unterstützt. - Die Datei
.ts
gilt nur für den Monitor-Typ "Skriptbrowser". Sie können.ts
TypeScript verwenden, wenn Sie mit Playwright arbeiten. Informationen zu Playwright finden Sie unter https://playwright.dev/docs/intro. - Die Datei
.js
gilt nur für den REST-Monitortyp "Skript". Die Datei.js
kann mit dem Packagepostman-request
erstellt werden. Informationen zumpostman-request
-Package finden Sie unter postman-request.
So laden Sie das Skript in Application Performance Monitoring hoch:
Über die oben auf der Seite verfügbaren Optionen können Sie außerdem folgende Aktionen für das Skript ausführen:
- Bearbeiten: Klicken Sie auf diese Option, um das Skript zu bearbeiten. Wenn ein Monitor dieses Skript verwendet, kann die Bearbeitung des Skriptes zu inkompatiblen Parametern führen. In diesem Fall müssen Sie die entsprechenden Änderungen auch am Monitor vornehmen.
- Anzeigen: Klicken Sie auf diese Option, um das Skript anzuzeigen.
- Herunterladen: Klicken Sie auf die Option, um die Skriptdatei (
.side
,.playwright
oder.js
) herunterzuladen. - Tags hinzufügen: Klicken Sie auf diese Option, um dem Skript Tags hinzuzufügen.
- Löschen: Klicken Sie auf diese Option, um das Skript zu löschen. Beachten Sie, dass Sie das Skript nicht löschen können, wenn es von einem Monitor verwendet wird.
Unten auf der Seite können Sie die Liste der Monitore anzeigen, die das Skript verwenden, oder auf Monitor erstellen klicken, um einen skriptgesteuerten Monitor zu erstellen. Weitere Informationen finden Sie unter Monitor erstellen.
Erweiterte Optionen zum Aktualisieren von Skripten
Mit den Skripten in Availability Monitoring können Sie Benutzerpfade erfassen und Benutzertransaktionen in einer Anwendung simulieren.
Sie können das Skript mit benutzerdefinierten Befehlen aktualisieren, um bestimmte Aufgaben auszuführen. In den folgenden Abschnitten werden einige der Befehle beschrieben, die Sie dem Skript hinzufügen können:
Es wird empfohlen, dass Sie immer ein ursprüngliches Skript verwenden und es in einer skriptgesteuerten Monitorausführung in Application Performance Monitoring hochladen und validieren, bevor Sie es bearbeiten und Änderungen vornehmen. Die Aktualisierung des Skripts mit benutzerdefiniertem Inhalt wie Variablen kann die erneute Ausführung des Skripts über das lokale Selenium IDE-Deployment beeinträchtigen.
Benutzerdefinierte Variablen hinzufügen
Sie können dem Inhalt der .side
- und .js
-Skripte benutzerdefinierte Variablen hinzufügen, mit denen dynamische Parameter definiert werden können. Auf diese Weise können Sie diese Parameter über das Skript oder den Monitor in Application Performance Monitoring steuern. Beispiel: Wenn ein Benutzername oder ein Elementauswahlname geändert wird oder Sie einen solchen Wert vor anderen Benutzern mit Zugriff auf den Monitor verbergen möchten, können Sie benutzerdefinierte Variablen verwenden.
param name
obligatorisch, param value
und isParamValueSecret
sind jedoch optional. Der Standardwert für isParamValueSecret
ist false
. Die folgenden Formate werden angezeigt:
-
Seiten- und JS-Format:
<ORAP><ON>param name</ON><OV>param value</OV><OS>isParamValueSecret(true/false)</OS></ORAP>
-
Playwright-Format:
console.log("<ORAP><ON>param name</ON><OV>param value</OV><OS>isParamValueSecret(true/false)</OS></ORAP>");
Benutzerdefinierte Marker hinzufügen
Sie können benutzerdefinierte Markierungsbefehle zum Inhalt der Skripte .side
und .js
hinzufügen, mit denen eine benutzerdefinierte Nachricht und Dauer vom Skript an Metrik-Explorer im Monitoring-Service übergeben werden kann. Dadurch können Sie eine CustomMarker-Dimension übergeben, z.B. "DURATION: Check Elements" und einen Vorgang, z.B. setValue
an den Monitoring-Service. Die Dimension CustomMarker ist mit der Metrik CustomMetric verfügbar. Mit dieser Dimension können Sie dem Skript die folgenden Vorgänge als Dauermarker für Transaktionsschritte hinzufügen, wie die Dauer zwischen Anmeldung und vollständigem Laden von Seiten:
setValue
: Zeichnet die Dauer zwischen der Startzeit des Skripts bis zum Aufruf dieses Vorgangs auf.startTime
: Zeichnet die Dauer zwischen diesem Vorgang und dem VorgangendTime
auf.endTime
: Zeichnet die Dauer zwischen dem VorgangstartTime
und diesem Vorgang auf.
Beachten Sie, dass die Vorgänge startTime
und endTime
miteinander kombiniert werden. Bei einem CustomMarker mit den Vorgängen startTime
und endTime
lautet der Metrikwert <endTime - startTime>
.
Nachfolgend finden Sie die Befehle und Beispiele für die Dimension und Vorgänge CustomMarker:
- Seitenskript:
Fügen Sie Befehlsblöcke mit dem Vorgang hinzu, den Sie ausführen möchten. Der Befehlswert muss
Mit dem folgenden Befehl können Sie einen benutzerdefinierten Marker in einemoraSynCustomMarker
lauten, damit er als benutzerdefinierter Befehl erkannt wird. Die Werte für die Befehlsparametertarget
undvalue
müssen der Wert der Dimension CustomMarker bzw. des Vorgangs sein..side
-Skript erfassen:{ “id”: “36d45a35-5c07-4d86-8144-90ee7b52260b”, “comment”: “”, “command”: “oraSynCustomMarker”, “target”: “Add Marker Name”, “targets”: [], “value”: “setValue” }
Beispiel:
{ “id”: “36d45a35-5c07-4d86-8144-90ee7b52260b”, “comment”: “For calling Availability Monitoring custom metrics”, “command”: “oraSynCustomMarker”, “target”: “DURATION: Check Elements”, “targets”: [], “value”: “setValue” }
- JS-Skript:
fügen Sie den folgenden Befehl hinzu:
oraSynCustomMarker(customMarker, customOperation)
Ersetzen SiecustomMarker
durch den Wert der CustomMarker-Dimension undCustomOperation
durch den Vorgang, der für die Dimension ausgeführt werden soll. Beispiel:oraSynCustomMarker("DURATION: Check Elements", "setValue")
- Playwright-Skript:
Verwenden Sie das folgende Format:
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
Sie können auch Alarme im Monitoring-Service mit CustomMetric und der CustomMarker-Dimension erstellen, die benachrichtigt werden sollen, wenn die Metrik alarmspezifische Trigger erfüllt. Informationen zum Feature "Alarme" und zu deren Erstellung finden Sie unter Alarme verwalten.
Benutzerdefinierte Screenshots hinzufügen
Sie können einen Befehl zu den Skripten .side
und .ts
hinzufügen, um benutzerdefinierte Screenshots zu erfassen. Mit dieser Funktion können Sie zu jedem Zeitpunkt während der Ausführung des Skripts Screenshots erstellen, um Probleme zu diagnostizieren. Zusätzlich zu den Standard-Screenshots können Sie maximal zehn benutzerdefinierte Screenshots erstellen.
- Seitenskript:
{ "id": "e227f32f-47f6-432b-976a-6b5db5b53e94", "comment": "", "command": "oraSynCustomScreenshot", "target": "AddScreenshotName", "targets": [], "value": "true" }
- Playwright-Skript:
console.log("oraSynCustomScreenshot:<fileName>")
Multifaktor-Authentifizierung (MFA) verwenden
Availability Monitoring Transactions unterstützt die Multifaktor-Authentifizierung (MFA), die ein TOTP-(Time-Based One-Time Password-)Token generiert, dem das Authentifizierungs-Secret erteilt wird. Für die Generierung dieses TOTP müssen Sie den Secret Key bei der Erstellung des Monitors angeben.
oraSynTimeBasedOTP
in das Skript aufnehmen und dann die Variable ${oraSynTimeBasedOTP}
eingeben, in der der TOTP-Wert verwendet werden soll:
- Seitenskript:
{ "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}" }
Der Befehl zum Generieren des TOTP lautetoraSynTimeBasedOTP
. Dieser Befehl akzeptiert den Secret Key, der zum Generieren des TOTP erforderlich ist. Der Secret Key muss als Ziel übergeben werden. Es kann als normale Variable oder als sensible Variable übergeben werden:-
Normaler Parameter:
{ "id": "123abc12-12ab-1a12-1a2a-1234ab123abc", "comment": "", "command": "oraSynTimeBasedOTP", "target": "1ABCDE1A1XTXVOIDQRZP1ZXTZAUDLIBJZ", "targets": [], "value": "" }
-
Vertraulicher oder ähnlicher Kennwortparameter:
{ "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}" }
Sie müssen angeben, wo der TOTP (der generiert wird) verwendet werden soll. Im Allgemeinen wird TOTP als Wert in das entsprechende TOTP-Texteingabefeld eingegeben. TOTP wird im Variablennamen
${oraSynTimeBasedOTP}
gespeichert. Sie müssen den Variablennamen als${oraSynTimeBasedOTP}
angeben, wo der TOTP-Wert eingegeben wird. -
-
Playwright-Skript:
Der Befehl zum Generieren des TOTP lautetoraSynTimeBasedOTP
. Dieser Befehl akzeptiert den Secret Key, der zum Generieren des TOTP erforderlich ist.console.log("oraSynTimeBasedOTP:<value>")
Beispiel:
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-Secrets verwenden
Derzeit erfolgt die Vault-Secrets-Authentifizierung in öffentlichen Standorten und dedizierten Standorten mit S2S bzw. Instanz-Principals. S2S und Instanz-Principal können nicht in On-Premise-Standorten verwendet werden.
Für On-Premise-Standorte müssen Sie Resource Principal verwenden. Nachdem das Schlüsselwort RESOURCE_PRINCIPAL
dem Skript hinzugefügt wurde, wird der Resource Principal zur Authentifizierung von Vault Secrets verwendet. Dies funktioniert in allen Arten von Aussichtspunkten. Weitere Informationen finden Sie unter Vault-Secrets mit Resource Principals verwenden.
.side
, .ts
oder .js
angeben, die zur Laufzeit aufgelöst werden. So können Sie Variablen wie Benutzernamen und Passwörter dynamisch aktualisieren, ohne die Skripte zu aktualisieren oder die Monitore neu zu starten. Erstellen Sie Secrets im Vault, und verwenden Sie sie in Skripten, die während der Monitorausführung aufgelöst werden, indem Sie die folgenden Policys in Ihrem Mandanten festlegen:
-
Policy für öffentliche Standorte
Sie können Policys für den APM-Service festlegen, um auf Secrets in einem bestimmten Vault oder Compartment zuzugreifen:
- Ein bestimmter Vault:
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>}}
-
Ein bestimmtes Compartment mit dem Namen des Compartments:
Allow service applicationperformancemonitoring to read secret-family in compartment <compartment-name>
Ein bestimmtes Compartment mit der ID des Compartments:
Allow service applicationperformancemonitoring to read secret-family in compartment id <compartment-ocid>
- Ein bestimmter Vault:
-
Policy für dedizierte Standorte
Sie können Policys für den Zugriff des APM-Service auf Secrets in einem Compartment mit dem Namen oder der ID des Compartments festlegen:
-
Ein bestimmtes Compartment mit dem Namen des Compartments:
Allow dynamic-group <dvp dynamic group eg stack-11-aug-apmSyntheticDVP-dg> read secret-family in compartment <compartment-name>
-
Ein bestimmtes Compartment mit der ID des Compartments:
Allow dynamic-group <dvp dynamic group eg stack-11-aug-apmSyntheticDVP-dg> read secret-family in compartment id <compartment-ocid>
-
-
Verwenden Sie je nach Skripttyp die folgende Syntax:
-
Verwenden Sie für das Skript
.side
die folgende Syntax:<ORAS>secretOcid</ORAS><ORASREG>vaultRegion</ORASREG>
Beispiel:
<ORAS>ocid1.vaultsecret.oc1.phx.abcdefghijklmnopqrstuvwxyz123456789</ORAS><ORASREG>us-phoenix-1</ORASREG>
-
Verwenden Sie für das Skript
.ts
die folgende Syntax:var password = "<ORAS>ocid1.vault.oc1.vault-ocid</ORAS><ORASREG>vaultRegion</ORASREG>" await page.getByRole('textbox', { name: 'password' }).fill(password);
-
Verwenden Sie für das Skript
.js
die folgende Syntax:method: 'GET', url:'<ORAS>secretOcid</ORAS><ORASREG>vaultRegion</ORASREG>'
Beispiel:
method: 'GET', url:'<ORAS>ocid1.vaultsecret.oc1.phx.abcdefghijklmnopqrstuvwxyz123456789</ORAS><ORASREG>us-phoenix-1</ORASREG>'
Diese
secretOcid
wird während der Ausführung aufgelöst, um aktuelle Secret-Werte abzurufen.Die
<ORASREG>
-Syntax ist optional. Sie kann verwendet werden, wenn sich Ihr Vault-Service in einer anderen Region als Monitore befindet. MitvaultRegion
können Sie angeben, in welcher Region sich der Vault befindet und in welcher die Secrets dort aufgelöst werden. Dadurch kann dasselbe Skript regionsübergreifend verwendet werden. Beachten Sie, dass nur eine<ORASREG>region</ORASREG>
im Skript vorhanden sein sollte.Hinweis
Die maximale Länge für den Secret-Wert beträgt255
. -
Vault-Secrets mit Resource Principals verwenden
Sie können das Skript so aktualisieren, dass Vault Secrets mit Resource Principals verwendet werden.
Resource Principal-basierte Unterstützung wird für den Zugriff auf Vault Secrets hinzugefügt. Resource-Principal-basierte Policys können hinzugefügt werden, damit Rest-, Siderunner- und Playwright-Monitore auf die Vault Secrets zugreifen können.
- Erstellen Sie eine dynamische Gruppe für den Monitorressourcentyp.
Fügen Sie eine der folgenden Regeln hinzu, damit alle Überwachungsressourcen des Ressourcentyps
apmsyntheticmonitor
auf Vault Secrets zugreifen können:- Option 1:
All {resource.type='apmsyntheticmonitor'}
Verwenden Sie diese Option, wenn eine einzelne Ressource (z.B. ein einzelner Monitor) vorhanden ist.
- Option 2:
ANY {resource.type='apmsyntheticmonitor'}
Verwenden Sie diese Option, wenn Sie eine einzelne Ressource (z.B. einen einzelnen Monitor) oder mehrere Ressourcen (z.B. APM-Domain und andere) haben.
- Option 1:
- Fügen Sie eine Policy hinzu, um den Zugriff auf Vaults mit Resource Principals zuzulassen:
Allow dynamic-group <vault dg> to read to secret-family in compartment <compartment-name>
Optional: Führen Sie für den Zugriff auf mandantenübergreifende Vault Secrets die folgenden Schritte aus:
- Policys zum Mandanten der APM-Domain hinzufügen:
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
- Policys zum Vault-Mandanten hinzufügen:
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>
Informationen zu den Anweisungen
DEFINE
,ENDORSE
undADMIT
finden Sie in der Object Storage-Dokumentation. - Policys zum Mandanten der APM-Domain hinzufügen:
- Fügen Sie Vault-Parameter mit dem Schlüsselwort
RESOURCE_PRINCIPAL
im Skript hinzuGeben Sie die Appropiate-Syntax im Skriptjs
,side
oderplaywright
an. Zusammen mit der Vault-Secret-OCID und Region muss einRESOURCE_PRINCIPAL
-Schlüsselwort übergeben werden.Hinweis
Er muss nur in einem der Vault-Parameter hinzugefügt werden.Seitenbeispiel:
Für die Seite sieht das Skript wie folgt aus:
"command": "<ORAS>ocid1.vaultsecret.oc1.phx.amaaaaaatttttuuuuaa</ORAS><ORASREG>us-phoenix-1</ORASREG><ORASAUTH>RESOURCE_PRINCIPAL</ORASAUTH>",
Playwright-Beispiel:
Für playwright sieht das Skript wie folgt aus:var password = "<ORAS>ocid1.vault.oc1.vault-ocid</ORAS><ORASREG>vaultRegion</ORASREG><ORASAUTH>RESOURCE_PRINCIPAL</ORASAUTH>" await page.getByRole('textbox', { name: 'password' }).fill(password);
Weitere Informationen finden Sie unter Vault-Secrets verwenden.
JS-Beispiel:
Verwenden Sie für den Monitor SCRIPTED_REST das Schlüsselwort
RESOURCE_PRINCIPAL
im Skript.Beispiel: Siehe folgendes
.js
-Skript: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); });