

# Configurar uma aplicação Web para usar o CloudWatch RUM
<a name="CloudWatch-RUM-get-started"></a>

Siga as etapas nessas seções para configurar a aplicação Web para começar a usar o CloudWatch RUM na coleta de dados de performance de sessões de usuário reais.

**Topics**
+ [Autorizar a aplicação a enviar dados para a AWS](CloudWatch-RUM-get-started-authorization.md)
+ [Criar um monitor de aplicações do CloudWatch RUM para uma aplicação Web](CloudWatch-RUM-get-started-create-app-monitor.md)
+ [Modificação do trecho de código para a configuração do cliente Web do CloudWatch RUM (opcional)](CloudWatch-RUM-modify-snippet.md)
+ [Como inserir o trecho de código do monitor de aplicação do CloudWatch na aplicação](CloudWatch-RUM-get-started-insert-code-snippet.md)
+ [Teste da configuração do monitor de aplicação do CloudWatch ao gerar eventos de usuário](CloudWatch-RUM-get-started-generate-data.md)

# Autorizar a aplicação a enviar dados para a AWS
<a name="CloudWatch-RUM-get-started-authorization"></a>

Há quatro opções para configurar a autenticação de dados:
+ Usar o Amazon Cognito e deixar o CloudWatch RUM criar um novo banco de identidades do Amazon Cognito para a aplicação. Esse método requer o menor esforço de configuração.

  O grupo de identidades conterá uma identidade não autenticada. Isso permite que o cliente da Web do CloudWatch RUM envie dados para o CloudWatch RUM sem autenticar o usuário da aplicação.

  O grupo de identidades do Amazon Cognito tem uma função do IAM anexada. A identidade não autenticada do Amazon Cognito permite que o cliente da Web assuma a função do IAM autorizada a enviar dados para o CloudWatch RUM.
+ Use o Amazon Cognito para autenticação. Se você fizer isso, poderá usar um banco de identidades existente do Amazon Cognito ou criar um novo para usar com este monitor de aplicações. Se você usar um banco de identidades existente, também deverá modificar o perfil do IAM anexado a esse banco de identidades. Use esta opção para bancos de identidades que oferecem suporte para usuários não autenticados. Você pode usar somente bancos de identidades da mesma região.
+ Use a autenticação de um provedor de identidade existente que você já configurou. Nesse caso, você deve obter credenciais do provedor de identidade e sua aplicação deve encaminhá-las para o cliente da Web do RUM.

  Use esta opção para bancos de identidades que oferecem suporte somente para usuários autenticados.
+ Use políticas baseadas em recursos para gerenciar o acesso ao monitor da aplicação. Isso inclui a capacidade de enviar solicitações não autenticadas para o CloudWatch RUM sem as credenciais da AWS. Para saber mais sobre as políticas baseadas em recursos e o RUM, consulte [Usar políticas baseadas em recursos com o CloudWatch RUM](CloudWatch-RUM-resource-policies.md).

As seções a seguir apresentam mais detalhes sobre essas opções.

## Usar um grupo existente de identidades do Amazon Cognito
<a name="CloudWatch-RUM-get-started-authorization-existingcognito"></a>

Se você optar por usar um banco de identidades do Amazon Cognito, especifique o banco de identidades ao adicionar a aplicação ao CloudWatch RUM. O grupo deve ser compatível com a habilitação do acesso a identidades não autenticadas. Você pode usar somente bancos de identidades da mesma região.

Você também deve adicionar as seguintes permissões à política do IAM anexada à função do IAM associada a esse grupo de identidades.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        { 
            "Effect": "Allow",
            "Action": [
                "rum:PutRumEvents"
            ],
            "Resource": "arn:aws:rum:us-east-1:123456789012:appmonitor/app monitor name" 
        }
    ]
}
```

------

O Amazon Cognito enviará o token de segurança necessário para permitir que sua aplicação acesse o CloudWatch RUM.

## Provedor de terceiros
<a name="CloudWatch-RUM-get-started-authorization-thirdparty"></a>

Se você decidir usar a autenticação privada de um provedor terceirizado, deverá obter credenciais do provedor de identidade e encaminhá-las para a AWS. A melhor maneira de fazer isso é usar um *fornecedor de token de segurança*. Você pode usar qualquer fornecedor de token de segurança, incluindo o Amazon Cognito com o AWS Security Token Service. Para obter mais informações sobre o AWS STS, consulte [Welcome to the AWS Security Token Service API Reference](https://docs.aws.amazon.com/STS/latest/APIReference/welcome.html). 

Se você quiser usar o Amazon Cognito como fornecedor de token nesse cenário, você pode configurá-lo para trabalhar com um provedor de autenticação. Para obter mais informações, consulte [Conceitos básicos dos grupos de identidades do Amazon Cognito (identidades federadas)](https://docs.aws.amazon.com/cognito/latest/developerguide/getting-started-with-identity-pools.html).

Depois de configurar o Amazon Cognito para trabalhar com seu provedor de identidade, é necessário também fazer o seguinte:
+ Criar uma função do IAM com as permissões a seguir. Sua aplicação usará essa função para acessar a AWS.

------
#### [ JSON ]

****  

  ```
  { 
   "Version":"2012-10-17",		 	 	 
   "Statement": [ 
     { 
       "Effect": "Allow",
       "Action": "rum:PutRumEvents",
       "Resource": "arn:aws:rum:us-east-2:123456789012:appmonitor/AppMonitorName"
     }
   ]
  }
  ```

------
+ Adicione o seguinte à sua aplicação para que ela passe as credenciais do provedor para o CloudWatch RUM. Insira a linha para que ela seja executada depois que um usuário fizer login na aplicação e a aplicação receber as credenciais a serem usadas para acessar a AWS.

  ```
  cwr('setAwsCredentials', {/* Credentials or CredentialProvider */});
  ```

Para obter mais informações sobre provedores de credenciais no SDK JavaScript da AWS, consulte [Definir credenciais em um navegador da Web](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/setting-credentials-browser.html) no guia do desenvolvedor v3 para SDK JavaScript, [Configurar credenciais em um navegador da Web](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/setting-credentials-browser.html) no guia do desenvolvedor v2 para SDK para JavaScript, e [@aws -sdk/credencial-providers](https://www.npmjs.com/package/@aws-sdk/credential-providers). 

Você também pode usar o SDK para o cliente da Web do CloudWatch RUM configurar os métodos de autenticação do cliente da Web. Para obter mais informações sobre o cliente da Web, do SDK, consulte [CloudWatch RUM web client SDK](https://github.com/aws-observability/aws-rum-web). 

# Criar um monitor de aplicações do CloudWatch RUM para uma aplicação Web
<a name="CloudWatch-RUM-get-started-create-app-monitor"></a>

Para começar a usar o CloudWatch RUM com sua aplicação, você cria um *app monitor* (monitor de aplicações). Quando o monitor de aplicações é criado, o RUM gera um trecho de código ser colado na aplicação. O trecho de código importa o código do cliente do RUM. O cliente do RUM captura dados das sessões de usuário da aplicação e os envia ao RUM.

## Para criar um monitor de aplicações para uma plataforma Web
<a name="web-platform-app-monitor"></a>

1. Abra o console do CloudWatch, em [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. No painel de navegação, escolha **Application Signals** e, em seguida, **RUM**.

1. Escolha **Add app monitor** (Adicionar monitor de aplicações).

1. Em **App monitor name** (Nome do monitor de aplicações), insira um nome a ser usado para identificar esse monitor de aplicações no console do CloudWatch RUM.

1. Selecione **Web** como plataforma.

1. Em **Domínio da aplicação**, insira os nomes de domínio registrados nos quais sua aplicação tem autoridade administrativa. Você também pode usar um caractere curinga `*` para permitir quaisquer subdomínios ou domínios de nível superior (p. ex., \$1.amazon.com, amazon.\$1, \$1.amazon.\$1).

1. Em **Configure RUM data collection** (Configurar a coleta de dados do RUM), especifique se você deseja que o monitor de aplicações colete cada um dos seguintes dados:
   + **Performance telemetry** (Telemetria de performance) – Coleta informações sobre o carregamento da página e os tempos de carregamento de recursos
   + **Erros de JavaScript** (Erros de JavaScript): coleta informações sobre erros de JavaScript não tratados gerados pela sua aplicação

     Você pode selecionar **Desminificar rastreamentos de pilha de erros de JavaScript** para depurar erros de JavaScript desminificados. Para usar esse recurso, faça upload dos seus arquivos de mapa de origem para um bucket ou pasta do Amazon S3 e informe o URI do Amazon S3. Uma vez ativado, o RUM usará esses mapas de origem e enriquecerá os eventos de erro de JavaScript adicionando o rastreamento de pilha desminificado. Observe que após habilitar esse recurso, ele processará apenas novos eventos de erro de JavaScript e não poderá ser usado em dados coletados anteriormente. Para obter mais informações, consulte [Habilitar a desminificação de rastreamentos de pilha de erros em JavaScript](CloudWatch-RUM-JavaScriptStackTraceSourceMaps.md).
   + **HTTP Errors** (Erros HTTP): coleta informações sobre erros de HTTP lançados pela aplicação

   A seleção dessas opções fornece mais informações sobre sua aplicação, mas também gera mais eventos RUM do CloudWatch e, portanto, incorre em mais cobranças.

   Se você não selecionar nenhuma delas, o monitor de aplicações ainda coletará eventos de início de sessão e IDs de página para que você possa ver quantos usuários estão usando sua aplicação, incluindo falhas por tipo e versão do sistema operacional, tipo e versão do navegador, tipo de dispositivo e localização.

1. Selecione **Check this option to allow the CloudWatch RUM Web Client to set cookies** (Marque esta opção para permitir que o CloudWatch RUM Web Client defina cookies) se quiser coletar IDs de usuário e IDs de sessão de sessões de usuário amostradas. As IDs de usuário são geradas aleatoriamente pelo RUM. Para obter mais informações, consulte [Cookies do cliente da Web do CloudWatch RUM (ou tecnologias semelhantes)](CloudWatch-RUM-privacy.md#CloudWatch-RUM-cookies).

1. Em **Sessions sample** (Exemplos de sessão), insira a porcentagem de sessões do usuário que serão usadas para coletar dados do RUM. O padrão é 100%. A redução desse número fornece menos dados, mas diminui suas cobranças. Para obter mais informações sobre a definição de preços do RUM, consulte [Definição de preços do RUM](CloudWatch-RUM.md#RUMpricing).

1. Os dados do usuário final coletados para o CloudWatch RUM são retidos por 30 dias e depois excluídos. Se você quiser manter cópias de eventos RUM no CloudWatch Logs e configurar por quanto tempo reter essas cópias, escolha **Check this option to store your application telemetry data in your CloudWatch Logs account** (Marque esta opção para armazenar os dados de telemetria da aplicação em sua conta do CloudWatch Logs) abaixo de **Data storage** (Armazenamento de dados). Por padrão, o grupo de logs do CloudWatch Logs retém os dados por 30 dias. Você pode ajustar seu período de retenção de logs no console de Logs do CloudWatch.

1. (Opcional) Escolha adicionar uma política baseada em recursos ao monitor da aplicação para controlar quem pode enviar solicitações `PutRumEvents` ao monitor da aplicação. Se você escolher **Criar política pública**, uma política de recursos será anexada ao monitor da aplicação, permitindo que qualquer pessoa envie solicitações `PutRumEvents` ao monitor da aplicação. Para obter mais informações sobre esse método, consulte [Usar políticas baseadas em recursos com o CloudWatch RUM](CloudWatch-RUM-resource-policies.md).

1. Se você anexou uma política baseada no recurso na etapa anterior, não precisará assinar solicitações ao CloudWatch RUM com as credenciais da AWS e poderá pular a configuração da autorização. Caso contrário, em **Autorização**, especifique se deve ser usado um banco de identidades novo ou existente do Amazon Cognito ou se é preciso usar outro provedor de identidades. A criação de um novo grupo de identidades é a opção mais simples, que não requer outras etapas de configuração. Para obter mais informações, consulte [Autorizar a aplicação a enviar dados para a AWS](CloudWatch-RUM-get-started-authorization.md).

   A criação de um novo grupo de identidades do Amazon Cognito requer permissões administrativas. Para obter mais informações, consulte [Políticas do IAM para uso do CloudWatch RUM](CloudWatch-RUM-permissions.md).

1. (Opcional) Por padrão, quando você adiciona o snippet de código RUM à aplicação, o cliente da Web injeta a etiqueta JavaScript para monitorar o uso no código HTML de todas as páginas da aplicação. Para alterar isso, escolha **Configure pages** (Configurar páginas) e, em seguida, escolha **Include only these pages** (Incluir somente essas páginas) ou **Exclude these pages** (Excluir essas páginas). Em seguida, especifique as páginas a serem incluídas ou excluídas. Para especificar uma página a ser incluída ou excluída, insira as URLs completas. Para especificar páginas adicionais, escolha **Add URL** (Adicionar URL).

1. Para habilitar o rastreamento do AWS X-Ray para as sessões de usuário incluídas na amostra obtida pelo monitor de aplicações, escolha **Rastreamento ativo** e selecione **Rastrear meu serviço com o AWS X-Ray**.

   Se você fizer essa seleção, as solicitações `XMLHttpRequest` e `fetch` feitas durante as sessões do usuário amostradas pelo monitor de aplicações serão rastreadas. Você pode visualizar os rastreamentos e segmentos dessas sessões de usuário no painel do RUM e no mapa de rastreamento e nas páginas de detalhes do rastreamento do X-Ray. Essas sessões de usuário também aparecerão como páginas de clientes no [Application Signals](CloudWatch-Application-Monitoring-Sections.md) depois que você as tiver habilitado para a aplicação.

   Ao fazer alterações de configuração adicionais no cliente da Web do CloudWatch RUM, você pode adicionar um cabeçalho de rastreamento do X-Ray às solicitações HTTP para permitir o rastreamento de ponta a ponta das sessões do usuário até o downstream de serviços gerenciados pela AWS. Para obter mais informações, consulte [Habilitar o rastreamento do X-Ray de ponta a ponta](CloudWatch-RUM-modify-snippet.md#CloudWatch-RUM-xraytraceheader).

1. (Opcional) Para adicionar etiquetas ao monitor de aplicações, escolha **Tags** (Etiquetas), **Add new tag** (Adicionar nova etiqueta).

   Em seguida, em **Key** (Chave), insira um nome para a etiqueta. É possível adicionar um valor opcional para a tag em **Valor**. 

   Para adicionar outra etiqueta, escolha novamente **Add new tag** (Adicionar nova etiqueta).

   Para obter mais informações, consulte [Marcar recursos da AWS](https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html).

1. Escolha **Add app monitor** (Adicionar monitor de aplicações).

1. Na seção **Código de exemplo**, é possível copiar o snippet de código a ser usado para adicioná-lo à aplicação. Recomendamos escolher **JavaScript** ou **TypeScript** e usar o NPM para instalar o cliente web CloudWatch RUM como um módulo JavaScript.

   Como alternativa, é possível escolher **HTML** para usar uma rede de entrega de conteúdo (CDN) para instalar o cliente da Web do CloudWatch RUM. A desvantagem de usar uma CDN é que o cliente da Web muitas vezes é bloqueado por bloqueadores de anúncios.

1. Escolha **Copy** (Copiar) ou **Download** (Fazer download) e, em seguida, escolha **Done** (Pronto).

# Modificação do trecho de código para a configuração do cliente Web do CloudWatch RUM (opcional)
<a name="CloudWatch-RUM-modify-snippet"></a>

Você pode modificar o snippet de código antes de inseri-lo em sua aplicação, para ativar ou desativar várias opções. Para obter mais informações, consulte a [ Documentação do cliente da Web do CloudWatch RUM](https://github.com/aws-observability/aws-rum-web/blob/main/docs/cdn_installation.md).

Existem quatro opções de configuração que você definitivamente deve conhecer, conforme discutido nestas seções.

## Impedir a coleta de URLs de recursos que possam conter informações pessoais
<a name="CloudWatch-RUM-resourceURL"></a>

Por padrão, o cliente da Web do CloudWatch RUM é configurado para registrar as URLs de recursos baixados pela aplicação. Esses recursos incluem arquivos HTML, imagens, arquivos CSS, arquivos JavaScript e assim por diante. Em algumas aplicações, os URLs podem conter informações de identificação pessoal (PII).

Se esse for o caso da sua aplicação, recomendamos que você desabilite a coleção de URLs de recursos definindo `recordResourceUrl: false` na configuração do snippet de código antes de inseri-lo em sua aplicação.

## Registrar visualizações de página manualmente
<a name="CloudWatch-RUM-pageload"></a>

Por padrão, o cliente da Web registra as visualizações de página quando ela é carregada pela primeira vez e quando a API de histórico do navegador é chamada. O ID da página padrão é `window.location.pathname`. No entanto, em alguns casos, talvez você queira substituir esse comportamento e instrumentar a aplicação para registrar visualizações de página de forma programática. Isso permite que você controle o ID da página e quando ele é gravado. Por exemplo, considere uma aplicação da Web que tenha um URI com um identificador de variável, como `/entity/123` ou `/entity/456`. Por padrão, o CloudWatch RUM gera um evento de visualização de página para cada URI com um ID de página distinto correspondente ao nome do caminho, mas talvez você queira agrupá-los pelo mesmo ID de página. Para fazer isso, desative a automação de visualização de página do cliente Web usando a configuração `disableAutoPageView` e use o comando `recordPageView` para definir o ID da página desejada. Para obter mais informações, consulte [Configurações específicas da aplicação](https://github.com/aws-observability/aws-rum-web/blob/main/docs/configuration.md) no GitHub.

**Exemplo de script incorporado:**

```
cwr('recordPageView', { pageId: 'entityPageId' });
```

**Exemplo de módulo JavaScript:**

```
awsRum.recordPageView({ pageId: 'entityPageId' });
```

## Habilitar o rastreamento do X-Ray de ponta a ponta
<a name="CloudWatch-RUM-xraytraceheader"></a>

Quando você cria o monitor de aplicações, selecionar **Rastrear meu serviço com o AWS X-Ray** habilita o rastreamento de solicitações de `XMLHttpRequest` e `fetch` feitas durante as sessões de usuário incluídas na amostra obtida pelo monitor de aplicações. Você pode visualizar os rastreamentos dessas solicitações HTTP no painel do RUM e no mapa de rastreamento e nas páginas de detalhes de rastreamento do X-Ray.

Por padrão, esses rastreamentos do lado do cliente não estão conectados a rastreamentos do lado do servidor downstream. Para conectar rastreamentos do lado do cliente a rastreamentos do lado do servidor e habilitar o rastreamento de ponta a ponta, defina a opção `addXRayTraceIdHeader` para `true` no cliente da Web. Isso faz com que o cliente da Web do CloudWatch RUM adicione um cabeçalho de rastreamento do X-Ray às solicitações HTTP.

O bloco de código a seguir mostra um exemplo de adição de rastreamentos do lado do cliente. Algumas opções de configuração são omitidas dessa amostra para oferecer melhor leitura.

```
<script>
    (function(n,i,v,r,s,c,u,x,z){...})(
        'cwr',
        '00000000-0000-0000-0000-000000000000',
        '1.0.0',
        'us-west-2',
        'https://client.rum.us-east-1.amazonaws.com/1.0.2/cwr.js',
        {
            enableXRay: true,
            telemetries: [ 
                'errors', 
                'performance',
                [ 'http', { addXRayTraceIdHeader: true } ]
            ]
        }
    );
</script>
```

**Atenção**  
Configurar o cliente da Web do CloudWatch RUM para adicionar um cabeçalho de rastreamento do X-Ray às solicitações HTTP pode fazer com que o compartilhamento de recursos de origem cruzada (CORS) falhe ou invalide a assinatura da solicitação, se essa solicitação for assinada com Sigv4. Para obter mais informações, consulte a [ Documentação do cliente da Web do CloudWatch RUM](https://github.com/aws-observability/aws-rum-web/blob/main/docs/cdn_installation.md). É altamente recomendável que você teste sua aplicação antes de adicionar um cabeçalho de rastreamento do X-Ray do lado do cliente em um ambiente de produção.

Para obter mais informações consulte a [Documentação do cliente da Web do CloudWatch RUM](https://github.com/aws-observability/aws-rum-web/blob/main/docs/cdn_installation.md#http)

## Enviar solicitações não assinadas para o CloudWatch RUM
<a name="CloudWatch-RUM-unsigned"></a>

Por padrão, o cliente da web do RUM assina todas as solicitações enviadas ao RUM. Se você definir `signing:false` na configuração do cliente, as solicitações não serão assinadas quando forem enviadas para o CloudWatch RUM. Os dados serão ingeridos no RUM somente se houver uma política pública baseada em recursos anexada ao monitor da aplicação. Para obter mais informações, consulte [Usar políticas baseadas em recursos com o CloudWatch RUM](CloudWatch-RUM-resource-policies.md).

# Como inserir o trecho de código do monitor de aplicação do CloudWatch na aplicação
<a name="CloudWatch-RUM-get-started-insert-code-snippet"></a>

Em seguida, insira o snippet de código criado na seção anterior na aplicação.

**Atenção**  
O cliente da Web, baixado e configurado pelo snippet de código, usa cookies (ou tecnologias semelhantes) para ajudar a coletar dados do usuário final. Antes de inserir o snippet do código, consulte [Filtrar por atributos de metadados no consoleProteção de dados e privacidade de dados com o CloudWatch RUM](CloudWatch-RUM-privacy.md).

Se você não tiver o snippet de código gerado anteriormente, poderá encontrá-lo seguindo as instruções no [Como encontro um snippet de código que já gerei?](CloudWatch-RUM-find-code-snippet.md).

**Para inserir o snippet de código RUM do CloudWatch em sua aplicação**

1. Insira o snippet de código que você copiou ou baixou na seção anterior dentro do elemento `<head>` da aplicação. Insira-o antes do elemento `<body>` ou de qualquer outra etiqueta `<script>`.

   O seguinte exemplo mostra um de um snippet de código gerado:

   ```
   <script>
   (function (n, i, v, r, s, c, x, z) {
       x = window.AwsRumClient = {q: [], n: n, i: i, v: v, r: r, c: c};
       window[n] = function (c, p) {
           x.q.push({c: c, p: p});
       };
       z = document.createElement('script');
       z.async = true;
       z.src = s;
       document.head.insertBefore(z, document.getElementsByTagName('script')[0]);
   })('cwr',
       '194a1c89-87d8-41a3-9d1b-5c5cd3dafbd0',
       '1.0.0',
       'us-east-2',
       'https://client.rum.us-east-1.amazonaws.com/1.0.2/cwr.js',
       {
           sessionSampleRate: 1,
           identityPoolId: "us-east-2:c90ef0ac-e3b8-4d1a-b313-7e73cfd21443",
           endpoint: "https://dataplane.rum.us-east-2.amazonaws.com",
           telemetries: ["performance", "errors", "http"],
           allowCookies: true,
           enableXRay: false
       });
   </script>
   ```

1. Se a aplicação for uma aplicação Web de várias páginas, você deverá repetir a etapa 1 para cada página HTML que deseja incluir na coleta de dados.

# Teste da configuração do monitor de aplicação do CloudWatch ao gerar eventos de usuário
<a name="CloudWatch-RUM-get-started-generate-data"></a>

Depois que você inserir o snippet de código e que a aplicação atualizada estiver em execução, você poderá testá-la gerando eventos do usuário manualmente. Para esse teste, recomendamos que faça o seguinte. Esse teste gera cobranças padrão do CloudWatch RUM.
+ Navegar entre páginas em sua aplicação Web.
+ Criar várias sessões de usuário, usando navegadores e dispositivos diferentes.
+ Fazer solicitações.
+ Causar erros do JavaScript.

Depois de gerar alguns eventos, visualize-os no painel do CloudWatch RUM. Para obter mais informações, consulte [Visualizar o painel do CloudWatch RUM](CloudWatch-RUM-view-data.md).

Os dados das sessões do usuário podem levar até 15 minutos para serem exibidos no painel.

Se você não vir dados 15 minutos após gerar eventos na aplicação, consulte [Solucionar problemas do CloudWatch RUM](CloudWatch-RUM-troubleshooting.md).