Usar esquemas de canaries - Amazon CloudWatch

Usar esquemas de canaries

Esta seção fornece detalhes sobre cada um dos esquemas de canaries e as tarefas para as quais cada um é mais adequado. Os esquemas são fornecidos pelos seguintes tipos de canaries:

  • Monitor de pulsação

  • Canário da API

  • Verificador de links quebrados

  • Monitoramento visual

  • Gravador do canário

  • Fluxo de trabalho da GUI

Ao usar um esquema para criar um canário, conforme você preenche os campos no console do CloudWatch, a área Script editor (Editor de scripts) da página exibe o canário que você está criando como um script Node.js. Também é possível editar o canário nessa área para personalizá-lo ainda mais.

Monitorar pulsação

Os scripts de pulsação carregam a URL especificada e armazenam uma captura de tela da página e um arquivo HTTP (arquivo HAR). Eles também armazenam logs de URLs acessados.

É possível usar os arquivos HAR para visualizar dados de performance detalhados sobre as páginas da web. Você pode analisar a lista de solicitações da web e detectar problemas de performance, como tempo de carregamento de um item.

Se o canário usar a versão de runtime syn-nodejs-puppeteer-3.1 ou posterior, você poderá usar o esquema de monitoramento de pulsação para monitorar várias URLs e ver o status, a duração, as capturas de telas associadas e o motivo da falha de cada URL no resumo de etapas do relatório de execução do canário.

Canário da API

Canaries de API podem testar as funções básicas de leitura e gravação de uma API REST. REST significa representational state transfer (transferência de estado representacional) e é um conjunto de regras que os desenvolvedores seguem ao criar uma API. Uma dessas regras determina que um link para um URL específico deve retornar uma parte dos dados.

O canaries podem trabalhar com qualquer APIs e testar todos os tipos de funcionalidade. Cada canário pode fazer várias chamadas de API.

Em canários que usam a versão de runtime syn-nodejs-2.2 ou posterior, o esquema do canário da API é compatível com canários de várias etapas que monitoram suas APIs como etapas HTTP. É possível testar várias APIs em um único canário. Cada etapa é uma solicitação separada que pode acessar uma URL diferente, usar cabeçalhos diferentes e usar regras diferentes para definir se os cabeçalhos e os corpos das respostas serão capturados. Não capturarando cabeçalhos e corpo de resposta, você pode impedir que dados sigilosos sejam registrados.

Cada solicitação de um canário da API consiste nas seguintes informações:

  • O endpoint, que é o URL solicitado.

  • O método, que é o tipo da solicitação enviada para o servidor. APIs REST oferecem suporte a operações GET (leitura), POST (gravação), PUT (atualização), PATCH (atualização) e DELETE (exclusão).

  • Os cabeçalhos, que fornecem informações para o cliente e o servidor. Eles são usados para autenticação e para fornecer informações sobre o conteúdo do corpo. Para obter uma lista de cabeçalhos válidos, consulte Cabeçalhos HTTP.

  • Os dados (ou o corpo) que contêm informações a serem enviadas para o servidor. Isso é usado somente para solicitações POST, PUT, PATCH ou DELETE.

O esquema do canário de API é compatível com os métodos GET e POST. Ao usar esse esquema, é necessário especificar cabeçalhos. Por exemplo, você pode especificar Authorization como uma Key (Chave) e especificar os dados de autorização necessários como o Value (Valor) para essa chave.

Se você estiver testando uma solicitação POST, especifique também o conteúdo a ser publicado no campo Data (Dados).

Integração com o API Gateway

O esquema de API é integrado ao Amazon API Gateway. Isso permite selecionar uma API do API Gateway e um estágio da mesma conta e região da AWS como o canário ou carregar um modelo do Swagger do API Gateway para monitoramento de API entre contas e regiões. Então é possível escolher os detalhes restantes no console para criar o canário, em vez de inseri-los do zero. Para obter mais informações sobre o API Gateway, consulte O que é o Amazon API Gateway?

Usar uma API privada

Você pode criar um canário que use uma API privada no Amazon API Gateway. Para obter mais informações, consulte Como criar uma API privada no Amazon API Gateway?

O verificador de links quebrados coleta todos os links dentro da URL que você está testando usando document.getElementsByTagName('a'). Ele testa apenas até o número de links especificado, e a URL em si é considerada o primeiro link. Por exemplo, se você quiser verificar todos os links em uma página que contenha cinco links, deverá especificar para o canário seguir seis links.

Os canários que verificam links quebrados criados usando o runtime syn-nodejs-2.0-beta ou posterior oferecem suporte aos seguintes recursos adicionais:

  • Fornece um relatório contendo os links verificados, o código de status, o motivo da falha (se houver) e as capturas de tela da página de origem e de destino.

  • Ao visualizar os resultados do canário, é possível filtrar para ver apenas os links quebrados e corrigir o link de acordo com o motivo da falha.

  • Essa versão obtém capturas de tela da página de origem anotada para cada link e destaca a âncora onde o link foi encontrado. Os componentes ocultos não são anotados.

  • É possível configurar essa versão para obter capturas de tela de páginas de origem e de destino, apenas páginas de origem ou apenas páginas de destino.

  • Essa versão corrige um problema na versão anterior em que o script do canário é interrompido após o primeiro link quebrado mesmo quando mais links são extraídos da primeira página.

Para atualizar um canário existente com syn-1.0 para usar o novo runtime, é necessário excluir e recriar o canário. Atualizar um canário existente para o novo runtime não disponibiliza esses recursos.

Um canário do verificador de links quebrados detecta os seguintes tipos de erros de link:

  • 404 Page Not Found (404 Página não encontrada)

  • Invalid Host Name (Nome de host inválido)

  • Bad URL (URL incorreto). Por exemplo, a URL não contém um colchete, tem barras extras ou usa um protocolo incorreto.

  • Invalid HTTP response code (Código de resposta HTTP inválido).

  • O servidor host gera respostas vazias sem conteúdo e sem código de resposta.

  • As solicitações HTTP constantemente atingem o tempo limite durante a execução do canário.

  • O host elimina conexões consistentemente porque ele está configurado incorretamente ou está muito ocupado.

Esquema de monitoramento visual

O esquema de monitoramento visual inclui código para comparar capturas de tela feitas durante uma execução do canário com capturas de tela feitas durante uma execução do canário de linha de base. Se a discrepância entre as duas capturas de tela estiver além de uma porcentagem limite, o canário falhará. O monitoramento visual é compatível com canaries que executam syn-puppeteer-node-3.2 e posterior. Atualmente não é compatível com canaries que executam Python e Selenium.

O esquema de monitoramento visual inclui a seguinte linha de código no script do canário do esquema padrão, que permite o monitoramento visual.

syntheticsConfiguration.withVisualCompareWithBaseRun(true);

A primeira vez que o canário é executado corretamente após essa linha ser adicionada ao script, ele usa as capturas de tela obtidas durante a execução como linha de base para comparação. Após a primeira execução do canário, é possível usar o console do CloudWatch para editar o canário para fazer qualquer um destes procedimentos:

  • Defina a próxima execução do canário como a nova linha de base.

  • Estabeleça limites na captura de tela de linha de base atual para designar as áreas da captura de tela que deverão ser ignoradas durante comparações visuais.

  • Remova uma captura de tela que não será usada para monitoramento visual.

Para obter mais informações sobre como usar o console do CloudWatch para editar um canário, consulte Editar ou excluir um canário.

Também é possível alterar a execução do canário que é usada como linha de base usando os parâmetros nextrun ou lastrun ou especificando um ID de execução do canário na API UpdateCanary.

Ao usar o esquema de monitoramento visual, insira a URL onde deseja que a captura de tela seja feita e especifique um limite de diferença em porcentagem. Após a execução da linha de base, as execuções futuras do canário que detectam uma diferença visual maior do que esse limite desencadeiam uma falha do canário. Após a execução da linha de base, também é possível editar o canário para “traçar” limites na captura de tela da linha de base que deseja ignorar durante o monitoramento visual.

O recurso de monitoramento visual é desenvolvido pelo toolkit de software de código aberto ImageMagick. Para obter mais informações, consulte ImageMagick.

Gravador do canário

Com o esquema do gravador do canário, é possível usar o CloudWatch Synthetics Recorder para registrar suas ações de clicar e digitar em um site e gerar automaticamente um script Node.js que pode ser usado para criar um canário que segue as mesmas etapas. O CloudWatch Synthetics Recorder é uma extensão do Google Chrome fornecida pela Amazon.

Créditos: o CloudWatch Synthetics Recorder é baseado no Headless recorder .

Para ter mais informações, consulte Usar o CloudWatch Synthetics Recorder para Google Chrome.

Criador de fluxos de trabalho da GUI

O esquema criador de fluxos de trabalho da GUI verifica se as ações podem ser executadas em sua página da Web. Por exemplo, se você tiver uma página da Web com um formulário de login, o canário poderá preencher os campos de usuário e senha e enviá-lo para verificar se a página da Web está funcionando corretamente.

Ao usar um esquema para criar esse tipo de canário, especifique as ações a serem executadas pelo canário na página da Web. As ações que podem ser utilizadas são as seguintes:

  • Clicar: seleciona o elemento especificado e simula um usuário clicando ou escolhendo o elemento.

    Para especificar o elemento em um script Node.js, use [id=] ou a[class=].

    Para especificar o elemento em um script Python .js, use xpath //*[@id=] ou //*[@class=].

  • Verificar seletor: verifica se o elemento especificado existe na página da Web. Esse teste é útil para verificar se uma ação anterior faz com que os elementos corretos preencham a página.

    Para especificar o elemento a ser verificado em um script Node.js, use [id=] ou a[class=].

    Para especificar o elemento a ser verificado em um script Python .js, use xpath //*[@id=] ou //*[class=].

  • Verificar texto: verifica se a string especificada está contida no elemento de destino. Esse teste é útil para verificar se uma ação anterior fez o texto correto ser exibido.

    Para especificar o elemento em um script do Node.js, use um formato como div[@id=]//h1 porque essa ação usa a função waitForXPath no Puppeteer.

    Para especificar o elemento em um script Python, use o formato xpath como //*[@id=] ou //*[@class=] porque esta ação usa a função implicitly_wait no Selenium.

  • Texto de entrada: grava o texto especificado no elemento de destino.

    Para especificar o elemento a ser verificado em um script Node.js, use [id=] ou a[class=].

    Para especificar o elemento a ser verificado em um script Python .js, use xpath //*[@id=] ou //*[@class=].

  • Clicar com a navegação: aguarda a página inteira ser carregada depois de escolher o elemento especificado. Isso é mais útil quando é necessário recarregar a página.

    Para especificar o elemento em um script Node.js, use [id=] ou a[class=].

    Para especificar o elemento em um script Python .js, use xpath //*[@id=] ou //*[@class=].

Por exemplo, o esquema a seguir usa Node.js. Ele clica no firstButton na URL especificada, verifica se o seletor esperado com o texto esperado é exibido, insere o nome Test_Customer no campo Name (Nome), clica no botão Login e confere se o login teve êxito verificando o texto de boas-vindas na página seguinte.

A página de criação do canário no console, com campos preenchidos para o esquema de fluxo de trabalho da GUI.

Os canários de fluxo de trabalho GUI que usam os tempos de execução a seguir também fornecem um resumo das etapas executadas para cada execução do canário. É possível usar as capturas de tela e a mensagem de erro associadas a cada etapa para encontrar a causa raiz da falha.

  • syn-nodejs-2.0 ou posterior

  • syn-python-selenium-1.0 ou posterior