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 pacote postman-request. Para obter informações sobre o pacote postman-request, consulte postman-request.

Para fazer upload do script para o serviço Application Performance Monitoring:

  1. Acesse a console do Oracle Cloud Infrastructure.
  2. Abra o menu de navegação, clique em Observabilidade e Gerenciamento. Em Application Performance Monitoring, clique em Monitoramento de Disponibilidade.
  3. No painel esquerdo, clique em Scripts.
  4. No painel esquerdo, selecione o compartimento e o domínio do APM no qual você deseja criar o script.
  5. Clique em Criar Script.
    O assistente Criar Script é exibido.
  6. Na página Definição de Script, solte ou selecione o arquivo de script.
    Após o upload do arquivo de script, os detalhes do script, como quando ele foi Modificado, Tamanho e Tipo, são exibidos com os seguintes campos:
    • Script: Nome do arquivo de script.
    • Conteúdo: Conteúdo do arquivo de script.

      Se especificado no arquivo de script, os parâmetros de script também serão exibidos e você poderá optar por manter os valores padrão ou substituí-los. Você também pode optar por usar a opção O valor é secreto no parâmetro para tornar o valor secreto, que então não será exibido quando o script for usado para criar um monitor com script ou quando o script for editado. Isso é especialmente útil para garantir que informações confidenciais, como senhas, não sejam visíveis ao editar o script.

      Se o tipo de script for side ou playwright, as guias Criador de script e Editor em linha estarão disponíveis.

      • Construtor de script: Fornece uma view de tabela de todos os comandos em um formato amigável ao usuário.

        Use o Construtor de script para adicionar, atualizar ou excluir comandos laterais no conteúdo do script de maneira mais fácil do que usar o Editor em linha.

        Clique em Adicionar comando para adicionar comandos usando o Construtor de script.
        • Uma janela é exibida no lado direito, onde você pode adicionar o Comando, o Destino e o Valor.
        • Se o Comando selecionado para adicionar for open ou click, um botão de opção será exibido com as opções: Page Title ou Comment.

          Page Title: Se selecionado, um título de página personalizado poderá ser usado. Por exemplo, se o usuário quiser informar Login page como um título de página personalizado, Page Title precisará ser selecionado e informar o valor: Login page em Comentário.

          Comment: Se selecionado, informe o valor do comentário em Comentário.

        • Em Referência, você pode ver informações sobre o comando.
        • Quando terminar, clique em Adicionar Acima ou Adicionar Abaixo.
        Clique em Ações para Editar, Clonar, Desativar, Redefinir ou Excluir comandos.
        • Use Editar para atualizar um comando existente.
        • Use Clone para clonar um novo comando de um comando existente.
        • Use Desativar para desativar um comando.
        • Use Redefinir para redefinir o conteúdo do script para sua versão inicial (quando o usuário fez upload do script).
        • Use Excluir para excluir comandos.

        Clique em uma linha do Comando de dentro da tabela para Exibir detalhes do comando.

        Clique no menu de ação para Exibir detalhes do comando, Adicionar comando, Editar, Clonar ou Excluir.

        Use Ativar/Desativar Comando para ativar ou interromper a execução de qualquer comando no nível da linha.

      • Editor em linha: Fornece fácil navegação para editar o conteúdo do script com os seguintes recursos:
        • Use os números de linha com a opção de expandir e recolher para visualizar o código facilmente.
        • Um mapa está disponível no lado direito para navegação mais rápida e localização de seções de script.
        • Pesquisar e substituir a funcionalidade no editor.
        • Recurso de validação de script.
        Clique no link Ajuda localizado no lado direito para ver as seguintes opções:
        • Marcador personalizado: Copie os comandos e valores para o script e adicione-os ao editor.

          Isso permite que você informe uma dimensão personalizada, por exemplo, "DURAÇÃO: Verificar Elementos" e operação, por exemplo, setValue/startTime/endTime do script para o Explorador de Métricas no serviço Oracle Cloud Infrastructure Monitoring.

        • Captura de tela personalizada: Copie os comandos e adicione-os no editor a um script .side.

          Isso permite capturar capturas de tela personalizadas (sob demanda) em uma instância específica no script. Semelhante à funcionalidade disponível para capturas de tela padrão, você pode exibir e fazer download de capturas de tela personalizadas na seção History da página <name of the monitor>.

        • OTP baseado em tempo: Copie os comandos e adicione-os ao editor para gerar o OTP baseado em tempo durante as execuções de teste. Você pode adicionar sua chave secreta ao usar esta opção.

      Para obter informações sobre os comandos para adicionar variáveis personalizadas, marcadores e capturas de tela, consulte Advanced Options to Update Scripts.

    Verifique os detalhes e clique em Próximo.

  7. Na página Tags (Opcional), você pode optar por usar o sistema de metadados do serviço Tagging para organizar e rastrear os scripts e clicar em Próximo.
    Se as tags forem adicionadas ao script, você poderá filtrar e exibir scripts na página Scripts usando Filtros de Tag no painel esquerdo.

    Para obter informações sobre o serviço Tagging, consulte Visão Geral do Serviço Tagging.

  8. Na página Resumo, reveja o resumo do script e clique em Criar.
A página <nome do script> será exibida. Esta página inclui duas guias: Informações do Script com informações como o nome do arquivo de script, quando ele foi criado, modificado e submetido a upload, o OCID designado a ele, o tipo de script e os parâmetros, se especificados no script. A guia Tags tem informações sobre as tags adicionadas ao script, se houver.

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:

Observação

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.

Ao adicionar variáveis personalizadas ao conteúdo do script, 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ção endTime.
  • endTime: Registra a duração do tempo entre a operação startTime 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 oraSynCustomMarker para que seja reconhecido como um comando personalizado. Os valores para os parâmetros de comando target e value devem ser o valor da dimensão CustomMarker e a operação respectivamente.

    Este é o comando usado para capturar um marcador personalizado em um script .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)
    Substitua customMarker pelo valor da dimensão CustomMarker e CustomOperation 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.

Este é o comando usado para capturar uma captura de tela personalizada:
  • 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.

Para usar a MFA, no script, você precisa incluir o comando 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

Observação

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.

Você pode especificar segredos do Vault em scripts .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:
  1. 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>
  2. 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>
  3. 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 usar vaultRegion 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.

Para usar segredos do Vault com o Controlador de Recursos, faça o seguinte:
  1. 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).

  2. 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:

    1. 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
    2. 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 e ADMIT, consulte Documentação do Serviço Object Storage.

  3. Adicione parâmetros do Vault no script com a palavra-chave RESOURCE_PRINCIPAL
    Forneça a sintaxe apropriada no script js , side ou playwright. Juntamente com o OCID e a região do segredo do Vault, é necessário informar uma palavra-chave RESOURCE_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);
    });