Criar um Script
Para usar o recurso Monitoramento de disponibilidade para os tipos de monitor Browser com script e REST com script, primeiro crie e faça upload de um script, que é um caminho de usuário registrado usado para simular transações do usuário no aplicativo.
O script deve ser registrado nos seguintes tipos de arquivo com base no tipo de monitor que você deseja criar usando o script:
- Arquivo
.side
aplicável apenas ao tipo de monitor do Browser com Script. O.side
é criado usando o gravador de Ambiente de Desenvolvimento Integrado (IDE) do Selenium. Para obter informações sobre comandos do Selenium e como exportar um arquivo.side
, consulte a Documentação do Selenium. Observe que você só pode fazer upload de um único script para o Application Performance Monitoring. Não há suporte para o upload de um conjunto de testes. - Arquivo
.ts
aplicável apenas ao tipo de monitor do Browser com Script. Você pode usar.ts
TypeScript ao trabalhar com Playwright. Para obter informações sobre Playwright, consulte https://playwright.dev/docs/intro. - Arquivo
.js
aplicável apenas ao tipo de monitor REST com Script. O arquivo.js
pode ser criado usando o pacotepostman-request
. Para obter informações sobre o pacotepostman-request
, consulte postman-request.
Para fazer upload do script para o serviço Application Performance Monitoring:
Você também pode usar as opções disponíveis na parte superior da página para executar as seguintes ações no script:
- Editar: Clique para editar o script. Observe que, se um monitor estiver usando esse script, a edição do script poderá resultar em parâmetros incompatíveis e você terá que fazer as modificações correspondentes no monitor também.
- Exibir: Clique para exibir o script.
- Fazer Download: Clique para fazer download do arquivo de script (
.side
,.playwright
ou.js
). - Adicionar Tags: Clique para adicionar tags ao script.
- Excluir: clique para excluir o script. Observe que, se um monitor estiver usando esse script, você não poderá excluir o script.
Na parte inferior da página, você pode exibir a lista de monitores usando o script ou clicar em Criar Monitor para criar um monitor com script. Para obter informações, consulte Criar um Monitor.
Opções avançadas para atualizar scripts
Os scripts no Monitoramento de Disponibilidade permitem registrar caminhos de usuário e simular transações de usuário em um aplicativo.
É possível atualizar o script com comandos personalizados para executar determinadas tarefas, e as seções a seguir detalham alguns dos comandos que você pode adicionar ao script:
Recomenda-se sempre usar um script original e fazer upload e validação dele em um monitor com script executado no serviço Application Performance Monitoring, antes de editá-lo e fazer alterações. A atualização do script com conteúdo personalizado, como variáveis, pode interferir na execução do script novamente da implantação do Selenium IDE local.
Adicionar Variáveis Personalizadas
Você pode adicionar variáveis personalizadas ao conteúdo dos scripts .side
e .js
, que podem ser usadas para definir parâmetros dinâmicos. Isso permite controlar esses parâmetros do script ou do monitor no serviço Application Performance Monitoring. Por exemplo, se você espera que um nome de usuário ou nome de seleção de elemento seja alterado ou se desejar tornar esse valor um segredo para que outras pessoas que tenham acesso ao monitor não possam ver o valor, use variáveis personalizadas.
param name
é obrigatório, mas param value
e isParamValueSecret
são opcionais. O valor padrão para isParamValueSecret
é false
. Consulte os formatos a seguir:
-
Lado e formato JS:
<ORAP><ON>param name</ON><OV>param value</OV><OS>isParamValueSecret(true/false)</OS></ORAP>
-
Formato Playwright:
console.log("<ORAP><ON>param name</ON><OV>param value</OV><OS>isParamValueSecret(true/false)</OS></ORAP>");
Adicionar Marcadores Personalizados
Você pode adicionar comandos de marcador personalizados ao conteúdo dos scripts .side
e .js
, que podem ser usados para transmitir uma mensagem personalizada e uma duração do script para o Explorador de Métricas no serviço Monitoring. Isso permite que você informe uma dimensão CustomMarker, por exemplo, "DURAÇÃO: Verificar Elementos" e operação, por exemplo, setValue
para o serviço Monitoring. A dimensão CustomMarker está disponível com a métrica CustomMetric e usando essa dimensão, você pode adicionar as seguintes operações ao script como marcadores de duração para etapas de transação, como a duração do tempo entre o log-in e o carregamento completo da página:
setValue
: Registra a duração entre a hora inicial do script e a hora em que essa operação é chamada.startTime
: Registra a duração do tempo entre essa operação e a operaçãoendTime
.endTime
: Registra a duração do tempo entre a operaçãostartTime
e essa operação.
Observe que as operações startTime
e endTime
funcionam juntas entre si. Para um CustomMarker que contém as operações startTime
e endTime
, o valor da métrica é <endTime - startTime>
.
Aqui estão os comandos e exemplos da dimensão e das operações CustomMarker:
- Script secundário:
Adicione blocos de comando com a operação que você deseja executar. O valor do comando deve ser
Este é o comando usado para capturar um marcador personalizado em um scriptoraSynCustomMarker
para que seja reconhecido como um comando personalizado. Os valores para os parâmetros de comandotarget
evalue
devem ser o valor da dimensão CustomMarker e a operação respectivamente..side
:{ “id”: “36d45a35-5c07-4d86-8144-90ee7b52260b”, “comment”: “”, “command”: “oraSynCustomMarker”, “target”: “Add Marker Name”, “targets”: [], “value”: “setValue” }
Veja um exemplo:
{ “id”: “36d45a35-5c07-4d86-8144-90ee7b52260b”, “comment”: “For calling Availability Monitoring custom metrics”, “command”: “oraSynCustomMarker”, “target”: “DURATION: Check Elements”, “targets”: [], “value”: “setValue” }
- Script Js:
Adicione o seguinte comando:
oraSynCustomMarker(customMarker, customOperation)
SubstituacustomMarker
pelo valor da dimensão CustomMarker eCustomOperation
pela operação a ser executada na dimensão. Veja um exemplo:oraSynCustomMarker("DURATION: Check Elements", "setValue")
- Script de Playwright:
Utilize o formato a seguir:
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
Você também pode criar Alarmes no serviço Monitoring usando CustomMetric e a dimensão CustomMarker a ser notificada quando a métrica atender aos acionadores especificados pelo alarme. Para obter informações sobre o recurso Alarmes e como criá-los, consulte Gerenciando Alarmes.
Adicionar Capturas de Tela Personalizadas
Você pode adicionar um comando aos scripts .side
e .ts
para capturar capturas de tela personalizadas. Essa funcionalidade permite que você faça capturas de tela a qualquer momento durante a execução do script para diagnosticar problemas. Você pode tirar no máximo dez capturas de tela personalizadas, além das capturas de tela padrão.
- Script secundário:
{ "id": "e227f32f-47f6-432b-976a-6b5db5b53e94", "comment": "", "command": "oraSynCustomScreenshot", "target": "AddScreenshotName", "targets": [], "value": "true" }
- Script de Playwright:
console.log("oraSynCustomScreenshot:<fileName>")
Usar autenticação multifator (MFA)
As Transações de Monitoramento de Disponibilidade suportam Autenticação Multifator (MFA) que gera um token TOTP (Senha Única Baseada em Tempo) que recebe o segredo de autenticação. Para a geração desse TOTP, você precisa fornecer a chave secreta durante a criação do monitor.
oraSynTimeBasedOTP
e, em seguida, informar a variável ${oraSynTimeBasedOTP}
na qual o valor TOTP deverá ser usado:
- Script secundário:
{ "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}" }
O comando para gerar o TOTP éoraSynTimeBasedOTP
. Este comando aceita a chave secreta necessária para gerar o TOTP. A chave secreta deve ser informada como um destino. Ela pode ser passada como uma variável normal ou uma variável confidencial:-
Parâmetro normal:
{ "id": "123abc12-12ab-1a12-1a2a-1234ab123abc", "comment": "", "command": "oraSynTimeBasedOTP", "target": "1ABCDE1A1XTXVOIDQRZP1ZXTZAUDLIBJZ", "targets": [], "value": "" }
-
Parâmetro de senha confidencial ou similar:
{ "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}" }
Você precisa mencionar onde o TOTP (que é gerado) deve ser usado. Geralmente, TOTP será inserido como um valor no respectivo campo de entrada de texto TOTP. TOTP seria armazenado no nome de variável
${oraSynTimeBasedOTP}
. Você precisa fornecer o nome da variável como${oraSynTimeBasedOTP}
, em que o valor TOTP será informado. -
-
Script de Playwright:
O comando para gerar o TOTP éoraSynTimeBasedOTP
. Este comando aceita a chave secreta necessária para gerar o TOTP.console.log("oraSynTimeBasedOTP:<value>")
Exemplo:
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.
Usando Segredos do Vault
No momento, a autenticação de segredos do Vault em pontos de vantagem públicos e pontos de vantagem dedicados é feita usando S2S e Controlador de Instâncias, respectivamente. S2S e Controlador de Instâncias não podem ser usados em Pontos de Vantagem Locais.
Para Pontos de Vantagem On-Premise, você precisa usar o Controlador de Recursos. Depois que a palavra-chave RESOURCE_PRINCIPAL
for adicionada ao script, o controlador de recursos será usado para autenticar Segredos do Vault. Isso funciona em todos os tipos de pontos de vista. Para obter informações, consulte Usando Segredos do Vault com Controladores de Recursos.
.side
, .ts
ou .js
que serão resolvidos no runtime. Isso permite que você atualize variáveis como nomes de usuário e senhas dinamicamente, sem atualizar os scripts ou reiniciar os monitores. Basta criar segredos no vault e usá-los em scripts que serão resolvidos durante a execução do monitor definindo as seguintes políticas em seu tenant:
-
Política de Pontos de Vantagem Públicos
Você pode definir políticas para o serviço APM para acessar segredos em um vault ou compartimento específico:
- Um vault específico:
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>}}
-
Um compartimento específico, usando o nome do compartimento:
Allow service applicationperformancemonitoring to read secret-family in compartment <compartment-name>
Um compartimento específico, usando o id do compartimento:
Allow service applicationperformancemonitoring to read secret-family in compartment id <compartment-ocid>
- Um vault específico:
-
Política de Pontos de Vantagem Dedicada
Você pode definir políticas para o serviço APM para acessar segredos em um compartimento usando o nome ou o id do compartimento:
-
Um compartimento específico, usando o nome do compartimento:
Allow dynamic-group <dvp dynamic group eg stack-11-aug-apmSyntheticDVP-dg> read secret-family in compartment <compartment-name>
-
Um compartimento específico, usando o id do compartimento:
Allow dynamic-group <dvp dynamic group eg stack-11-aug-apmSyntheticDVP-dg> read secret-family in compartment id <compartment-ocid>
-
-
Dependendo do tipo de script, use a seguinte sintaxe:
-
Para o script
.side
, use a seguinte sintaxe:<ORAS>secretOcid</ORAS><ORASREG>vaultRegion</ORASREG>
Por exemplo:
<ORAS>ocid1.vaultsecret.oc1.phx.abcdefghijklmnopqrstuvwxyz123456789</ORAS><ORASREG>us-phoenix-1</ORASREG>
-
Para o script
.ts
, use a seguinte sintaxe:var password = "<ORAS>ocid1.vault.oc1.vault-ocid</ORAS><ORASREG>vaultRegion</ORASREG>" await page.getByRole('textbox', { name: 'password' }).fill(password);
-
Para o script
.js
, use a seguinte sintaxe:method: 'GET', url:'<ORAS>secretOcid</ORAS><ORASREG>vaultRegion</ORASREG>'
Por exemplo:
method: 'GET', url:'<ORAS>ocid1.vaultsecret.oc1.phx.abcdefghijklmnopqrstuvwxyz123456789</ORAS><ORASREG>us-phoenix-1</ORASREG>'
Este
secretOcid
será resolvido durante a execução para extrair valores secretos atuais.A sintaxe
<ORASREG>
é opcional. Ele pode ser usado quando seu serviço de vault está em uma região diferente da dos monitores. Você pode usarvaultRegion
para especificar em qual região seu vault está e segredos serão resolvidos a partir daí. Ele permite que o mesmo script seja usado em regiões. Observe que apenas um<ORASREG>region</ORASREG>
deve estar presente no script.Observação
O tamanho máximo do valor secreto é255
. -
Usando Segredos do Vault com Controladores de Recursos
Você pode atualizar o script para usar segredos do Vault com Controlador de Recursos.
O suporte baseado no Controlador de Recursos é adicionado para acessar segredos do Vault. É possível adicionar políticas baseadas no Controlador de Recursos para permitir que os monitores Rest, Siderunner e Playwright acessem os segredos do Vault.
- Crie um grupo dinâmico no tipo de recurso do monitor.
Adicione uma das seguintes regras para permitir que todos os recursos de monitoramento do tipo de recurso
apmsyntheticmonitor
acessem segredos do Vault:- Opção 1:
All {resource.type='apmsyntheticmonitor'}
Use essa opção se você tiver um único recurso (como um único monitor).
- Opção 2:
ANY {resource.type='apmsyntheticmonitor'}
Use essa opção se tiver um único recurso (como um único monitor) ou se tiver vários recursos (como Domínio do APM e outros).
- Opção 1:
- Adicione política para permitir o acesso a Vaults usando Controladores de Recursos:
Allow dynamic-group <vault dg> to read to secret-family in compartment <compartment-name>
Opcional: Para acesso de segredos do Vault entre tenancies, faça o seguinte:
- Adicione políticas à tenancy do Domínio do 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
- Adicione políticas à tenancy do 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>
Para obter informações sobre instruções
DEFINE
,ENDORSE
eADMIT
, consulte Documentação do Serviço Object Storage. - Adicione políticas à tenancy do Domínio do APM:
- Adicione parâmetros do Vault no script com a palavra-chave
RESOURCE_PRINCIPAL
Forneça a sintaxe apropriada no scriptjs
,side
ouplaywright
. Juntamente com o OCID e a região do segredo do Vault, é necessário informar uma palavra-chaveRESOURCE_PRINCIPAL
.Observação
Ela só precisa ser adicionada a um dos parâmetros do Vault.Exemplo:
Por outro lado, o script se parece com o seguinte exemplo:
"command": "<ORAS>ocid1.vaultsecret.oc1.phx.amaaaaaatttttuuuuaa</ORAS><ORASREG>us-phoenix-1</ORASREG><ORASAUTH>RESOURCE_PRINCIPAL</ORASAUTH>",
Exemplo de Playwright:
Para playwright, o script se parece com o seguinte exemplo:var password = "<ORAS>ocid1.vault.oc1.vault-ocid</ORAS><ORASREG>vaultRegion</ORASREG><ORASAUTH>RESOURCE_PRINCIPAL</ORASAUTH>" await page.getByRole('textbox', { name: 'password' }).fill(password);
Para obter mais informações, consulte Usando Segredos do Vault.
Exemplo de JS:
Para o monitor SCRIPTED_REST, use a palavra-chave
RESOURCE_PRINCIPAL
no script.Por exemplo, consulte o seguinte script
.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); });