Création d'un script
Afin d'utiliser la fonctionnalité de surveillance de la disponibilité pour les moniteurs de type Navigateur associé de scripts ou REST associé de scripts, vous devez d'abord créer et télécharger un script, à savoir un chemin utilisateur enregistré utilisé pour simuler des transactions utilisateur sur l'application.
Le script doit être enregistré dans les types de fichier suivants en fonction du type de moniteur que vous souhaitez créer à l'aide du script :
- Fichier
.side
applicable uniquement au type de moniteur Navigateur scripté. Le fichier.side
est créé à l'aide de l'enregistreur Selenium Integrated Development Environment (IDE). Pour plus d'informations sur les commandes Selenium et sur l'export d'un fichier.side
, reportez-vous à la documentation Selenium. Notez que vous ne pouvez télécharger qu'un seul script vers Application Performance Monitoring. Le téléchargement d'une suite de tests n'est pas pris en charge. - Fichier
.ts
applicable uniquement au type de moniteur Navigateur scripté. Vous pouvez utiliser.ts
TypeScript lorsque vous utilisez Playwright. Pour plus d'informations sur Playwright, reportez-vous à https://playwright.dev/docs/intro. - Fichier
.js
applicable uniquement au type de moniteur REST scripté. Le fichier.js
peut être créé à l'aide du packagepostman-request
. Pour plus d'informations sur le packagepostman-request
, reportez-vous à la section postman-request.
Pour télécharger le script vers Application Performance Monitoring, procédez comme suit :
Vous pouvez également utiliser les options disponibles en haut de la page pour effectuer les actions suivantes sur le script :
- Modifier : cliquez sur cette option pour modifier le script. Si un moniteur utilise ce script, sa modification peut entraîner des problèmes d'incompatibilité de paramètres et vous devrez apporter les modifications correspondantes au moniteur également.
- Visualiser : cliquez sur cette option pour visualiser le script.
- Télécharger : cliquez sur cette case pour télécharger le fichier de script (
.side
,.playwright
ou.js
). - Ajouter des balises : cliquez sur cette option pour ajouter des balises au script.
- Supprimer : cliquez sur cette option pour supprimer le script. Si un moniteur utilise ce script, vous ne pouvez pas le supprimer.
En bas de la page, vous pouvez consulter la liste des moniteurs qui utilisent le script ou cliquer sur Créer un moniteur pour créer un moniteur scripté. Pour plus d'informations, reportez-vous à Création d'un moniteur.
Options avancées de mise à jour des scripts
Les scripts de Availability Monitoring permettent d'enregistrer des chemins utilisateur et de simuler des transactions utilisateur dans une application.
Vous pouvez mettre à jour le script avec des commandes personnalisées pour effectuer certaines tâches, et les sections suivantes détaillent certaines des commandes que vous pouvez ajouter au script :
Nous vous recommandons de toujours utiliser un script d'origine, de le télécharger et de le valider dans un moniteur scripté exécuté dans Application Performance Monitoring avant de le modifier et d'apporter des modifications. La mise à jour du script avec du contenu personnalisé, tel que des variables, peut interférer avec la réexécution du script à partir de votre déploiement local de Selenium IDE.
Ajouter des variables personnalisées
Vous pouvez ajouter des variables personnalisées au contenu des scripts .side
et .js
. Ces variables peuvent être utilisées pour définir des paramètres dynamiques. Vous pouvez ainsi contrôler ces paramètres à partir du script ou du moniteur dans Application Performance Monitoring. Par exemple, si le nom d'un utilisateur ou d'une sélection d'éléments est amené à changer, ou si voulez rendre une telle valeur secrète pour que les autres utilisateurs ayant accès au moniteur ne puissent la voir, vous pouvez utiliser des variables personnalisées.
param name
est obligatoire, mais param value
et isParamValueSecret
sont facultatifs. La valeur par défaut pour isParamValueSecret
est false
. Voir les formats ci-dessous :
-
Format latéral et JS :
<ORAP><ON>param name</ON><OV>param value</OV><OS>isParamValueSecret(true/false)</OS></ORAP>
-
Format Playwright :
console.log("<ORAP><ON>param name</ON><OV>param value</OV><OS>isParamValueSecret(true/false)</OS></ORAP>");
Ajouter des marqueurs personnalisés
Vous pouvez ajouter des commandes de marqueur personnalisées au contenu des scripts .side
et .js
, qui peuvent être utilisés pour transmettre un message personnalisé et la durée du script à l'explorateur de mesures dans le service Monitoring. Cela vous permet de transmettre une dimension CustomMarker, par exemple "DURATION : Check Elements" et une opération, par exemple, setValue
au service Monitoring. La dimension CustomMarker est disponible avec la mesure CustomMetric et à l'aide de cette dimension, vous pouvez ajouter les opérations suivantes au script en tant que marqueurs de durée pour les étapes de transaction, telles que la durée entre la connexion et le chargement complet de la page :
setValue
: enregistre la durée entre l'heure de début du script et l'heure à laquelle cette opération est appelée.startTime
: enregistre la durée entre cette opération et l'opérationendTime
.endTime
: enregistre la durée entre l'opérationstartTime
et cette opération.
Les opérations startTime
et endTime
fonctionnent conjointement. Pour un élément CustomMarker contenant les opérations startTime
et endTime
, la valeur de mesure est <endTime - startTime>
.
Voici les commandes et exemples de la dimension et des opérations CustomMarker :
- Script latéral :
Ajoutez des blocs de commande avec l'opération à effectuer. La valeur de la commande doit être
Voici la commande utilisée pour capturer un marqueur personnalisé dans un scriptoraSynCustomMarker
pour qu'elle soit reconnue comme une commande personnalisée. Les valeurs des paramètres de commandetarget
etvalue
doivent correspondre respectivement à la valeur de la dimension CustomMarker et à l'opération..side
:{ “id”: “36d45a35-5c07-4d86-8144-90ee7b52260b”, “comment”: “”, “command”: “oraSynCustomMarker”, “target”: “Add Marker Name”, “targets”: [], “value”: “setValue” }
Voici un exemple :
{ “id”: “36d45a35-5c07-4d86-8144-90ee7b52260b”, “comment”: “For calling Availability Monitoring custom metrics”, “command”: “oraSynCustomMarker”, “target”: “DURATION: Check Elements”, “targets”: [], “value”: “setValue” }
- Script JS :
Ajoutez la commande suivante :
oraSynCustomMarker(customMarker, customOperation)
RemplacezcustomMarker
par la valeur de la dimension CustomMarker etCustomOperation
par l'opération à effectuer sur la dimension. Voici un exemple :oraSynCustomMarker("DURATION: Check Elements", "setValue")
- Script Playwright :
Utilisez le format suivant :
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
Vous pouvez également créer des alarmes dans le service Monitoring à l'aide de CustomMetric et de la dimension CustomMarker à avertir lorsque la mesure répond aux déclencheurs spécifiés par l'alarme. Pour plus d'informations sur la fonctionnalité Alarmes et leur création, reportez-vous à Gestion des alarmes.
Ajouter des captures d'écran personnalisées
Vous pouvez ajouter une commande aux scripts .side
et .ts
pour capturer des captures d'écran personnalisées. Cette fonctionnalité vous permet de prendre des captures d'écran à tout moment pendant l'exécution du script pour diagnostiquer les problèmes. Vous pouvez prendre un maximum de dix captures d'écran personnalisées en plus des captures d'écran standard.
- Script latéral :
{ "id": "e227f32f-47f6-432b-976a-6b5db5b53e94", "comment": "", "command": "oraSynCustomScreenshot", "target": "AddScreenshotName", "targets": [], "value": "true" }
- Script Playwright :
console.log("oraSynCustomScreenshot:<fileName>")
Utiliser l'authentification à plusieurs facteurs
Les transactions de surveillance de la disponibilité prennent en charge l'authentification à plusieurs facteurs qui génère un jeton de mot de passe à usage unique (TOTP) basé sur le temps auquel la clé secrète d'authentification est attribuée. Pour la génération de ce TOTP, vous devez fournir la clé secrète lors de la création du moniteur.
oraSynTimeBasedOTP
, puis entrer la variable ${oraSynTimeBasedOTP}
dans laquelle la valeur TOTP doit être utilisée :
- Script latéral :
{ "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}" }
La commande permettant de générer le TOTP estoraSynTimeBasedOTP
. Cette commande accepte la clé secrète requise pour générer le TOTP. La clé secrète doit être transmise en tant que cible. Il peut être transmis en tant que variable normale ou variable sensible :-
Paramètre normal :
{ "id": "123abc12-12ab-1a12-1a2a-1234ab123abc", "comment": "", "command": "oraSynTimeBasedOTP", "target": "1ABCDE1A1XTXVOIDQRZP1ZXTZAUDLIBJZ", "targets": [], "value": "" }
-
Paramètre de mot de passe sensible ou similaire :
{ "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}" }
Vous devez indiquer où le TOTP (qui est généré) doit être utilisé. Généralement, le TOTP est saisi en tant que valeur dans le champ de saisie de texte TOTP correspondant. Le TOTP serait stocké dans le nom de variable
${oraSynTimeBasedOTP}
. Vous devez indiquer le nom de la variable en tant que${oraSynTimeBasedOTP}
où la valeur TOTP sera saisie. -
-
Script Playwright :
La commande permettant de générer le TOTP estoraSynTimeBasedOTP
. Cette commande accepte la clé secrète requise pour générer le TOTP.console.log("oraSynTimeBasedOTP:<value>")
Exemple :
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.
Utiliser des clés secrètes Vault
Actuellement, l'authentification des clés secrètes Vault dans les points d'observation publics et les points d'observation dédiés est effectuée à l'aide respectivement de S2S et des ID instance. S2S et le principal d'instance ne peuvent pas être utilisés dans les points d'observation sur site.
Pour les points d'observation sur site, vous devez utiliser le principal de ressource. Une fois le mot-clé RESOURCE_PRINCIPAL
ajouté au script, le principal de ressource est utilisé pour l'authentification des clés secrètes Vault. Cela fonctionne dans toutes sortes de points d'observation. Pour plus d'informations, reportez-vous à Utilisation de clés secrètes Vault avec des ID ressource.
.side
, .ts
ou .js
, qui seront résolus lors de l'exécution. Cela vous permet de mettre à jour les variables telles que les noms d'utilisateur et les mots de passe de manière dynamique, sans mettre à jour les scripts ni redémarrer les moniteurs. Il vous suffit de créer des clés secrètes dans le coffre et de les utiliser dans des scripts qui seront résolus lors de l'exécution du moniteur en définissant les stratégies suivantes dans le locataire :
-
Politique relative aux points d'observation publics
Vous pouvez définir des stratégies pour que le service APM accède aux clés secrètes d'un coffre ou d'un compartiment spécifique :
- Un coffre spécifique :
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>}}
-
Compartiment spécifique, avec le nom du compartiment :
Allow service applicationperformancemonitoring to read secret-family in compartment <compartment-name>
Compartiment spécifique, avec l'ID du compartiment :
Allow service applicationperformancemonitoring to read secret-family in compartment id <compartment-ocid>
- Un coffre spécifique :
-
Politique relative aux points d'observation dédiés
Vous pouvez définir des stratégies pour que le service APM accède aux clés secrètes d'un compartiment à l'aide du nom ou de l'ID du compartiment :
-
Compartiment spécifique, avec le nom du compartiment :
Allow dynamic-group <dvp dynamic group eg stack-11-aug-apmSyntheticDVP-dg> read secret-family in compartment <compartment-name>
-
Un compartiment spécifique, à l'aide de l'ID du compartiment :
Allow dynamic-group <dvp dynamic group eg stack-11-aug-apmSyntheticDVP-dg> read secret-family in compartment id <compartment-ocid>
-
-
Selon le type de script, utilisez la syntaxe suivante :
-
Pour le script
.side
, utilisez la syntaxe suivante :<ORAS>secretOcid</ORAS><ORASREG>vaultRegion</ORASREG>
Par exemple :
<ORAS>ocid1.vaultsecret.oc1.phx.abcdefghijklmnopqrstuvwxyz123456789</ORAS><ORASREG>us-phoenix-1</ORASREG>
-
Pour le script
.ts
, utilisez la syntaxe suivante :var password = "<ORAS>ocid1.vault.oc1.vault-ocid</ORAS><ORASREG>vaultRegion</ORASREG>" await page.getByRole('textbox', { name: 'password' }).fill(password);
-
Pour le script
.js
, utilisez la syntaxe suivante :method: 'GET', url:'<ORAS>secretOcid</ORAS><ORASREG>vaultRegion</ORASREG>'
Par exemple :
method: 'GET', url:'<ORAS>ocid1.vaultsecret.oc1.phx.abcdefghijklmnopqrstuvwxyz123456789</ORAS><ORASREG>us-phoenix-1</ORASREG>'
Cette commande
secretOcid
sera résolue lors de l'exécution pour extraire les valeurs de clé secrète en cours.La syntaxe
<ORASREG>
est facultative. Il peut être utilisé lorsque votre service Vault se trouve dans une région différente de celle des moniteurs. Vous pouvez utiliservaultRegion
pour indiquer la région dans laquelle se trouve le coffre et les clés secrètes seront résolues à partir de celui-ci. Il permet d'utiliser le même script entre les régions. Notez qu'un seul élément<ORASREG>region</ORASREG>
doit être présent dans le script.Remarque
La longueur maximale de la valeur de clé secrète est255
. -
Utilisation de clés secrètes de coffre avec des principaux de ressource
Vous pouvez mettre à jour le script afin d'utiliser des clés secrètes Vault avec des ID ressource.
La prise en charge basée sur le principal de ressource est ajoutée pour accéder aux clés secrètes Vault. Des stratégies basées sur le principal de ressource peuvent être ajoutées pour autoriser les moniteurs Rest, Siderunner et Playwright à accéder aux clés secrètes de coffre.
- Créez un groupe dynamique sur le type de ressource de surveillance.
Ajoutez l'une des règles suivantes pour autoriser toutes les ressources de surveillance du type de ressource
apmsyntheticmonitor
à accéder aux clés secrètes Vault :- Option 1 :
All {resource.type='apmsyntheticmonitor'}
Utilisez cette option si vous disposez d'une seule ressource (par exemple, un seul moniteur).
- Option 2 :
ANY {resource.type='apmsyntheticmonitor'}
Utilisez cette option si vous disposez d'une seule ressource (par exemple, un seul moniteur) ou si vous disposez de plusieurs ressources (par exemple, un domaine APM et d'autres).
- Option 1 :
- Ajoutez une stratégie pour autoriser l'accès aux coffres à l'aide des principaux de ressource :
Allow dynamic-group <vault dg> to read to secret-family in compartment <compartment-name>
Facultatif : pour accéder aux clés secrètes Vault de plusieurs locations, procédez comme suit :
- Ajoutez des stratégies à la location de domaine 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
- Ajoutez des stratégies à la location 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>
Pour plus d'informations sur les instructions
DEFINE
,ENDORSE
etADMIT
, reportez-vous à Documentation Object Storage. - Ajoutez des stratégies à la location de domaine APM :
- Ajouter des paramètres de coffre dans le script avec le mot-clé
RESOURCE_PRINCIPAL
Indiquez la syntaxe appropriée dans le scriptjs
,side
ouplaywright
. Outre l'OCID et la région de clé secrète du coffre, un mot-cléRESOURCE_PRINCIPAL
doit être transmis.Remarque
Il ne doit être ajouté que dans l'un des paramètres Vault.Exemple :
Pour le côté, le script ressemble à l'exemple suivant :
"command": "<ORAS>ocid1.vaultsecret.oc1.phx.amaaaaaatttttuuuuaa</ORAS><ORASREG>us-phoenix-1</ORASREG><ORASAUTH>RESOURCE_PRINCIPAL</ORASAUTH>",
Exemple pour Playwright :
Pour le dramaturge, le script ressemble à l'exemple suivant :var password = "<ORAS>ocid1.vault.oc1.vault-ocid</ORAS><ORASREG>vaultRegion</ORASREG><ORASAUTH>RESOURCE_PRINCIPAL</ORASAUTH>" await page.getByRole('textbox', { name: 'password' }).fill(password);
Pour plus d'informations, reportez-vous à Utilisation de clés secrètes Vault.
Exemple JS :
Pour le moniteur SCRIPTED_REST, utilisez le mot-clé
RESOURCE_PRINCIPAL
dans le script.Par exemple, reportez-vous au script
.js
suivant :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); });