

# Soluções de observabilidade do CloudWatch
<a name="Monitoring-Solutions"></a>

As soluções de observabilidade do CloudWatch disponibilizam um catálogo de configurações prontamente disponíveis para auxiliar na implementação rápida do monitoramento para diversos serviços da AWS e workloads conhecidas, como Java Virtual Machine (JVM), Apache Kafka, Apache Tomcat e NGINX. Essas soluções fornecem orientações específicas sobre as tarefas essenciais de monitoramento, incluindo a instalação e a configuração do agente do CloudWatch, a implantação de painéis personalizados e definidos previamente, e a configuração de alarmes de métricas. As soluções foram projetadas para auxiliar as equipes de desenvolvimento e de operações a usarem, de forma mais eficaz, as ferramentas de monitoramento e de observabilidade da AWS.

As soluções incluem orientações sobre em quais momentos usar recursos específicos de observabilidade, como as métricas do monitoramento detalhado para a infraestrutura, o Container Insights para o monitoramento de contêiner, e o Application Signals para o monitoramento de aplicações. Ao fornecer exemplos funcionais e configurações práticas, essas soluções têm como objetivo simplificar o processo inicial de configuração, permitindo o estabelecimento de um monitoramento funcional com mais rapidez e a configuração com base em requisitos específicos.

Para começar a usar as soluções de observabilidade, acesse a [página de soluções de observabilidade](https://console.aws.amazon.com/cloudwatch/home?#settings:/observability-solutions) no console do CloudWatch.

Para obter as soluções de código aberto que funcionam com o Amazon Managed Grafana, consulte as [soluções do Amazon Managed Grafana](https://docs.aws.amazon.com/grafana/latest/userguide/AMG_solutions.html).

As soluções que requerem o agente do CloudWatch estão detalhadas abaixo:

**Topics**
+ [Solução do CloudWatch: workload da JVM no Amazon EC2](Solution-JVM-On-EC2.md)
+ [Solução do CloudWatch: workload do NGINX no Amazon EC2](Solution-NGINX-On-EC2.md)
+ [Solução do CloudWatch: workload da GPU da NVIDIA no Amazon EC2](Solution-NVIDIA-GPU-On-EC2.md)
+ [Solução do CloudWatch: workload do Kafka no Amazon EC2](Solution-Kafka-On-EC2.md)
+ [Solução do CloudWatch: workload do Tomcat no Amazon EC2](Solution-Tomcat-On-EC2.md)
+ [Solução do CloudWatch: integridade do Amazon EC2](Solution-EC2-Health.md)

**Como funcionam os painéis das soluções?**  
Os painéis das soluções do CloudWatch usam variáveis baseadas em pesquisa (menus suspensos) que permitem a exploração e a visualização dinâmicas de diferentes aspectos das workloads.  
Ao combinar a flexibilidade das variáveis baseadas em pesquisa com os [widgets de métricas](create-and-work-with-widgets.md) configurados previamente, o painel disponibiliza insights aprofundados sobre as workloads, possibilitando o monitoramento proativo, a solução de problemas e a otimização. Essa abordagem dinâmica garante que você possa adaptar o painel às suas necessidades específicas de monitoramento com rapidez, sem a necessidade de personalizações ou configurações extensas.

**As soluções fornecem suporte à observabilidade entre regiões?**  
Os painéis das soluções do CloudWatch exibem métricas da região em que foram criados. Contudo, os painéis das soluções não realizam a exibição de métricas de diversas regiões. Caso em seu caso de uso seja necessário visualizar dados de diversas regiões em um único painel, você deverá personalizar o JSON do painel para adicionar as regiões que deseja visualizar. Para isso, use o atributo `region` do formato de métrica para consultar as métricas de diferentes regiões. Para obter mais informações sobre como modificar o JSON do painel, consulte [Metric Widget: Format for Each Metric in the Array](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/CloudWatch-Dashboard-Body-Structure.html#CloudWatch-Dashboard-Properties-Metrics-Array-Format).

**Os painéis das soluções são compatíveis com o [console do CloudWatch entre contas e entre regiões](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Cross-Account-Cross-Region.html)?**  
Ao usar a observabilidade entre contas do CloudWatch, os painéis das soluções na conta central de monitoramento exibem métricas das contas de origem localizadas na mesma região. Para diferenciar métricas para workloads semelhantes entre contas, forneça valores exclusivos de dimensão de agrupamento nas configurações do agente. Por exemplo, atribua valores de `ClusterName` distintos para operadores do Kafka em contas diferentes para a workload do Kafka, possibilitando a seleção precisa do cluster e a visualização de métricas no painel.

**Os painéis das soluções são compatíveis com a [observabilidade do CloudWatch entre contas](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Unified-Cross-Account.html)?**  
Se você tiver habilitado o recurso entre contas usando o console do CloudWatch entre contas e entre regiões, não poderá usar o painel das soluções criado na conta de monitoramento para visualizar métricas de contas de origem. Em vez disso, será necessário criar painéis nas respectivas contas de origem. No entanto, é possível criar o painel na conta de origem e visualizá-lo usando a conta central de monitoramento ao alterar a configuração do ID da conta no console.

**Quais são as limitações de um painel das soluções?**  
Os painéis das soluções usam expressões de pesquisa para filtrar e para analisar métricas das workloads. Isso possibilita visualizações dinâmicas com base nas seleções de opções do menu suspenso. Essas expressões de pesquisa podem retornar mais de 500 séries temporais, mas cada widget do painel tem um limite de 500 séries temporais para exibição. Se uma pesquisa de métrica no painel da solução resultar em um número superior a 500 séries temporais em todas as instâncias do Amazon EC2, o gráfico que exibe os principais colaboradores pode mostrar resultados imprecisos. Para obter mais informações sobre as expressões de pesquisa, consulte [Sintaxe de expressão de pesquisa do CloudWatch](search-expression-syntax.md).  
O CloudWatch exibe as informações sobre as métricas nos painéis quando você clica no ícone `i` no widget do painel. No entanto, neste momento, isso não funciona para widgets de painéis que usam expressões de pesquisa. Como os painéis das soluções dependem de expressões de pesquisa, você não poderá visualizar a descrição da métrica no painel.

**É possível personalizar a configuração do agente ou o painel fornecido por uma solução?**  
Você tem a possibilidade de personalizar tanto a configuração do agente quanto o painel. No entanto, lembre-se de que, se você personalizar a configuração do agente, será necessário atualizar o painel correspondente, caso contrário, ele exibirá widgets de métrica vazios. Além disso, é importante estar ciente de que, caso o CloudWatch libere uma nova versão de uma solução, poderá ser necessário refazer as personalizações ao aplicar a versão mais recente da solução. 

**Como as soluções têm controle de versão?**  
Cada solução fornece as instruções e os recursos mais atualizados. Sempre recomendamos usar a versão mais recente disponível. Embora as soluções em si não tenham controle de versão, os artefatos associados (como modelos do CloudFormation para painéis e instalações de agentes) têm.  
Você pode identificar a versão de um artefato implantado anteriormente verificando o campo de descrição do modelo do CloudFormation ou o nome do arquivo do modelo que você baixou. Para determinar se você está usando a versão mais recente, compare a versão implantada com a atualmente referenciada na documentação da solução.

# Solução do CloudWatch: workload da JVM no Amazon EC2
<a name="Solution-JVM-On-EC2"></a>

Esta solução auxilia na configuração da coleta de métricas prontas para uso com agentes do CloudWatch para aplicações da JVM que estão sendo executadas em instâncias do EC2. Além disso, a solução ajuda na configuração de um painel do CloudWatch configurado previamente. Para obter informações gerais sobre todas as soluções de observabilidade do CloudWatch, consulte [Soluções de observabilidade do CloudWatch](Monitoring-Solutions.md).

**Topics**
+ [Requisitos](#Solution-JVM-On-EC2-Requirements)
+ [Benefícios](#Solution-JVM-On-EC2-Benefits)
+ [Custos](#Solution-JVM-On-EC2-Costs)
+ [Configuração do agente do CloudWatch para esta solução](#Solution-JVM-CloudWatch-Agent)
+ [Implantação do agente para a sua solução](#Solution-JVM-Agent-Deploy)
+ [Criação de um painel para a solução da JVM](#Solution-JVM-Dashboard)

## Requisitos
<a name="Solution-JVM-On-EC2-Requirements"></a>

Esta solução é aplicável nas seguintes condições:
+ Versões compatíveis: versões LTS do Java 8, 11, 17 e 21
+ Computação: Amazon EC2
+ Fornecimento de suporte para até 500 instâncias do EC2 em todas as workloads da JVM em uma Região da AWS específica
+ Versão mais recente do agente do CloudWatch
+ SSM Agent instalado na instância do EC2
**nota**  
O AWS Systems Manager (SSM Agent) está instalado previamente em algumas [imagens de máquinas da Amazon (AMIs)](https://docs.aws.amazon.com/systems-manager/latest/userguide/ami-preinstalled-agent.html) fornecidas pela AWS e por entidades externas confiáveis. Se o agente não estiver instalado, você poderá instalá-lo manualmente usando o procedimento adequado para o seu tipo de sistema operacional.  
[Instalar e desinstalar o SSM Agent manualmente em instâncias do EC2 para Linux](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-linux.html)
[Instalar e desinstalar o SSM Agent manualmente em instâncias do EC2 para macOS](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-macos.html)
[Instalar e desinstalar o SSM Agent manualmente em instâncias do EC2 para Windows Server](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-windows.html)

## Benefícios
<a name="Solution-JVM-On-EC2-Benefits"></a>

A solução disponibiliza monitoramento da JVM, fornecendo insights valiosos para os seguintes casos de uso:
+ Monitoramento do uso de memória do heap e de memória não relacionada ao heap da JVM.
+ Análise de threads e de carregamento de classes para identificar problemas de simultaneidade.
+ Rastreamento da coleta de resíduos para identificar possíveis vazamentos de memória.
+ Alternância entre diferentes aplicações da JVM configuradas pela solução na mesma conta.

A seguir, apresentamos as principais vantagens da solução:
+ Automatiza a coleta de métricas para a JVM usando a configuração do agente do CloudWatch, o que elimina a necessidade de instrumentação manual.
+ Fornece um painel do CloudWatch consolidado e configurado previamente para as métricas da JVM. O painel gerenciará automaticamente as métricas das novas instâncias do EC2 para a JVM que foram configuradas usando a solução, mesmo que essas métricas não estejam disponíveis no momento de criação do painel. Além disso, o painel permite agrupar as métricas em aplicações lógicas para facilitar o foco e o gerenciamento.

A imagem apresentada a seguir é um exemplo do painel para esta solução.

![\[Exemplo de painel para a JVM\]](http://docs.aws.amazon.com/pt_br/AmazonCloudWatch/latest/monitoring/images/JvmDashboard.png)


## Custos
<a name="Solution-JVM-On-EC2-Costs"></a>

Esta solução cria e usa recursos em sua conta. A cobrança será realizada com base no uso padrão, que inclui o seguinte:
+ Todas as métricas coletadas pelo agente do CloudWatch são cobradas como métricas personalizadas. O número de métricas usadas por esta solução depende do número de hosts do EC2.
  + Cada host da JVM configurado para a solução publica um total de 18 métricas, além de uma métrica (`disk_used_percent`) cuja contagem de métricas depende do número de caminhos fornecidos para o host.
+ Um painel personalizado.
+ As operações da API solicitadas pelo agente do CloudWatch para publicar as métricas. Com a configuração padrão para esta solução, o agente do CloudWatch chama a operação **PutMetricData** uma vez por minuto para cada host do EC2. Isso significa que a API **PutMetricData** será chamada `30*24*60=43,200` em um mês com 30 dias para cada host do EC2.

Para obter mais informações sobre os preços do CloudWatch, consulte [Preço do Amazon CloudWatch](https://aws.amazon.com/cloudwatch/pricing/).

A calculadora de preços pode ajudar a estimar os custos mensais aproximados para o uso desta solução. 

**Como usar a calculadora de preços para estimar os custos mensais da solução**

1. Abra a [calculadora de preços do Amazon CloudWatch](https://calculator.aws/#/createCalculator/CloudWatch).

1. Em **Escolher uma região**, selecione a região em que você gostaria de implantar a solução.

1. Na seção **Métricas**, em **Número de métricas**, insira **(18 \$1 average number of disk paths per EC2 host) \$1 number of EC2 instances configured for this solution**.

1. Na seção **APIs**, em **Número de solicitações de API**, insira **43200 \$1 number of EC2 instances configured for this solution**.

   Por padrão, o agente do CloudWatch executa uma operação **PutMetricData** a cada minuto para cada host do EC2.

1. Na seção **Painéis e alarmes**, em **Número de painéis**, insira **1**.

1. É possível visualizar os custos mensais estimados na parte inferior da calculadora de preços.

## Configuração do agente do CloudWatch para esta solução
<a name="Solution-JVM-CloudWatch-Agent"></a>

O agente do CloudWatch é um software que opera de maneira contínua e autônoma em seus servidores e em ambientes com contêineres. Ele coleta métricas, logs e rastreamentos da infraestrutura e das aplicações e os envia para o CloudWatch e para o X-Ray.

Para obter mais informações sobre o agente do CloudWatch, consulte [Coleta de métricas, logs e rastreamentos usando o agente do CloudWatch](Install-CloudWatch-Agent.md).

A configuração do agente nesta solução coleta as métricas fundamentais para a solução. O agente do CloudWatch pode ser configurado para coletar mais métricas da JVM do que as que são exibidas por padrão no painel. Para obter uma lista de todas as métricas da JVM que você pode coletar, consulte [Coletar métricas da JVM](CloudWatch-Agent-JMX-metrics.md#CloudWatch-Agent-JVM-metrics). Para obter informações gerais sobre a configuração do agente do CloudWatch, consulte [Métricas coletadas pelo atendente do CloudWatch](metrics-collected-by-CloudWatch-agent.md).

**Exposição de portas do JMX para a aplicação da JVM**

O agente do CloudWatch depende do JMX para coletar as métricas relacionadas ao processo da JVM. Para que isso aconteça, é necessário expor a porta do JMX da aplicação da JVM. As instruções para expor a porta do JMX dependem do tipo de workload que você está usando para a aplicação da JVM. Consulte a documentação específica para a aplicação para encontrar essas instruções.

De maneira geral, para habilitar uma porta do JMX para monitoramento e gerenciamento, você precisa configurar as propriedades do sistema apresentadas a seguir para a aplicação da JVM. Certifique-se de especificar um número de porta que não esteja em uso. O exemplo apresentado a seguir configura o JMX sem autenticação. Se suas políticas ou seus requisitos de segurança exigirem que você habilite o JMX com autenticação por senha ou SSL para a obtenção de acesso remoto, consulte a [documentação do JMX](https://docs.oracle.com/en/java/javase/17/management/monitoring-and-management-using-jmx-technology.html) para definir a propriedade necessária.

```
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=port-number
-Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.ssl=false
```

Analise os scripts de inicialização e os arquivos de configuração da aplicação para encontrar o local mais adequado para adicionar esses argumentos. Quando você executar um arquivo `.jar` usando a linha de comando, o comando pode ser semelhante ao apresentado a seguir, em que *pet-search.jar* é o nome do arquivo JAR da aplicação.

```
$ java -jar -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false pet-search.jar
```

**Configuração do agente para esta solução**

As métricas coletadas pelo agente são definidas na configuração do agente. A solução fornece configurações do agente para a coleta das métricas recomendadas com dimensões adequadas para o painel da solução. 

As etapas para a implantação da solução são descritas posteriormente em [Implantação do agente para a sua solução](#Solution-JVM-Agent-Deploy). As informações apresentadas a seguir são destinadas a ajudar você a compreender como personalizar a configuração do agente para o seu ambiente.

Você deve personalizar algumas partes da seguinte configuração do agente para o seu ambiente:
+ O número da porta do JMX corresponde ao número da porta que você configurou na seção anterior desta documentação. Esse número está na linha `endpoint` na configuração.
+ `ProcessGroupName`: forneça nomes significativos para a dimensão `ProcessGroupName`. Esses nomes devem representar o agrupamento de clusters, de aplicações ou de serviços para as instâncias do EC2 que executam aplicações ou processos semelhantes. Isso auxilia no agrupamento de métricas de instâncias que pertencem ao mesmo grupo de processos da JVM, proporcionando uma visão unificada da performance do cluster, da aplicação e do serviço no painel da solução.

Por exemplo, caso você tenha duas aplicações em Java em execução na mesma conta, sendo uma para a aplicação `order-processing` e a outra para a aplicação `inventory-management`, é necessário configurar as dimensões `ProcessGroupName` de maneira adequada na configuração do agente de cada instância.
+ Para as instâncias da aplicação `order-processing`, defina `ProcessGroupName=order-processing`.
+ Para as instâncias da aplicação `inventory-management`, defina `ProcessGroupName=inventory-management`.

Ao seguir essas diretrizes, o painel da solução agrupará automaticamente as métricas com base na dimensão `ProcessGroupName`. O painel incluirá opções do menu suspenso para a seleção e para a visualização de métricas de um grupo de processos específico, permitindo o monitoramento da performance de grupos de processos individuais separadamente.

### Configuração do agente para hosts da JVM
<a name="Solution-JVM-Agent-Config"></a>

Use a configuração do agente do CloudWatch apresentada a seguir nas instâncias do EC2 em que as aplicações em Java estão implantadas. A configuração será armazenada como um parâmetro no Parameter Store do SSM, conforme detalhado posteriormente em [Etapa 2: armazenar o arquivo de configuração recomendado do agente do CloudWatch no Systems Manager Parameter Store](#Solution-JVM-Agent-Step2).

Substitua *ProcessGroupName* pelo nome do grupo de processos. Substitua *port-number* pelo número da porta do JMX da aplicação em Java. Se o JMX tiver sido habilitado com autenticação por senha ou SSL para acesso remoto, consulte [Coletar métricas do Java Management Extensions (JMX)](CloudWatch-Agent-JMX-metrics.md) para obter informações sobre como configurar o TLS ou a autorização na configuração do agente, conforme necessário.

As métricas do EC2 mostradas nesta configuração (configuração apresentada de forma externa ao bloco do JMX) funcionam somente para instâncias do Linux e do macOS. Caso esteja usando instâncias do Windows, é possível optar por omitir essas métricas na configuração. Para obter mais informações sobre as métricas coletadas em instâncias do Windows, consulte [Métricas coletadas pelo atendente do CloudWatch em instâncias do Windows Server](metrics-collected-by-CloudWatch-agent.md#windows-metrics-enabled-by-CloudWatch-agent).

```
{
  "metrics": {
    "namespace": "CWAgent",
    "append_dimensions": {
      "InstanceId": "${aws:InstanceId}"
    },
    "metrics_collected": {
      "jmx": [
        {
          "endpoint": "localhost:port-number",
          "jvm": {
            "measurement": [
              "jvm.classes.loaded",
              "jvm.gc.collections.count",
              "jvm.gc.collections.elapsed",
              "jvm.memory.heap.committed",
              "jvm.memory.heap.max",
              "jvm.memory.heap.used",
              "jvm.memory.nonheap.committed",
              "jvm.memory.nonheap.max",
              "jvm.memory.nonheap.used",
              "jvm.threads.count"
            ]
          },
          "append_dimensions": {
            "ProcessGroupName": "ProcessGroupName"
          }
        }
      ],
      "disk": {
        "measurement": [
          "used_percent"
        ]
      },
      "mem": {
        "measurement": [
          "used_percent"
        ]
      },
      "swap": {
        "measurement": [
          "used_percent"
        ]
      },
      "netstat": {
        "measurement": [
          "tcp_established",
          "tcp_time_wait"
        ]
      }
    }
  }
}
```

## Implantação do agente para a sua solução
<a name="Solution-JVM-Agent-Deploy"></a>

Existem várias abordagens para instalar o agente do CloudWatch, dependendo do caso de uso. Recomendamos o uso do Systems Manager para esta solução. Ele fornece uma experiência no console e simplifica o gerenciamento de uma frota de servidores gerenciados em uma única conta da AWS. As instruções apresentadas nesta seção usam o Systems Manager e são destinadas para situações em que o agente do CloudWatch não está em execução com as configurações existentes. É possível verificar se o agente do CloudWatch está em execução ao seguir as etapas apresentadas em [Verificar se o atendente do CloudWatch está em execução](troubleshooting-CloudWatch-Agent.md#CloudWatch-Agent-troubleshooting-verify-running).

Se você já estiver executando o agente do CloudWatch nos hosts do EC2 nos quais a workload está implantada e gerenciando as configurações do agente, pode pular as instruções apresentadas nesta seção e usar o mecanismo de implantação existente para atualizar a configuração. Certifique-se de combinar a configuração do agente da JVM com a configuração do agente existente e, em seguida, implante a configuração combinada. Se você estiver usando o Systems Manager para armazenar e gerenciar a configuração do agente do CloudWatch, poderá combinar a configuração com o valor do parâmetro existente. Para obter mais informações, consulte [Managing CloudWatch agent configuration files](https://docs.aws.amazon.com/prescriptive-guidance/latest/implementing-logging-monitoring-cloudwatch/create-store-cloudwatch-configurations.html).

**nota**  
Ao usar o Systems Manager para implantar as configurações do agente do CloudWatch apresentadas a seguir, qualquer configuração existente do agente do CloudWatch nas suas instâncias do EC2 será substituída ou sobrescrita. É possível modificar essa configuração para atender às necessidades do ambiente ou do caso de uso específico. As métricas definidas nesta solução representam o requisito mínimo para o painel recomendado. 

O processo de implantação inclui as seguintes etapas:
+ Etapa 1: garantir que as instâncias do EC2 de destino têm as permissões do IAM necessárias.
+ Etapa 2: armazenar o arquivo de configuração recomendado do agente no Systems Manager Parameter Store.
+ Etapa 3: instalar o agente do CloudWatch em uma ou mais instâncias do EC2 usando uma pilha do CloudFormation.
+ Etapa 4: verificar se a configuração do agente foi realizada corretamente.

### Etapa 1: garantir que as instâncias do EC2 de destino têm as permissões do IAM necessárias
<a name="Solution-JVM-Agent-Step1"></a>

Você deve conceder permissão para o Systems Manager instalar e configurar o agente do CloudWatch. Além disso, é necessário conceder permissão para que o agente do CloudWatch publique a telemetria da instância do EC2 para o CloudWatch. Certifique-se de que o perfil do IAM anexado à instância tenha as políticas do IAM **CloudWatchAgentServerPolicy** e **AmazonSSMManagedInstanceCore** associadas.
+ Após criar o perfil, associe-o às suas instâncias do EC2. Siga as etapas apresentadas em [Launch an instance with an IAM role](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#launch-instance-with-role) para anexar um perfil durante a inicialização de uma nova instância do EC2. Para anexar um perfil a uma instância do EC2 existente, siga as etapas apresentadas em [Attach an IAM role to an instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#attach-iam-role).

### Etapa 2: armazenar o arquivo de configuração recomendado do agente do CloudWatch no Systems Manager Parameter Store
<a name="Solution-JVM-Agent-Step2"></a>

O Parameter Store simplifica a instalação do agente do CloudWatch em uma instância do EC2 ao armazenar e gerenciar os parâmetros de configuração de forma segura, eliminando a necessidade de valores com codificação rígida. Isso garante um processo de implantação mais seguro e flexível ao possibilitar o gerenciamento centralizado e as atualizações simplificadas para as configurações em diversas instâncias.

Use as etapas apresentadas a seguir para armazenar o arquivo de configuração recomendado do agente do CloudWatch como um parâmetro no Parameter Store.

**Como criar o arquivo de configuração do agente do CloudWatch como um parâmetro**

1. Abra o console AWS Systems Manager em [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. No painel de navegação, escolha **Gerenciamento de aplicações** e, em seguida, **Parameter Store**.

1. Siga as etapas apresentadas a seguir para criar um novo parâmetro para a configuração.

   1. Escolha **Criar Parâmetro**.

   1. Na caixa **Nome**, insira um nome que será usado para referenciar o arquivo de configuração do agente do CloudWatch nas etapas posteriores. Por exemplo, **AmazonCloudWatch-JVM-Configuration**.

   1. (Opcional) Na caixa **Descrição**, digite uma descrição para o parâmetro.

   1. Em **Camadas de parâmetros**, escolha **Padrão**. 

   1. Para **Tipo**, escolha **String**.

   1. Em **Tipo de dados**, selecione **texto**.

   1. Na caixa **Valor**, cole o bloco em JSON correspondente que foi listado em [Configuração do agente para hosts da JVM](#Solution-JVM-Agent-Config). Certifique-se de personalizar o valor da dimensão de agrupamento e o número da porta, conforme descrito.

   1. Escolha **Criar Parâmetro**. 

### Etapa 3: instalar o agente do CloudWatch e aplicar a configuração usando um modelo do CloudFormation
<a name="Solution-JVM-Agent-Step3"></a>

É possível usar o AWS CloudFormation para instalar o agente e configurá-lo para usar a configuração do agente do CloudWatch criada nas etapas anteriores.

**Como instalar e configurar o agente do CloudWatch para esta solução**

1. Abra o assistente para **criar pilha de forma rápida** do CloudFormation usando este link: [https://console.aws.amazon.com/cloudformation/home?\$1/stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-1.0.0.json](https://console.aws.amazon.com/cloudformation/home?#/stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-1.0.0.json). 

1. Verifique se a região selecionada no console corresponde à região em que a workload da JVM está em execução.

1. Em **Nome da pilha**, insira um nome para identificar esta pilha, como **CWAgentInstallationStack**.

1. Na seção **Parâmetros**, especifique o seguinte:

   1. Para **CloudWatchAgentConfigSSM**, insira o nome do parâmetro do Systems Manager para a configuração do agente que você criou anteriormente, como **AmazonCloudWatch-JVM-Configuration**.

   1. Para selecionar as instâncias de destino, você tem duas opções.

      1. Para **InstanceIds**, especifique uma lista delimitada por vírgulas de IDs de instâncias nas quais você deseja instalar o agente do CloudWatch com esta configuração. É possível listar uma única instância ou várias instâncias.

      1. Se você estiver realizando implantações em grande escala, é possível especificar a **TagKey** e o **TagValue** correspondente para direcionar todas as instâncias do EC2 associadas a essa etiqueta e a esse valor. Se você especificar uma **TagKey**, é necessário especificar um **TagValue** correspondente. (Para um grupo do Auto Scaling, especifique **aws:autoscaling:groupName** para a **TagKey** e defina o nome do grupo do Auto Scaling para a **TagValue** para realizar a implantação em todas as instâncias do grupo do Auto Scaling.)

         Caso você especifique tanto os parâmetros **InstanceIds** quanto **TagKeys**, **InstanceIds** terá precedência, e as etiquetas serão desconsideradas.

1. Analise as configurações e, em seguida, escolha **Criar pilha**. 

Se você desejar editar o arquivo de modelo previamente para personalizá-lo, selecione a opção **Fazer upload de um arquivo de modelo** no **Assistente de criação de pilha** para fazer o upload do modelo editado. Para obter mais informações, consulte [Criar uma pilha no console do CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html). É possível usar o seguinte link para fazer download do modelo: [https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-1.0.0.json](https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-1.0.0.json). 

**nota**  
Após a conclusão desta etapa, este parâmetro do Systems Manager será associado aos agentes do CloudWatch em execução nas instâncias de destino. Isto significa que:  
Se o parâmetro do Systems Manager for excluído, o agente será interrompido.
Se o parâmetro do Systems Manager for editado, as alterações de configuração serão aplicadas automaticamente ao agente na frequência programada, que, por padrão, é de 30 dias.
Se você desejar aplicar imediatamente as alterações a este parâmetro do Systems Manager, você deverá executar esta etapa novamente. Para obter mais informações sobre as associações, consulte [Working with associations in Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/state-manager-associations.html).

### Etapa 4: verificar se a configuração do agente foi realizada corretamente
<a name="Solution-JVM-Agent-Step4"></a>

É possível verificar se o agente do CloudWatch está instalado ao seguir as etapas apresentadas em [Verificar se o atendente do CloudWatch está em execução](troubleshooting-CloudWatch-Agent.md#CloudWatch-Agent-troubleshooting-verify-running). Se o agente do CloudWatch não estiver instalado e em execução, certifique-se de que todas as configurações foram realizadas corretamente.
+ Certifique-se de ter anexado um perfil com as permissões adequadas para a instância do EC2, conforme descrito na [Etapa 1: garantir que as instâncias do EC2 de destino têm as permissões do IAM necessárias](#Solution-JVM-Agent-Step1).
+ Certifique-se de ter configurado corretamente o JSON para o parâmetro do Systems Manager. Siga as etapas em [Solução de problemas de instalação do atendente do CloudWatch com o CloudFormation](Install-CloudWatch-Agent-New-Instances-CloudFormation.md#CloudWatch-Agent-CloudFormation-troubleshooting).

Se todas as configurações estiverem corretas, as métricas da JVM serão publicadas no CloudWatch e estarão disponíveis para visualização. É possível verificar no console do CloudWatch para assegurar que as métricas estão sendo publicadas corretamente.

**Como verificar se as métricas da JVM estão sendo publicadas no CloudWatch**

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

1. Escolha **Métricas** e, depois, **Todas as métricas**.

1. Certifique-se de ter selecionado a região na qual a solução foi implantada, escolha **Namespaces personalizados** e, em seguida, selecione **CWAgent**.

1. Pesquise pelas métricas mencionadas em [Configuração do agente para hosts da JVM](#Solution-JVM-Agent-Config), como `jvm.memory.heap.used`. Caso encontre resultados para essas métricas, isso significa que elas estão sendo publicadas no CloudWatch.

## Criação de um painel para a solução da JVM
<a name="Solution-JVM-Dashboard"></a>

O painel fornecido por esta solução apresenta métricas para a Java Virtual Machine (JVM) subjacente para o servidor. O painel fornece uma visão geral da JVM ao agregar e apresentar métricas de todas as instâncias, disponibilizando um resumo de alto nível sobre a integridade geral e o estado operacional. Além disso, o painel mostra um detalhamento dos principais colaboradores (que corresponde aos dez principais por widget de métrica) para cada métrica. Isso ajuda a identificar rapidamente discrepâncias ou instâncias que contribuem significativamente para as métricas observadas.

O painel da solução não exibe métricas do EC2. Para visualizar as métricas relacionadas ao EC2, é necessário usar o painel automático do EC2 para acessar as métricas fornecidas diretamente pelo EC2 e usar o painel do console do EC2 para consultar as métricas do EC2 que são coletadas pelo agente do CloudWatch. Para obter mais informações sobre os painéis automáticos para serviços da AWS, consulte [Visualização de um painel do CloudWatch para um único serviço da AWS](CloudWatch_Automatic_Dashboards_Focus_Service.md).

Para criar o painel, é possível usar as seguintes opções:
+ Usar o console do CloudWatch para criar o painel.
+ Usar o console do AWS CloudFormation para implantar o painel.
+ Fazer o download do código de infraestrutura como código do AWS CloudFormation e integrá-lo como parte da automação de integração contínua (CI).

Ao usar o console do CloudWatch para criar um painel, é possível visualizá-lo previamente antes de criá-lo e incorrer em custos.

**nota**  
 O painel criado com o CloudFormation nesta solução exibe métricas da região em que a solução está implantada. Certifique-se de que a pilha do CloudFormation seja criada na mesma região em que as métricas da JVM são publicadas.   
Se as métricas do agente do CloudWatch estiverem sendo publicadas em um namespace diferente de `CWAgent` (por exemplo, caso você tenha fornecido um namespace personalizado), será necessário alterar a configuração do CloudFormation para substituir `CWAgent` pelo namespace personalizado que você está usando.

**Como criar o painel usando o console do CloudWatch**
**nota**  
Atualmente, os painéis de soluções exibem métricas relacionadas à coleta de resíduos somente para o G1 Garbage Collector, que é o coletor padrão para as versões mais recentes do Java. Caso esteja usando um algoritmo de coleta de resíduos diferente, os widgets relacionados à coleta de resíduos estarão vazios. No entanto, você pode personalizar esses widgets alterando o modelo do painel do CloudFormation e aplicando o tipo de coleta de resíduos apropriado à dimensão do nome das métricas relacionadas à coleta de resíduos. Por exemplo, se você estiver usando a coleta de resíduos paralela, altere **name=\$1"G1 Young Generation\$1"** para **name=\$1"Parallel GC\$1"** da métrica de contagem de coleta de resíduos `jvm.gc.collections.count`.

1. Abra o console do CloudWatch e acesse **Criar painel** usando este link: [https://console.aws.amazon.com/cloudwatch/home?\$1dashboards?dashboardTemplate=JvmOnEc2&referrer=os-catalog](https://console.aws.amazon.com/cloudwatch/home?#dashboards?dashboardTemplate=JvmOnEc2&referrer=os-catalog). 

1. Verifique se a região selecionada no console corresponde à região em que a workload da JVM está em execução.

1. Insira o nome do painel e, em seguida, escolha **Criar painel**.

   Para diferenciar este painel de painéis semelhantes em outras regiões com facilidade, recomendamos incluir o nome da região no nome do painel, por exemplo, **JVMDashboard-us-east-1**.

1. Visualize previamente o painel e escolha **Salvar** para criá-lo.

**Como criar o painel usando o CloudFormation**

1. Abra o assistente para **criar pilha de forma rápida** do CloudFormation usando este link: [https://console.aws.amazon.com/cloudformation/home?\$1/stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/JVM\$1EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json](https://console.aws.amazon.com/cloudformation/home?#/stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/JVM_EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json). 

1. Verifique se a região selecionada no console corresponde à região em que a workload da JVM está em execução.

1. Em **Nome da pilha**, insira um nome para identificar esta pilha, como **JVMDashboardStack**.

1. Na seção **Parâmetros**, especifique o nome do painel no parâmetro **DashboardName**.

   Para diferenciar este painel de painéis semelhantes em outras regiões com facilidade, recomendamos incluir o nome da região no nome do painel, por exemplo, **JVMDashboard-us-east-1**.

1. Confirme as funcionalidades de acesso relacionadas às transformações na seção **Capacidades e transformações**. Lembre-se de que o CloudFormation não adiciona recursos do IAM.

1. Analise as configurações e, em seguida, escolha **Criar pilha**. 

1. Quando o status da pilha mostrar **CREATE\$1COMPLETE**, selecione a guia **Recursos** na pilha criada e, em seguida, escolha o link exibido em **ID físico** para acessar o painel. Como alternativa, é possível acessar o painel diretamente no console do CloudWatch ao selecionar **Painéis** no painel de navegação do console à esquerda e localizar o nome do painel na seção **Painéis personalizados**.

Se você desejar editar o arquivo de modelo para personalizá-lo para atender a uma necessidade específica, é possível usar a opção **Fazer upload de um arquivo de modelo** no **Assistente de criação de pilha** para fazer o upload do modelo editado. Para obter mais informações, consulte [Criar uma pilha no console do CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html). É possível usar este link para fazer download do modelo: [https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/JVM\$1EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json](https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/JVM_EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json). 

**nota**  
Atualmente, os painéis de soluções exibem métricas relacionadas à coleta de resíduos somente para o G1 Garbage Collector, que é o coletor padrão para as versões mais recentes do Java. Caso esteja usando um algoritmo de coleta de resíduos diferente, os widgets relacionados à coleta de resíduos estarão vazios. No entanto, você pode personalizar esses widgets alterando o modelo do painel do CloudFormation e aplicando o tipo de coleta de resíduos apropriado à dimensão do nome das métricas relacionadas à coleta de resíduos. Por exemplo, se você estiver usando a coleta de resíduos paralela, altere **name=\$1"G1 Young Generation\$1"** para **name=\$1"Parallel GC\$1"** da métrica de contagem de coleta de resíduos `jvm.gc.collections.count`. 

### Como começar a usar o painel da JVM
<a name="Solution-JVM-Dashboard-GetStarted"></a>

A seguir, apresentamos algumas tarefas que você pode realizar para explorar o novo painel da JVM. Essas tarefas permitem a validação do funcionamento correto do painel e fornecem uma experiência prática ao usá-lo para monitorar um grupo de processos da JVM. À medida que realiza as tarefas, você se familiarizará com a navegação no painel e com a interpretação das métricas visualizadas.

**Seleção de um grupo de processos**

Use a lista suspensa **Nome do grupo de processos da JVM** para selecionar o grupo de processos que você deseja monitorar. O painel será atualizado automaticamente para exibir as métricas para o grupo de processos selecionado. Caso você tenha várias aplicações ou ambientes em Java, cada um pode ser representado como um grupo de processos distinto. Selecionar o grupo de processos apropriado garante que você estará visualizando as métricas específicas para a aplicação ou para o ambiente que deseja analisar.

**Análise do uso de memória**

Na seção de visão geral do painel, localize os widgets de **Porcentagem de uso de memória do heap** e de **Porcentagem de uso de memória não relacionada ao heap**. Os widgets mostram a porcentagem de memória do heap e de memória não relacionada ao heap usadas em todas as JVMs no grupo de processos selecionado. Uma porcentagem elevada pode indicar pressão da memória, o que pode resultar em problemas de performance ou exceções `OutOfMemoryError`. Além disso, é possível realizar uma busca detalhada do uso de memória do heap por host na seção **Uso de memória por host** para identificar os hosts com maior utilização.

**Análise de threads e de classes carregadas**

Na seção **Threads e classes carregadas pelo host**, localize os widgets **Contagem dos dez principais threads** e **Dez principais classes carregadas**. Procure por JVMs que tenham um número anormalmente elevado de threads ou de classes em comparação com as demais. Um número excessivo de threads pode ser indicativo de vazamentos de threads ou de simultaneidade excessiva, enquanto um grande número de classes carregadas pode indicar possíveis vazamentos no carregador de classes ou problemas com a geração ineficiente de classes dinâmicas.

**Identificação de problemas de coleta de resíduos**

Na seção de **Coleta de resíduos**, localize os widgets **Dez principais invocações de coleta de resíduos por minuto** e **Dez principais duração da coleta de resíduos**, separados pelos diferentes tipos de coletor de lixo: **Recente**, **Simultânea** e **Mista**. Procure por JVMs que tenham um número anormalmente elevado de coleções ou de durações longas de coleta em comparação com as demais. Isso pode indicar problemas de configuração ou vazamentos de memória.

# Solução do CloudWatch: workload do NGINX no Amazon EC2
<a name="Solution-NGINX-On-EC2"></a>

Esta solução auxilia na configuração da coleta de métricas prontas para uso com agentes do CloudWatch para aplicações do NGINX que estão sendo executadas em instâncias do EC2. Para obter informações gerais sobre todas as soluções de observabilidade do CloudWatch, consulte [Soluções de observabilidade do CloudWatch](Monitoring-Solutions.md).

**Topics**
+ [Requisitos](#Solution-NGINX-On-EC2-Requirements)
+ [Benefícios](#Solution-NGINX-On-EC2-Benefits)
+ [Custos](#Solution-NGINX-On-EC2-Costs)
+ [Configuração do agente do CloudWatch para esta solução](#Solution-NGINX-CloudWatch-Agent)
+ [Implantação do agente para a sua solução](#Solution-NGINX-Agent-Deploy)
+ [Criação do painel da solução do NGINX](#Solution-NGINX-Dashboard)

## Requisitos
<a name="Solution-NGINX-On-EC2-Requirements"></a>

Esta solução é aplicável nas seguintes condições:
+ Versões compatíveis: NGINX na versão 1.24
+ Computação: Amazon EC2
+ Fornecimento de suporte para até 500 instâncias do EC2 em todas as workloads do NGINX em uma Região da AWS específica
+ Versão mais recente do agente do CloudWatch
+ Exportador do Prometheus: nginxinc/nginx-prometheus-exporter (licença do Apache 2.0)
+ SSM Agent instalado na instância do EC2
**nota**  
O AWS Systems Manager (SSM Agent) está instalado previamente em algumas [imagens de máquinas da Amazon (AMIs)](https://docs.aws.amazon.com/systems-manager/latest/userguide/ami-preinstalled-agent.html) fornecidas pela AWS e por entidades externas confiáveis. Se o agente não estiver instalado, você poderá instalá-lo manualmente usando o procedimento adequado para o seu tipo de sistema operacional.  
 [Instalar e desinstalar o SSM Agent manualmente em instâncias do EC2 para Linux](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-linux.html) 
 [Instalar e desinstalar o SSM Agent manualmente em instâncias do EC2 para macOS](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-macos.html) 
 [Instalar e desinstalar o SSM Agent manualmente em instâncias do EC2 para Windows Server](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-windows.html) 

## Benefícios
<a name="Solution-NGINX-On-EC2-Benefits"></a>

A solução disponibiliza monitoramento do NGINX, fornecendo insights valiosos para os seguintes casos de uso:
+ Análise das métricas de conexão para identificar possíveis gargalos, problemas de conexão ou uso inesperado.
+ Análise do volume de solicitações HTTP para compreender a carga geral de tráfego no NGINX.

A seguir, apresentamos as principais vantagens da solução:
+ Automatiza a coleta de métricas para o NGINX usando a configuração do agente do CloudWatch, o que elimina a necessidade de instrumentação manual.
+ Fornece um painel do CloudWatch consolidado e configurado previamente para as métricas do NGINX. O painel gerenciará automaticamente as métricas das novas instâncias do EC2 para o NGINX que foram configuradas usando a solução, mesmo que essas métricas não estejam disponíveis no momento de criação do painel.

A imagem apresentada a seguir é um exemplo do painel para esta solução.

![\[Exemplo de painel para a solução do NGINX.\]](http://docs.aws.amazon.com/pt_br/AmazonCloudWatch/latest/monitoring/images/NGINXDashboard.png)


## Custos
<a name="Solution-NGINX-On-EC2-Costs"></a>

Esta solução cria e usa recursos em sua conta. A cobrança será realizada com base no uso padrão, que inclui o seguinte:
+ Todas as métricas coletadas pelo agente do CloudWatch para esta solução são publicadas no CloudWatch Logs usando o Embedded Metric Format (EMF). Esses logs do CloudWatch são cobrados com base no volume e no período de retenção. Portanto, você não receberá cobranças por nenhuma chamada de API **PutMetricData** para esta solução. As métricas extraídas e ingeridas usando os seus logs são cobradas como métricas personalizadas. O número de métricas usadas por esta solução depende do número de hosts do EC2.
  + Cada host do EC2 para o NGINX configurado para a solução publica um total de oito métricas.
+ Um painel personalizado.

Para obter mais informações sobre os preços do CloudWatch, consulte [Preço do Amazon CloudWatch](https://aws.amazon.com/cloudwatch/pricing/).

A calculadora de preços pode ajudar a estimar os custos mensais aproximados para o uso desta solução.

**Como usar a calculadora de preços para estimar os custos mensais da solução**

1. Abra a [calculadora de preços do Amazon CloudWatch](https://calculator.aws/#/createCalculator/CloudWatch).

1. Em **Escolher uma região**, selecione a Região da AWS em que você gostaria de implantar a solução.

1. Na seção **Métricas**, em **Número de métricas**, insira **8 \$1 number of EC2 instances configured for this solution**.

1. Na seção **Logs**, para **Logs padrão: dados consumidos**, insira o volume estimado de log diário gerado pelo agente do CloudWatch em todos os hosts do EC2. Por exemplo, cinco instâncias do EC2 produzem menos de mil bytes por dia. Após a configuração, você pode verificar o uso de bytes utilizando a métrica ` IncomingBytes`, disponibilizada pelo CloudWatch Logs. Certifique-se de selecionar o grupo de logs apropriado.

1. Na seção **Logs**, para **Armazenamento ou arquivamento de logs (logs padrão ou fornecidos)**, selecione **Yes to Store Logs: Assuming 1 month retention**. Modifique esse valor caso decida fazer alterações personalizadas no período de retenção.

1. Na seção **Painéis e alarmes**, em **Número de painéis**, insira **1**.

1. É possível visualizar os custos mensais estimados na parte inferior da calculadora de preços.

## Configuração do agente do CloudWatch para esta solução
<a name="Solution-NGINX-CloudWatch-Agent"></a>

O agente do CloudWatch é um software que opera de maneira contínua e autônoma em seus servidores e em ambientes com contêineres. Ele coleta métricas, logs e rastreamentos da infraestrutura e das aplicações e os envia para o CloudWatch e para o X-Ray.

Para obter mais informações sobre o agente do CloudWatch, consulte [Coleta de métricas, logs e rastreamentos usando o agente do CloudWatch](Install-CloudWatch-Agent.md).

Nesta solução, a configuração do agente coleta um conjunto de métricas para ajudar você a começar a monitorar e realizar a observabilidade da workload do NGINX. O agente do CloudWatch pode ser configurado para coletar mais métricas do NGINX do que as que são exibidas por padrão no painel. Para obter uma lista de todas as métricas do NGINX que você pode coletar, consulte [Metrics for NGINX OSS](https://github.com/nginxinc/nginx-prometheus-exporter?tab=readme-ov-file#exported-metrics).

Antes de configurar o agente CloudWatch, é necessário configurar o NGINX para expor as métricas. Depois disso, você deve instalar e configurar o exportador de métricas do Prometheus de entidades externas.

### Exposição de métricas do NGINX
<a name="Solution-NGINX-Expose-Metrics"></a>

**nota**  
 Os comandos apresentados a seguir são para uso com o Linux. Consulte a [página do NGINX para Windows](https://nginx.org/en/docs/windows.html) para obter os comandos equivalentes no Windows Server. 

Primeiro, é necessário habilitar o módulo `stub_status`. Adicione um novo bloco de localidade no arquivo de configuração do NGINX. Adicione as seguintes linhas no bloco `server` do `nginx.conf` para habilitar o módulo `stub_status` do NGINX:

```
location /nginx_status { 
          stub_status on;
          allow 127.0.0.1; # Allow only localhost to access
          deny all; # Deny all other IPs
        }
```

Antes de recarregar o NGINX, é importante validar a configuração do NGINX:

```
sudo nginx -t
```

Este comando de validação ajuda a prevenir erros inesperados, que podem causar a indisponibilidade do seu site. O exemplo apresentado a seguir ilustra uma resposta com êxito:

```
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
```

Depois de validar a configuração atualizada com êxito, recarregue o NGINX (nenhuma saída é esperada):

```
sudo systemctl reload nginx
```

Este comando instrui o processo do NGINX a recarregar a configuração. Os recarregamentos são mais simples em comparação com uma reinicialização completa. Um recarregamento inicia o novo processo de trabalho com uma nova configuração, encerrando suavemente os processos de trabalho antigos.

Teste o endpoint de status do NGINX:

```
curl http://127.0.0.1/nginx_status
```

O exemplo apresentado a seguir ilustra uma resposta com êxito:

```
Active connections: 1
server accepts handled requests
6 6 6
Reading: 0 Writing: 1 Waiting: 0
```

O exemplo apresentado a seguir ilustra uma resposta com falha (analise as etapas anteriores antes de prosseguir):

```
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
      <head>
          <title>The page is not found</title>
          ...
```

### Configuração do exportador de métricas do Prometheus
<a name="Solution-NGINX-Configure-Prometheus"></a>

Faça o download da versão mais recente do exportador do Prometheus para NGINX no [repositório oficial do GitHub](https://github.com/nginxinc/nginx-prometheus-exporter/releases). Certifique-se de baixar o binário correspondente à sua plataforma.

O exemplo apresentado a seguir ilustra os comandos para AMD64:

```
cd /tmp
wget https://github.com/nginxinc/nginx-prometheus-exporter/releases/download/v1.3.0/nginx-prometheus-exporter_1.3.0_linux_amd64.tar.gz
tar -xzvf nginx-prometheus-exporter_1.3.0_linux_amd64.tar.gz
sudo cp nginx-prometheus-exporter /usr/local/bin/
rm /tmp/nginx-prometheus-exporter*
```

Execute o exportador do Prometheus e configure-o para acessar a página de status do simulador do NGINX:

```
nohup /usr/local/bin/nginx-prometheus-exporter -nginx.scrape-uri http://127.0.0.1/nginx_status &>/dev/null &
```

O exemplo apresentado a seguir ilustra uma resposta (ID do trabalho em segundo plano e PID):

```
[1] 74699
```

### Teste do endpoint do Prometheus para NGINX
<a name="Solution-NGINX-Test-Prometheus"></a>

Valide se o exportador do Prometheus para NGINX começou a expor as métricas relevantes:

```
curl http://localhost:port-number/metrics
```

O exemplo apresentado a seguir ilustra uma resposta com êxito:

```
# HELP go_gc_duration_seconds A summary of the pause duration of garbage collection cycles.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 0
go_gc_duration_seconds{quantile="0.25"} 0
...
# HELP nginx_connections_accepted Accepted client connections
# TYPE nginx_connections_accepted counter
nginx_connections_accepted 14
# HELP nginx_connections_active Active client connections
# TYPE nginx_connections_active gauge
nginx_connections_active 1
...
# TYPE promhttp_metric_handler_requests_total counter
promhttp_metric_handler_requests_total{code="200"} 1
promhttp_metric_handler_requests_total{code="500"} 0
promhttp_metric_handler_requests_total{code="503"} 0
```

### Configuração do agente para esta solução
<a name="Solution-NGINX-Agent-Config-Intro"></a>

As métricas coletadas pelo agente são definidas na configuração do agente. A solução fornece configurações do agente para a coleta das métricas recomendadas com dimensões adequadas para o painel da solução.

As etapas para a implantação da solução são descritas posteriormente em [Implantação do agente para a sua solução](#Solution-NGINX-Agent-Deploy). As informações apresentadas a seguir são destinadas a ajudar você a compreender como personalizar a configuração do agente para o seu ambiente.

Você deve personalizar algumas partes das configurações do agente e do Prometheus para o seu ambiente, como o número da porta usada pelo exportador do Prometheus.

A porta usada pelo exportador do Prometheus pode ser verificada usando o seguinte comando:

```
sudo netstat -antp | grep nginx-prom
```

O exemplo apresentado a seguir ilustra uma resposta (consulte o valor da porta 9113):

```
tcp6 0 0 :::9113 :::* LISTEN 76398/nginx-prometh
```

### Configuração do agente para hosts do NGINX
<a name="Solution-NGINX-Agent-Config"></a>

O atendente do CloudWatch com monitoramento Prometheus precisa de duas configurações para extrair as métricas do Prometheus. Cada configuração será armazenada como um parâmetro distinto no Parameter Store do SSM, conforme detalhado posteriormente em [Etapa 2: armazenar o arquivo de configuração recomendado do agente do CloudWatch no Systems Manager Parameter Store](#Solution-NGINX-Agent-Step2).

A primeira configuração refere-se ao exportador do Prometheus, conforme detalhado na documentação [scrape\$1config](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config) do Prometheus. A segunda configuração é destinada ao agente do CloudWatch.

 **Configuração do Prometheus** 

Substitua *port-number* pela porta do seu servidor.

```
global:
  scrape_interval: 30s
  scrape_timeout: 10s
  
scrape_configs:
- job_name: 'nginx'
  metrics_path: /metrics
  static_configs:
    - targets: ['localhost:port-number']
  ec2_sd_configs:
    - port: port-number
  relabel_configs:
    - source_labels: ['__meta_ec2_instance_id']
      target_label: InstanceId
  metric_relabel_configs:
    - source_labels: ['__name__']
      regex: 'nginx_up|nginx_http_requests_total|nginx_connections_.*'
      action: keep
```

 **Configuração do agente do CloudWatch** 

Conforme apresentado na configuração anterior do agente do CloudWatch, essas métricas são publicadas por meio do CloudWatch Logs usando o formato [embedded metric format (EMF)](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Embedded_Metric_Format_Specification.html). Esses logs são configurados para usar o grupo de logs ` nginx`. É possível personalizar o *log\$1group\$1name* com um nome diferente para representar os logs do CloudWatch.

 Se você estiver usando o Windows Server, defina o *prometheus\$1config\$1path* na configuração apresentada a seguir para `C:\\ProgramData\\Amazon\\AmazonCloudWatchAgent\\prometheus.yaml`. 

```
{
"agent": {
  "metrics_collection_interval": 60
},
"logs": {
  "metrics_collected": {
      "prometheus": {
          "log_group_name": "nginx",
          "prometheus_config_path": "/opt/aws/amazon-cloudwatch-agent/etc/prometheus.yaml",
          "emf_processor": {
              "metric_declaration_dedup": true,
              "metric_namespace": "CWAgent",
              "metric_declaration":[
                  {
                      "source_labels":["InstanceId"],
                      "metric_selectors":["nginx_up", "nginx_http_requests_total", "nginx_connections*"],
                      "dimensions": [["InstanceId"]]
                  }
              ]
          }
      }
  }
}
}
```

## Implantação do agente para a sua solução
<a name="Solution-NGINX-Agent-Deploy"></a>

Existem várias abordagens para instalar o agente do CloudWatch, dependendo do caso de uso. Recomendamos o uso do Systems Manager para esta solução. Ele fornece uma experiência no console e simplifica o gerenciamento de uma frota de servidores gerenciados em uma única conta da AWS. As instruções apresentadas nesta seção usam o Systems Manager e são destinadas para situações em que o agente do CloudWatch não está em execução com as configurações existentes. É possível verificar se o agente do CloudWatch está em execução ao seguir as etapas apresentadas em [Verificar se o atendente do CloudWatch está em execução](troubleshooting-CloudWatch-Agent.md#CloudWatch-Agent-troubleshooting-verify-running).

Se você já estiver executando o agente do CloudWatch nos hosts do EC2 nos quais a workload está implantada e gerenciando as configurações do agente, pode pular as instruções apresentadas nesta seção e usar o mecanismo de implantação existente para atualizar a configuração. Certifique-se de combinar as novas configurações do agente do CloudWatch e do Prometheus com as configurações existentes e, em seguida, implante as configurações combinadas. Se você estiver usando o Systems Manager para armazenar e gerenciar a configuração do agente do CloudWatch, poderá combinar a configuração com o valor do parâmetro existente. Para obter mais informações, consulte [Managing CloudWatch agent configuration files](https://docs.aws.amazon.com/prescriptive-guidance/latest/implementing-logging-monitoring-cloudwatch/create-store-cloudwatch-configurations.html).

**nota**  
Ao usar o Systems Manager para implantar as configurações do agente do CloudWatch apresentadas a seguir, qualquer configuração existente do agente do CloudWatch nas suas instâncias do EC2 será substituída ou sobrescrita. É possível modificar essa configuração para atender às necessidades do ambiente ou do caso de uso específico. As métricas definidas na configuração representam o requisito mínimo necessário para o painel fornecido pela solução.

O processo de implantação inclui as seguintes etapas:
+ Etapa 1: garantir que as instâncias do EC2 de destino têm as permissões do IAM necessárias.
+ Etapa 2: armazenar o arquivo de configuração recomendado do agente no Systems Manager Parameter Store.
+ Etapa 3: instalar o agente do CloudWatch em uma ou mais instâncias do EC2 usando uma pilha do CloudFormation.
+ Etapa 4: verificar se a configuração do agente foi realizada corretamente.

### Etapa 1: garantir que as instâncias do EC2 de destino têm as permissões do IAM necessárias
<a name="Solution-NGINX-Agent-Step1"></a>

Você deve conceder permissão para o Systems Manager instalar e configurar o agente do CloudWatch. É necessário conceder permissão para que o agente do CloudWatch publique a telemetria da instância do EC2 para o CloudWatch. Além disso, é necessário conceder ao agente do CloudWatch acesso com permissão de leitura no EC2. O acesso com permissão de leitura no EC2 é necessário para que o InstanceId do EC2 seja adicionado como uma dimensão de métrica. Esse requisito adicional é determinado pelo `prometheus.yaml`, conforme detalhado acima, pois ele usa ` __meta_ec2_instance_id` por meio da Descoberta de Serviços do EC2.

Certifique-se de que o perfil do IAM anexado à instância tenha as políticas do IAM ** CloudWatchAgentServerPolicy**, **AmazonSSMManagedInstanceCore** e ** AmazonEC2ReadOnlyAccess** associadas.
+ Após criar o perfil, associe-o às suas instâncias do EC2. Para anexar um perfil a uma instância do EC2, siga as etapas apresentadas em [Attach an IAM role to an instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/attach-iam-role.html).

### Etapa 2: armazenar o arquivo de configuração recomendado do agente do CloudWatch no Systems Manager Parameter Store
<a name="Solution-NGINX-Agent-Step2"></a>

O Parameter Store simplifica a instalação do agente do CloudWatch em uma instância do EC2 ao armazenar e gerenciar os parâmetros de configuração de forma segura, eliminando a necessidade de valores com codificação rígida. Isso garante um processo de implantação mais seguro e flexível ao possibilitar o gerenciamento centralizado e as atualizações simplificadas para as configurações em diversas instâncias.

Use as etapas apresentadas a seguir para armazenar o arquivo de configuração recomendado do agente do CloudWatch como um parâmetro no Parameter Store.

**Como criar o arquivo de configuração do agente do CloudWatch como um parâmetro**

1. Abra o console AWS Systems Manager em [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Verifique se a região selecionada no console corresponde à região em que o NGINX está em execução.

1. No painel de navegação, escolha **Gerenciamento de aplicações** e, em seguida, **Parameter Store**.

1. Siga as etapas apresentadas a seguir para criar um novo parâmetro para a configuração.

   1. Escolha **Criar Parâmetro**.

   1. Na caixa **Nome**, insira um nome que será usado para referenciar o arquivo de configuração do agente do CloudWatch nas etapas posteriores. Por exemplo, ** AmazonCloudWatch-NGINX-CloudWatchAgent-Configuration**.

   1. (Opcional) Na caixa **Descrição**, digite uma descrição para o parâmetro.

   1. Em **Camadas de parâmetros**, escolha **Padrão**.

   1. Para **Tipo**, escolha **String**.

   1. Em **Tipo de dados**, selecione **texto**.

   1. Na caixa **Valor**, cole o bloco em JSON correspondente que foi listado em [Configuração do agente para hosts do NGINX](#Solution-NGINX-Agent-Config). Certifique-se de personalizar conforme necessário. Por exemplo, o `log_group_name` relevante. 

   1. Escolha **Criar Parâmetro**.

**Como criar o arquivo de configuração do Prometheus como um parâmetro**

1. Abra o console AWS Systems Manager em [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. No painel de navegação, escolha **Gerenciamento de aplicações** e, em seguida, **Parameter Store**.

1. Siga as etapas apresentadas a seguir para criar um novo parâmetro para a configuração.

   1. Escolha **Criar Parâmetro**.

   1. Na caixa **Nome**, insira um nome que será usado para referenciar o arquivo de configuração nas etapas posteriores. Por exemplo, ** AmazonCloudWatch-NGINX-Prometheus-Configuration**.

   1. (Opcional) Na caixa **Descrição**, digite uma descrição para o parâmetro.

   1. Em **Camadas de parâmetros**, escolha **Padrão**.

   1. Para **Tipo**, escolha **String**.

   1. Em **Tipo de dados**, selecione **texto**.

   1. Na caixa **Valor**, cole o bloco em YAML correspondente que foi listado em [Configuração do agente para hosts do NGINX](#Solution-NGINX-Agent-Config). Certifique-se de personalizar conforme necessário. Por exemplo, o número da porta relevante de acordo com `targets`.

   1. Escolha **Criar Parâmetro**.

### Etapa 3: instalar o agente do CloudWatch e aplicar a configuração usando um modelo do CloudFormation
<a name="Solution-NGINX-Agent-Step3"></a>

É possível usar o AWS CloudFormation para instalar o agente e configurá-lo para usar a configuração do agente do CloudWatch criada nas etapas anteriores.

**Como instalar e configurar o agente do CloudWatch para esta solução**

1. Abra o assistente para **criar pilha de forma rápida** do CloudFormation usando este link: [https://console.aws.amazon.com/cloudformation/home?\$1/stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-with-prometheus-config-1.0.0.json](https://console.aws.amazon.com/cloudformation/home?#/stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-with-prometheus-config-1.0.0.json).

1. Verifique se a região selecionada no console corresponde à região em que a workload do NGINX está em execução.

1. Em **Nome da pilha**, insira um nome para identificar esta pilha, como ** CWAgentInstallationStack**.

1. Na seção **Parâmetros**, especifique o seguinte:

   1. Para **CloudWatchAgentConfigSSM**, insira o nome do parâmetro do AWS Systems Manager para a configuração do agente que você criou anteriormente, como ** AmazonCloudWatch-NGINX-CloudWatchAgent-Configuration**.

   1. Para **PrometheusConfigSSM**, insira o nome do parâmetro do AWS Systems Manager para a configuração do agente que você criou anteriormente, como ** AmazonCloudWatch-NGINX-Prometheus-Configuration**.

   1. Para selecionar as instâncias de destino, você tem duas opções.

      1. Para **InstanceIds**, especifique uma lista delimitada por vírgulas de IDs de instâncias nas quais você deseja instalar o agente do CloudWatch com esta configuração. É possível listar uma única instância ou várias instâncias.

      1. Se você estiver realizando implantações em grande escala, é possível especificar a **TagKey** e o **TagValue** correspondente para direcionar todas as instâncias do EC2 associadas a essa etiqueta e a esse valor. Se você especificar uma **TagKey**, é necessário especificar um **TagValue** correspondente. (Para um grupo do Auto Scaling, especifique **aws:autoscaling:groupName** para a **TagKey** e defina o nome do grupo do Auto Scaling para a **TagValue** para realizar a implantação em todas as instâncias do grupo do Auto Scaling.)

1. Analise as configurações e, em seguida, escolha **Criar pilha**.

Se você desejar editar o arquivo de modelo previamente para personalizá-lo, selecione a opção **Fazer upload de um arquivo de modelo** no **Assistente de criação de pilha** para fazer o upload do modelo editado. Para obter mais informações, consulte [Criar uma pilha no console do CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html). É possível usar o seguinte link para fazer download do modelo: [https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-with-prometheus-config-1.0.0.json]( https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-with-prometheus-config-1.0.0.json). 

**nota**  
Após a conclusão desta etapa, este parâmetro do Systems Manager será associado aos agentes do CloudWatch em execução nas instâncias de destino. Isto significa que:  
Se o parâmetro do Systems Manager for excluído, o agente será interrompido.
Se o parâmetro do Systems Manager for editado, as alterações de configuração serão aplicadas automaticamente ao agente na frequência programada, que, por padrão, é de 30 dias.
Se você desejar aplicar imediatamente as alterações a este parâmetro do Systems Manager, você deverá executar esta etapa novamente. Para obter mais informações sobre as associações, consulte [Working with associations in Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/state-manager-associations.html).

### Etapa 4: verificar se a configuração do agente foi realizada corretamente
<a name="Solution-NGINX-Agent-Step4"></a>

É possível verificar se o agente do CloudWatch está instalado ao seguir as etapas apresentadas em [Verificar se o atendente do CloudWatch está em execução](troubleshooting-CloudWatch-Agent.md#CloudWatch-Agent-troubleshooting-verify-running). Se o agente do CloudWatch não estiver instalado e em execução, certifique-se de que todas as configurações foram realizadas corretamente.
+ Certifique-se de ter anexado um perfil com as permissões adequadas para a instância do EC2, conforme descrito na [Etapa 1: garantir que as instâncias do EC2 de destino têm as permissões do IAM necessárias](#Solution-NGINX-Agent-Step1).
+ Certifique-se de ter configurado corretamente o JSON para o parâmetro do Systems Manager. Siga as etapas em [Solução de problemas de instalação do atendente do CloudWatch com o CloudFormation](Install-CloudWatch-Agent-New-Instances-CloudFormation.md#CloudWatch-Agent-CloudFormation-troubleshooting).

Se todas as configurações estiverem corretas, as métricas do NGINX serão publicadas no CloudWatch e estarão disponíveis para visualização. É possível verificar no console do CloudWatch para assegurar que as métricas estão sendo publicadas corretamente.

**Como verificar se as métricas do NGINX estão sendo publicadas no CloudWatch**

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

1. Escolha **Métricas** e, depois, **Todas as métricas**.

1. Certifique-se de ter selecionado a região na qual a solução foi implantada, escolha **Namespaces personalizados** e, em seguida, selecione **CWAgent**.

1. Pesquise por métricas como `nginx_http_requests_total`. Caso encontre resultados para essas métricas, isso significa que elas estão sendo publicadas no CloudWatch.

## Criação do painel da solução do NGINX
<a name="Solution-NGINX-Dashboard"></a>

O painel fornecido por esta solução apresenta métricas de workload do NGINX ao agregar e apresentar as métricas em todas as instâncias. O painel mostra um detalhamento dos principais colaboradores (que corresponde aos dez principais por widget de métrica) para cada métrica. Isso ajuda a identificar rapidamente discrepâncias ou instâncias que contribuem significativamente para as métricas observadas.

Para criar o painel, é possível usar as seguintes opções:
+ Usar o console do CloudWatch para criar o painel.
+ Usar o console do AWS CloudFormation para implantar o painel.
+ Fazer o download do código de infraestrutura como código do AWS CloudFormation e integrá-lo como parte da automação de integração contínua (CI).

Ao usar o console do CloudWatch para criar um painel, é possível visualizá-lo previamente antes de criá-lo e incorrer em custos.

**nota**  
O painel criado com o CloudFormation nesta solução exibe métricas da região em que a solução está implantada. Certifique-se de que a pilha do CloudFormation seja criada na mesma região em que as métricas do NGINX são publicadas.  
Se você especificou um namespace personalizado diferente de `CWAgent` na configuração do agente do CloudWatch, será necessário alterar o modelo do CloudFormation para o painel, substituindo `CWAgent` pelo namespace personalizado que você está usando.

**Como criar o painel usando o console do CloudWatch**

1. Abra o console do CloudWatch e acesse **Criar painel** usando este link: [https://console.aws.amazon.com/cloudwatch/home?\$1dashboards?dashboardTemplate=NginxOnEc2&referrer=os-catalog](https://console.aws.amazon.com/cloudwatch/home?#dashboards?dashboardTemplate=NginxOnEc2&referrer=os-catalog). 

1. Verifique se a região selecionada no console corresponde à região em que a workload do NGINX está em execução.

1. Insira o nome do painel e, em seguida, escolha **Criar painel**.

   Para diferenciar este painel de painéis semelhantes em outras regiões com facilidade, recomendamos incluir o nome da região no nome do painel, por exemplo, **NGINXDashboard-us-east-1**.

1. Visualize previamente o painel e escolha **Salvar** para criá-lo.

**Como criar o painel usando o CloudFormation**

1. Abra o assistente para **criar pilha de forma rápida** do CloudFormation usando este link: [https://console.aws.amazon.com/cloudformation/home?\$1/stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/NGINX\$1EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json](https://console.aws.amazon.com/cloudformation/home?#/stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/NGINX_EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json).

1. Verifique se a região selecionada no console corresponde à região em que a workload do NGINX está em execução.

1. Em **Nome da pilha**, insira um nome para identificar esta pilha, como ** NGINXDashboardStack**.

1. Na seção **Parâmetros**, especifique o nome do painel no parâmetro **DashboardName**.

1. Para diferenciar este painel de painéis semelhantes em outras regiões com facilidade, recomendamos incluir o nome da região no nome do painel, por exemplo, ** NGINXDashboard-us-east-1**.

1. Confirme as funcionalidades de acesso relacionadas às transformações na seção **Capacidades e transformações**. Lembre-se de que o CloudFormation não adiciona recursos do IAM.

1. Analise as configurações e, em seguida, escolha **Criar pilha**.

1. Quando o status da pilha mostrar **CREATE\$1COMPLETE**, selecione a guia **Recursos** na pilha criada e, em seguida, escolha o link exibido em **ID físico** para acessar o painel. Como alternativa, é possível acessar o painel diretamente no console do CloudWatch ao selecionar **Painéis** no painel de navegação do console à esquerda e localizar o nome do painel na seção **Painéis personalizados**.

Se você desejar editar o arquivo de modelo previamente para personalizá-lo, selecione a opção **Fazer upload de um arquivo de modelo** no **Assistente de criação de pilha** para fazer o upload do modelo editado. Para obter mais informações, consulte [Criar uma pilha no console do CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html). É possível usar o seguinte link para fazer download do modelo: [https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/NGINX\$1EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json]( https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/NGINX_EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json). 

### Como começar a usar o painel do NGINX
<a name="Solution-NGINX-Dashboard-GetStarted"></a>

A seguir, apresentamos algumas tarefas que você pode realizar para explorar o novo painel do NGINX. Essas tarefas permitem a validação do funcionamento correto do painel e fornecem uma experiência prática ao usá-lo para monitorar uma workload do NGINX. À medida que realiza as tarefas, você se familiarizará com a navegação no painel e com a interpretação das métricas visualizadas.

 **Análise das métricas de conexão** 

Na seção **Conexões**, é possível encontrar diversas métricas essenciais que fornecem insights sobre o gerenciamento de conexões do cliente no servidor NGINX. O monitoramento dessas métricas de conexão pode ajudar a identificar possíveis gargalos, problemas de conexão ou padrões de conexão inesperados.
+ Conexões do cliente aceitas
+ Conexões do cliente ativas
+ Conexões do cliente gerenciadas
+ Solicitações de leitura de conexões
+ Conexões do cliente inativas
+ Solicitações de gravação de conexões

 **Análise do volume de solicitações HTTP** 

A métrica `request` na seção **Solicitações HTTP** mostra o número total de solicitações HTTP processadas pelo servidor NGINX. O monitoramento dessa métrica ao longo do tempo pode ajudar na compreensão da carga de tráfego geral na infraestrutura do NGINX e no planejamento da alocação de recursos e do ajuste de escala de forma adequada.

# Solução do CloudWatch: workload da GPU da NVIDIA no Amazon EC2
<a name="Solution-NVIDIA-GPU-On-EC2"></a>

Esta solução auxilia na configuração da coleta de métricas prontas para uso com agentes do CloudWatch para workloads da GPU da NVIDIA que estão sendo executadas em instâncias do EC2. Além disso, a solução ajuda na configuração de um painel do CloudWatch configurado previamente. Para obter informações gerais sobre todas as soluções de observabilidade do CloudWatch, consulte [Soluções de observabilidade do CloudWatch](Monitoring-Solutions.md). 

**Topics**
+ [Requisitos](#Solution-NVIDIA-GPU-On-EC2-Requirements)
+ [Benefícios](#Solution-NVIDIA-GPU-On-EC2-Benefits)
+ [Configuração do agente do CloudWatch para esta solução](#Solution-NVIDIA-GPU-CloudWatch-Agent)
+ [Implantação do agente para a sua solução](#Solution-NVIDIA-GPU-Agent-Deploy)
+ [Criação do painel da solução com a GPU da NVIDIA](#Solution-NVIDIA-GPU-Dashboard)

## Requisitos
<a name="Solution-NVIDIA-GPU-On-EC2-Requirements"></a>

Esta solução é aplicável nas seguintes condições:
+ Computação: Amazon EC2
+ Fornecimento de suporte para até 500 GPUs em todas as instâncias do EC2 em uma Região da AWS específica
+ Versão mais recente do agente do CloudWatch
+ SSM Agent instalado na instância do EC2
+ A instância do EC2 deve ter um driver da NVIDIA instalado. Os drivers da NVIDIA são instalados previamente em algumas imagens de máquina da Amazon (AMIs). Caso contrário, é possível instalar o driver manualmente. Para obter mais informações, consulte [Instalação de drivers NVIDIA em instâncias Linux](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-nvidia-driver.html).

**nota**  
O AWS Systems Manager (SSM Agent) está instalado previamente em algumas [imagens de máquinas da Amazon (AMIs)](https://docs.aws.amazon.com/systems-manager/latest/userguide/ami-preinstalled-agent.html) fornecidas pela AWS e por entidades externas confiáveis. Se o agente não estiver instalado, você poderá instalá-lo manualmente usando o procedimento adequado para o seu tipo de sistema operacional.  
[ Instalar e desinstalar o SSM Agent manualmente em instâncias do EC2 para Linux](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-linux.html)
[ Instalar e desinstalar o SSM Agent manualmente em instâncias do EC2 para macOS](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-macos.html)
[ Instalar e desinstalar o SSM Agent manualmente em instâncias do EC2 para Windows Server](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-windows.html)

## Benefícios
<a name="Solution-NVIDIA-GPU-On-EC2-Benefits"></a>

A solução disponibiliza monitoramento da NVIDIA, fornecendo insights valiosos para os seguintes casos de uso:
+ Análise do uso da GPU e da memória para identificar gargalos de performance ou a necessidade de obtenção de recursos adicionais.
+ Monitoramento da temperatura e do consumo de energia para garantir que as GPUs operem dentro dos limites seguros.
+ Avaliação da performance do codificador para workloads de vídeo na GPU.
+ Verificação da conectividade PCIe para garantir que atendam à geração e à largura esperadas.
+ Monitoramento das velocidades do relógio da GPU para identificar problemas de ajuste de escala ou de controle de utilização.

A seguir, apresentamos as principais vantagens da solução:
+ Automatiza a coleta de métricas para a NVIDIA usando a configuração do agente do CloudWatch, o que elimina a necessidade de instrumentação manual.
+ Fornece um painel do CloudWatch consolidado e configurado previamente para as métricas da NVIDIA. O painel gerenciará automaticamente as métricas das novas instâncias do EC2 para a NVIDIA que foram configuradas usando a solução, mesmo que essas métricas não estejam disponíveis no momento de criação do painel.

A imagem apresentada a seguir é um exemplo do painel para esta solução.

![\[Exemplo de painel para a solução de GPU da NVIDIA.\]](http://docs.aws.amazon.com/pt_br/AmazonCloudWatch/latest/monitoring/images/NVIDIADashboard.png)


### Custos
<a name="Solution-NVIDIA-GPU-On-EC2-Costs"></a>

Esta solução cria e usa recursos em sua conta. A cobrança será realizada com base no uso padrão, que inclui o seguinte:
+ Todas as métricas coletadas pelo agente do CloudWatch são cobradas como métricas personalizadas. O número de métricas usadas por esta solução depende do número de hosts do EC2.
  + Cada host do EC2 configurado para a solução publica um total de 17 métricas por GPU.
+ Um painel personalizado.
+ As operações da API solicitadas pelo agente do CloudWatch para publicar as métricas. Com a configuração padrão para esta solução, o agente do CloudWatch chama a operação **PutMetricData** uma vez por minuto para cada host do EC2. Isso significa que a API **PutMetricData** será chamada `30*24*60=43,200` em um mês com 30 dias para cada host do EC2.

Para obter mais informações sobre os preços do CloudWatch, consulte [Preço do Amazon CloudWatch](https://aws.amazon.com/cloudwatch/pricing/).

A calculadora de preços pode ajudar a estimar os custos mensais aproximados para o uso desta solução.

**Como usar a calculadora de preços para estimar os custos mensais da solução**

1. Abra a [calculadora de preços do Amazon CloudWatch](https://calculator.aws/#/createCalculator/CloudWatch).

1. Em **Escolher uma região**, selecione a região em que você gostaria de implantar a solução.

1. Na seção **Métricas**, em **Número de métricas**, insira **17 \$1 average number of GPUs per EC2 host \$1 number of EC2 instances configured for this solution**.

1. Na seção **APIs**, em **Número de solicitações de API**, insira **43200 \$1 number of EC2 instances configured for this solution**.

1. Por padrão, o agente do CloudWatch executa uma operação **PutMetricData** a cada minuto para cada host do EC2.

1. Na seção **Painéis e alarmes**, em **Número de painéis**, insira **1**.

1. É possível visualizar os custos mensais estimados na parte inferior da calculadora de preços.

## Configuração do agente do CloudWatch para esta solução
<a name="Solution-NVIDIA-GPU-CloudWatch-Agent"></a>

O agente do CloudWatch é um software que opera de maneira contínua e autônoma em seus servidores e em ambientes com contêineres. Ele coleta métricas, logs e rastreamentos da infraestrutura e das aplicações e os envia para o CloudWatch e para o X-Ray.

Para obter mais informações sobre o agente do CloudWatch, consulte [Coleta de métricas, logs e rastreamentos usando o agente do CloudWatch](Install-CloudWatch-Agent.md).

Nesta solução, a configuração do agente coleta um conjunto de métricas para ajudar você a começar a monitorar e realizar a observabilidade da GPU da NVIDIA. O agente do CloudWatch pode ser configurado para coletar mais métricas da GPU da NVIDIA do que as que são exibidas por padrão no painel. Para obter uma lista de todas as métricas da GPU da NVIDIA que você pode coletar, consulte [Colete métricas de GPU NVIDIA](CloudWatch-Agent-NVIDIA-GPU.md).

### Configuração do agente para esta solução
<a name="Solution-NVIDIA-GPU-Agent-Config"></a>

As métricas coletadas pelo agente são definidas na configuração do agente. A solução fornece configurações do agente para a coleta das métricas recomendadas com dimensões adequadas para o painel da solução.

Use a configuração do agente do CloudWatch apresentada a seguir em instâncias do EC2 equipadas com GPUs da NVIDIA. A configuração será armazenada como um parâmetro no Parameter Store do SSM, conforme detalhado posteriormente em [Etapa 2: armazenar o arquivo de configuração recomendado do agente do CloudWatch no Systems Manager Parameter Store](#Solution-NVIDIA-GPU-Agent-Step2).

```
{
    "metrics": {
        "namespace": "CWAgent",
        "append_dimensions": {
            "InstanceId": "${aws:InstanceId}"
        },
        "metrics_collected": {
            "nvidia_gpu": {
                "measurement": [
                    "utilization_gpu",
                    "temperature_gpu",
                    "power_draw",
                    "utilization_memory",
                    "fan_speed",
                    "memory_total",
                    "memory_used",
                    "memory_free",
                    "pcie_link_gen_current",
                    "pcie_link_width_current",
                    "encoder_stats_session_count",
                    "encoder_stats_average_fps",
                    "encoder_stats_average_latency",
                    "clocks_current_graphics",
                    "clocks_current_sm",
                    "clocks_current_memory",
                    "clocks_current_video"
                ],
                "metrics_collection_interval": 60
            }
        }
    },
    "force_flush_interval": 60
}
```

## Implantação do agente para a sua solução
<a name="Solution-NVIDIA-GPU-Agent-Deploy"></a>

Existem várias abordagens para instalar o agente do CloudWatch, dependendo do caso de uso. Recomendamos o uso do Systems Manager para esta solução. Ele fornece uma experiência no console e simplifica o gerenciamento de uma frota de servidores gerenciados em uma única conta da AWS. As instruções apresentadas nesta seção usam o Systems Manager e são destinadas para situações em que o agente do CloudWatch não está em execução com as configurações existentes. É possível verificar se o agente do CloudWatch está em execução ao seguir as etapas apresentadas em [Verificar se o atendente do CloudWatch está em execução](troubleshooting-CloudWatch-Agent.md#CloudWatch-Agent-troubleshooting-verify-running).

Se você já estiver executando o agente do CloudWatch nos hosts do EC2 nos quais a workload está implantada e gerenciando as configurações do agente, pode pular as instruções apresentadas nesta seção e usar o mecanismo de implantação existente para atualizar a configuração. Certifique-se de combinar a configuração do agente da GPU da NVIDIA com a configuração do agente existente e, em seguida, implante a configuração combinada. Se você estiver usando o Systems Manager para armazenar e gerenciar a configuração do agente do CloudWatch, poderá combinar a configuração com o valor do parâmetro existente. Para obter mais informações, consulte [Managing CloudWatch agent configuration files](https://docs.aws.amazon.com/prescriptive-guidance/latest/implementing-logging-monitoring-cloudwatch/create-store-cloudwatch-configurations.html).

**nota**  
Ao usar o Systems Manager para implantar as configurações do agente do CloudWatch apresentadas a seguir, qualquer configuração existente do agente do CloudWatch nas suas instâncias do EC2 será substituída ou sobrescrita. É possível modificar essa configuração para atender às necessidades do ambiente ou do caso de uso específico. As métricas definidas na configuração representam o requisito mínimo necessário para o painel fornecido pela solução.

O processo de implantação inclui as seguintes etapas:
+ Etapa 1: garantir que as instâncias do EC2 de destino têm as permissões do IAM necessárias.
+ Etapa 2: armazenar o arquivo de configuração recomendado do agente no Systems Manager Parameter Store.
+ Etapa 3: instalar o agente do CloudWatch em uma ou mais instâncias do EC2 usando uma pilha do CloudFormation.
+ Etapa 4: verificar se a configuração do agente foi realizada corretamente.

### Etapa 1: garantir que as instâncias do EC2 de destino têm as permissões do IAM necessárias
<a name="Solution-NVIDIA-GPU-Agent-Step1"></a>

Você deve conceder permissão para o Systems Manager instalar e configurar o agente do CloudWatch. Além disso, é necessário conceder permissão para que o agente do CloudWatch publique a telemetria da instância do EC2 para o CloudWatch. Certifique-se de que o perfil do IAM anexado à instância tenha as políticas do IAM **CloudWatchAgentServerPolicy** e **AmazonSSMManagedInstanceCore** associadas.
+ Após criar o perfil, associe-o às suas instâncias do EC2. Para anexar um perfil a uma instância do EC2, siga as etapas apresentadas em [Attach an IAM role to an instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/attach-iam-role.html).

### Etapa 2: armazenar o arquivo de configuração recomendado do agente do CloudWatch no Systems Manager Parameter Store
<a name="Solution-NVIDIA-GPU-Agent-Step2"></a>

O Parameter Store simplifica a instalação do agente do CloudWatch em uma instância do EC2 ao armazenar e gerenciar os parâmetros de configuração de forma segura, eliminando a necessidade de valores com codificação rígida. Isso garante um processo de implantação mais seguro e flexível ao possibilitar o gerenciamento centralizado e as atualizações simplificadas para as configurações em diversas instâncias.

Use as etapas apresentadas a seguir para armazenar o arquivo de configuração recomendado do agente do CloudWatch como um parâmetro no Parameter Store.

**Como criar o arquivo de configuração do agente do CloudWatch como um parâmetro**

1. Abra o console AWS Systems Manager em [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Verifique se a região selecionada no console corresponde à região em que a workload da GPU da NVIDIA está em execução.

1. No painel de navegação, escolha **Gerenciamento de aplicações** e, em seguida, **Parameter Store**.

1. Siga as etapas apresentadas a seguir para criar um novo parâmetro para a configuração.

   1. Escolha **Criar Parâmetro**.

   1. Na caixa **Nome**, insira um nome que será usado para referenciar o arquivo de configuração do agente do CloudWatch nas etapas posteriores. Por exemplo, **AmazonCloudWatch-NVIDIA-GPU-Configuration**.

   1. (Opcional) Na caixa **Descrição**, digite uma descrição para o parâmetro.

   1. Em **Camadas de parâmetros**, escolha **Padrão**.

   1. Para **Tipo**, escolha **String**.

   1. Em **Tipo de dados**, selecione **texto**.

   1. Na caixa **Valor**, cole o bloco em JSON correspondente que foi listado em [Configuração do agente para esta solução](#Solution-NVIDIA-GPU-Agent-Config).

   1. Escolha **Criar Parâmetro**.

### Etapa 3: instalar o agente do CloudWatch e aplicar a configuração usando um modelo do CloudFormation
<a name="Solution-NVIDIA-GPU-Agent-Step3"></a>

É possível usar o AWS CloudFormation para instalar o agente e configurá-lo para usar a configuração do agente do CloudWatch criada nas etapas anteriores.

**Como instalar e configurar o agente do CloudWatch para esta solução**

1. Abra o assistente para **criar pilha de forma rápida** do CloudFormation usando este link: [https://console.aws.amazon.com/cloudformation/home?\$1/stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-1.0.0.json](https://console.aws.amazon.com/cloudformation/home?#/stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-1.0.0.json).

1. Verifique se a região selecionada no console corresponde à região em que a workload da GPU da NVIDIA está em execução.

1. Em **Nome da pilha**, insira um nome para identificar esta pilha, como **CWAgentInstallationStack**.

1. Na seção **Parâmetros**, especifique o seguinte:

   1. Para **CloudWatchAgentConfigSSM**, insira o nome do parâmetro do Systems Manager para a configuração do agente que você criou anteriormente, como **AmazonCloudWatch-NVIDIA-GPU-Configuration**.

   1. Para selecionar as instâncias de destino, você tem duas opções.

      1. Para **InstanceIds**, especifique uma lista delimitada por vírgulas de IDs de instâncias nas quais você deseja instalar o agente do CloudWatch com esta configuração. É possível listar uma única instância ou várias instâncias.

      1. Se você estiver realizando implantações em grande escala, é possível especificar a **TagKey** e o **TagValue** correspondente para direcionar todas as instâncias do EC2 associadas a essa etiqueta e a esse valor. Se você especificar uma **TagKey**, é necessário especificar um **TagValue** correspondente. (Para um grupo do Auto Scaling, especifique **aws:autoscaling:groupName** para a **TagKey** e defina o nome do grupo do Auto Scaling para a **TagValue** para realizar a implantação em todas as instâncias do grupo do Auto Scaling.)

1. Analise as configurações e, em seguida, escolha **Criar pilha**.

Se você desejar editar o arquivo de modelo previamente para personalizá-lo, selecione a opção **Fazer upload de um arquivo de modelo** no **Assistente de criação de pilha** para fazer o upload do modelo editado. Para obter mais informações, consulte [Criar uma pilha no console do CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html).

**nota**  
Após a conclusão desta etapa, este parâmetro do Systems Manager será associado aos agentes do CloudWatch em execução nas instâncias de destino. Isto significa que:  
Se o parâmetro do Systems Manager for excluído, o agente será interrompido.
Se o parâmetro do Systems Manager for editado, as alterações de configuração serão aplicadas automaticamente ao agente na frequência programada, que, por padrão, é de 30 dias.
Se você desejar aplicar imediatamente as alterações a este parâmetro do Systems Manager, você deverá executar esta etapa novamente. Para obter mais informações sobre as associações, consulte [Working with associations in Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/state-manager-associations.html).

### Etapa 4: verificar se a configuração do agente foi realizada corretamente
<a name="Solution-NVIDIA-GPU-Agent-Step4"></a>

É possível verificar se o agente do CloudWatch está instalado ao seguir as etapas apresentadas em [Verificar se o atendente do CloudWatch está em execução](troubleshooting-CloudWatch-Agent.md#CloudWatch-Agent-troubleshooting-verify-running). Se o agente do CloudWatch não estiver instalado e em execução, certifique-se de que todas as configurações foram realizadas corretamente.
+ Certifique-se de ter anexado um perfil com as permissões adequadas para a instância do EC2, conforme descrito na [Etapa 1: garantir que as instâncias do EC2 de destino têm as permissões do IAM necessárias](#Solution-NVIDIA-GPU-Agent-Step1).
+ Certifique-se de ter configurado corretamente o JSON para o parâmetro do Systems Manager. Siga as etapas em [Solução de problemas de instalação do atendente do CloudWatch com o CloudFormation](Install-CloudWatch-Agent-New-Instances-CloudFormation.md#CloudWatch-Agent-CloudFormation-troubleshooting).

Se todas as configurações estiverem corretas, as métricas da GPU da NVIDIA serão publicadas no CloudWatch e estarão disponíveis para visualização. É possível verificar no console do CloudWatch para assegurar que as métricas estão sendo publicadas corretamente.

**Como verificar se as métricas da GPU da NVIDIA estão sendo publicadas no CloudWatch**

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

1. Escolha **Métricas** e, depois, **Todas as métricas**.

1. Certifique-se de ter selecionado a região na qual a solução foi implantada, escolha **Namespaces personalizados** e, em seguida, selecione **CWAgent**.

1. Pesquise pelas métricas mencionadas em [Configuração do agente para esta solução](#Solution-NVIDIA-GPU-Agent-Config), como `nvidia_smi_utilization_gpu`. Caso encontre resultados para essas métricas, isso significa que elas estão sendo publicadas no CloudWatch.

## Criação do painel da solução com a GPU da NVIDIA
<a name="Solution-NVIDIA-GPU-Dashboard"></a>

O painel fornecido por esta solução apresenta métricas das GPUs da NVIDIA ao agregar e apresentar as métricas em todas as instâncias. O painel mostra um detalhamento dos principais colaboradores (que corresponde aos dez principais por widget de métrica) para cada métrica. Isso ajuda a identificar rapidamente discrepâncias ou instâncias que contribuem significativamente para as métricas observadas.

Para criar o painel, é possível usar as seguintes opções:
+ Usar o console do CloudWatch para criar o painel.
+ Usar o console do AWS CloudFormation para implantar o painel.
+ Fazer o download do código de infraestrutura como código do AWS CloudFormation e integrá-lo como parte da automação de integração contínua (CI).

Ao usar o console do CloudWatch para criar um painel, é possível visualizá-lo previamente antes de criá-lo e incorrer em custos.

**nota**  
O painel criado com o CloudFormation nesta solução exibe métricas da região em que a solução está implantada. Certifique-se de que a pilha do CloudFormation seja criada na mesma região em que as métricas da GPU da NVIDIA são publicadas.  
Se você especificou um namespace personalizado diferente de CWAgent na configuração do agente do CloudWatch, será necessário alterar o modelo do CloudFormation para o painel, substituindo CWAgent pelo namespace personalizado que você está usando.

**Como criar o painel usando o console do CloudWatch**

1. Abra o console do CloudWatch e acesse **Criar painel** usando este link: [https://console.aws.amazon.com/cloudwatch/home?\$1dashboards?dashboardTemplate=NvidiaGpuOnEc2&referrer=os-catalog](https://console.aws.amazon.com/cloudwatch/home?#dashboards?dashboardTemplate=NvidiaGpuOnEc2&referrer=os-catalog). 

1. Verifique se a região selecionada no console corresponde à região em que a workload da GPU da NVIDIA está em execução.

1. Insira o nome do painel e, em seguida, escolha **Criar painel**.

   Para diferenciar este painel de painéis semelhantes em outras regiões com facilidade, recomendamos incluir o nome da região no nome do painel, por exemplo, **NVIDIA-GPU-Dashboard-us-east-1**.

1. Visualize previamente o painel e escolha **Salvar** para criá-lo.

**Como criar o painel usando o CloudFormation**

1. Abra o assistente para **criar pilha de forma rápida** do CloudFormation usando este link: [https://console.aws.amazon.com/cloudformation/home?\$1/stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/NVIDIA\$1GPU\$1EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json](https://console.aws.amazon.com/cloudformation/home?#/stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/NVIDIA_GPU_EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json).

1. Verifique se a região selecionada no console corresponde à região em que a workload da GPU da NVIDIA está em execução.

1. Em **Nome da pilha**, insira um nome para identificar esta pilha, como **NVIDIA-GPU-DashboardStack**.

1. Na seção **Parâmetros**, especifique o nome do painel no parâmetro **DashboardName**.

1. Para diferenciar este painel de painéis semelhantes em outras regiões com facilidade, recomendamos incluir o nome da região no nome do painel, por exemplo, **NVIDIA-GPU-Dashboard-us-east-1**.

1. Confirme as funcionalidades de acesso relacionadas às transformações na seção **Capacidades e transformações**. Lembre-se de que o CloudFormation não adiciona recursos do IAM.

1. Analise as configurações e, em seguida, escolha **Criar pilha**.

1. Quando o status da pilha mostrar **CREATE\$1COMPLETE**, selecione a guia **Recursos** na pilha criada e, em seguida, escolha o link exibido em **ID físico** para acessar o painel. Como alternativa, é possível acessar o painel diretamente no console do CloudWatch ao selecionar **Painéis** no painel de navegação do console à esquerda e localizar o nome do painel na seção **Painéis personalizados**.

Se você desejar editar o arquivo de modelo para personalizá-lo para atender a uma necessidade específica, é possível usar a opção **Fazer upload de um arquivo de modelo** no **Assistente de criação de pilha** para fazer o upload do modelo editado. Para obter mais informações, consulte [Criar uma pilha no console do CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html). É possível usar este link para fazer download do modelo: [https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/NVIDIA\$1GPU\$1EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json](https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/NVIDIA_GPU_EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json).

### Como começar a usar o painel da GPU da NVIDIA
<a name="Solution-NVIDIA-GPU-Dashboard-GetStarted"></a>

A seguir, apresentamos algumas tarefas que você pode realizar para explorar o novo painel da GPU da NVIDIA. Essas tarefas permitem a validação do funcionamento correto do painel e fornecem uma experiência prática ao usá-lo para monitorar as GPUs da NVIDIA. À medida que realiza as tarefas, você se familiarizará com a navegação no painel e com a interpretação das métricas visualizadas.

**Análise da utilização da GPU**

Na seção **Utilização**, localize os widgets de **Utilização da GPU** e **Utilização da memória**. Eles mostram, respectivamente, a porcentagem de tempo em que a GPU está sendo ativamente usada para cálculos e a porcentagem de uso da memória global para leitura ou gravação. Uma utilização elevada pode indicar possíveis gargalos de performance ou a necessidade de obtenção de recursos adicionais de GPU.

**Análise do uso de memória da GPU**

Na seção **Memória**, localize os widgets **Memória total**, **Memória usada** e **Memória livre**. Esses widgets fornecem insights sobre a capacidade total de memória das GPUs, além de indicar a quantidade de memória que, no momento, está sendo consumida ou disponível. A pressão de memória pode acarretar em problemas de performance ou erros por falta de memória, portanto, é fundamental monitorar essas métricas e garantir que a workload tenha memória suficiente disponível.

**Monitoramento da temperatura e do consumo de energia**

Na seção **Temperatura/Potência**, localize os widgets de **Temperatura da CPU** e **Consumo de energia**. Essas métricas são essenciais para garantir que as GPUs estejam operando dentro dos limites seguros de temperatura e consumo de energia.

**Identificação da performance do codificador**

Na seção **Codificador**, localize os widgets de **Contagem de sessões do codificador**, **Média de FPS** e **Latência média**. Essas métricas são relevantes se você estiver executando workloads de codificação de vídeo em suas GPUs. O monitoramento dessas métricas é fundamental para garantir a operação ideal dos codificadores e identificar possíveis gargalos ou problemas de performance.

**Verificação do status do link do PCIe**

Na seção **PCIe**, localize os widgets de **Geração do link do PCIe** e de **Largura do link do PCIe**. Essas métricas fornecem informações sobre o link do PCIe que estabelece conexão entre a GPU e o sistema de host. Certifique-se de que o link esteja operando com a geração e a largura esperadas para evitar possíveis limitações de performance causadas por gargalos do PCIe.

**Análise dos relógios da GPU**

Na seção **Relógio**, localize os widgets de **Relógio de gráficos**, **Relógio de SM**, **Relógio de memória** e **Relógio de vídeo**. Essas métricas apresentam as frequências operacionais atuais dos diversos componentes da GPU. O monitoramento desses relógios pode ajudar a identificar possíveis problemas com o ajuste de escala ou com o controle de utilização do relógio da GPU, que podem impactar a performance.

# Solução do CloudWatch: workload do Kafka no Amazon EC2
<a name="Solution-Kafka-On-EC2"></a>

Esta solução auxilia na configuração da coleta de métricas prontas para uso com agentes do CloudWatch para workloads do Kafka (agentes, produtores e consumidores) que estão sendo executadas em instâncias do EC2. Além disso, a solução ajuda na configuração de um painel do CloudWatch configurado previamente. Para obter informações gerais sobre todas as soluções de observabilidade do CloudWatch, consulte [Soluções de observabilidade do CloudWatch](Monitoring-Solutions.md).

**Topics**
+ [Requisitos](#Solution-Kafka-On-EC2-Requirements)
+ [Benefícios](#Solution-Kafka-On-EC2-Benefits)
+ [Custos](#Solution-Kafka-On-EC2-Costs)
+ [Configuração do agente do CloudWatch para esta solução](#Solution-Kafka-CloudWatch-Agent)
+ [Implantação do agente para a sua solução](#Solution-Kafka-Agent-Deploy)
+ [Criação do painel da solução do Kafka](#Solution-Kafka-Dashboard)
+ [Configuração do agente para diversos perfis do Kafka na mesma instância](#Kafka-Multiple-Roles)

## Requisitos
<a name="Solution-Kafka-On-EC2-Requirements"></a>

Esta solução é aplicável nas seguintes condições:
+ Workload: Kafka v0.8.2.x e versões posteriores
+ Computação: Amazon EC2
+ Fornecimento de suporte para até 500 instâncias do EC2 em todas as workloads do Kafka em uma Região da AWS específica
+ Versão mais recente do agente do CloudWatch
+ SSM Agent instalado na instância do EC2
**nota**  
O AWS Systems Manager (SSM Agent) está instalado previamente em algumas [imagens de máquinas da Amazon (AMIs)](https://docs.aws.amazon.com/systems-manager/latest/userguide/ami-preinstalled-agent.html) fornecidas pela AWS e por entidades externas confiáveis. Se o agente não estiver instalado, você poderá instalá-lo manualmente usando o procedimento adequado para o seu tipo de sistema operacional.  
[Instalar e desinstalar o SSM Agent manualmente em instâncias do EC2 para Linux](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-linux.html)
[Instalar e desinstalar o SSM Agent manualmente em instâncias do EC2 para macOS](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-macos.html)
[Instalar e desinstalar o SSM Agent manualmente em instâncias do EC2 para Windows Server](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-windows.html)

## Benefícios
<a name="Solution-Kafka-On-EC2-Benefits"></a>

A solução disponibiliza monitoramento do servidor do Kafka, fornecendo insights valiosos para os seguintes casos de uso:
+ Monitoramento da integridade do cluster do Kafka por meio de métricas de replicação e de sincronização.
+ Rastreamento da performance do agente por meio de falhas de solicitação e tempos de latência, juntamente com o tráfego de rede.
+ Monitoramento de erros por parte do produtor ou do consumidor, tempos de latência e atrasos do consumidor.
+ Análise da performance subjacente da JVM para clusters do Kafka.
+ Alternância entre diversos clusters, produtores e consumidores do Kafka configurados por meio da solução na mesma conta.

A seguir, apresentamos as principais vantagens da solução:
+ Automatiza a coleta de métricas para o Kafka e para a JVM subjacente usando a configuração do agente do CloudWatch, o que elimina a necessidade de instrumentação manual.
+ Fornece um painel do CloudWatch consolidado e configurado previamente para as métricas do Kafka e da JVM. O painel gerenciará automaticamente as métricas das novas instâncias do EC2 para o Kafka que foram configuradas usando a solução, mesmo que essas métricas não estejam disponíveis no momento de criação do painel. Além disso, o painel permite agrupar as métricas em aplicações lógicas para facilitar o foco e o gerenciamento.

A imagem apresentada a seguir é um exemplo do painel para esta solução.

![\[Kafka cluster dashboard showing metrics for partitions, producer/consumer performance, and broker status.\]](http://docs.aws.amazon.com/pt_br/AmazonCloudWatch/latest/monitoring/images/KafkaDashboard.png)


## Custos
<a name="Solution-Kafka-On-EC2-Costs"></a>

Esta solução cria e usa recursos em sua conta. A cobrança será realizada com base no uso padrão, que inclui o seguinte:
+ Todas as métricas coletadas pelo agente do CloudWatch são cobradas como métricas personalizadas. O número de métricas usadas por esta solução depende do número de hosts do EC2.
  + Cada host do agente configurado para a solução publica 33 métricas, além de uma métrica (`disk_used_percent`) cuja contagem de métricas para cada host do EC2 depende do número de caminhos dos discos fornecidos para este host.
  + Cada host produtor configurado para a solução publica três métricas com a dimensão `topic` e três métricas sem a dimensão `topic`. Para as métricas com a dimensão `topic`, cada tópico é contabilizado como uma métrica distinta.
  + Cada host consumidor configurado para a solução publica duas métricas com dimensões `topic` e três métricas sem dimensões `topic`. Para as métricas com a dimensões “topic”, cada tópico é contabilizado como uma métrica distinta.
+ Um painel personalizado.
+ As operações da API solicitadas pelo agente do CloudWatch para publicar as métricas. Com a configuração padrão para esta solução, o agente do CloudWatch chama a operação **PutMetricData** uma vez por minuto para cada host do EC2. Isso significa que a API **PutMetricData** será chamada `30*24*60=43,200` em um mês com 30 dias para cada host do EC2.

Para obter mais informações sobre os preços do CloudWatch, consulte [Preço do Amazon CloudWatch](https://aws.amazon.com/cloudwatch/pricing/).

A calculadora de preços pode ajudar a estimar os custos mensais aproximados para o uso desta solução. 

**Como usar a calculadora de preços para estimar os custos mensais da solução**

1. Abra a [calculadora de preços do Amazon CloudWatch](https://calculator.aws/#/createCalculator/CloudWatch).

1. Na seção **Métricas**, em **Número de métricas**, insira **broker\$1metrics\$1count \$1 producer\$1metrics\$1count \$1 consumer\$1metrics\$1count**. Calcule estas métricas da seguinte forma:
   + `broker_metrics_count` = (33 \$1 número médio de caminhos do disco por host do EC2) \$1 number\$1of\$1ec2\$1broker\$1hosts 
   + `producer_metrics_count` = (3 \$1 average\$1number\$1of\$1topics\$1per\$1producer\$1host \$1 3) \$1 number\$1of\$1ec2\$1producer\$1hosts 
   + `consumer_metrics_count` = (2 \$1 average\$1number\$1of\$1topics\$1per\$1consumer\$1host \$1 3) \$1 number\$1of\$1ec2\$1consumer\$1hosts 

1. Na seção **APIs**, em **Número de solicitações de API**, insira **43200 \$1 number of EC2 instances configured for this solution**.

   Por padrão, o agente do CloudWatch executa uma operação **PutMetricData** a cada minuto para cada host do EC2.

1. Na seção **Painéis e alarmes**, em **Número de painéis**, insira **1**.

1. É possível visualizar os custos mensais estimados na parte inferior da calculadora de preços.

## Configuração do agente do CloudWatch para esta solução
<a name="Solution-Kafka-CloudWatch-Agent"></a>

O agente do CloudWatch é um software que opera de maneira contínua e autônoma em seus servidores e em ambientes com contêineres. Ele coleta métricas, logs e rastreamentos da infraestrutura e das aplicações e os envia para o CloudWatch e para o X-Ray.

Para obter mais informações sobre o agente do CloudWatch, consulte [Coleta de métricas, logs e rastreamentos usando o agente do CloudWatch](Install-CloudWatch-Agent.md).

A configuração do agente nesta solução coleta as métricas fundamentais para o Kafka, a JVM e o EC2. O agente do CloudWatch pode ser configurado para coletar mais métricas do Kafka e da JVM do que as que são exibidas por padrão no painel. Para obter uma lista de todas as métricas do Kafka que você pode coletar, consulte [Coletar métricas do Kafka](CloudWatch-Agent-JMX-metrics.md#CloudWatch-Agent-Kafka-metrics). Para obter uma lista de todas as métricas da JVM que você pode coletar, consulte [Coletar métricas da JVM](CloudWatch-Agent-JMX-metrics.md#CloudWatch-Agent-JVM-metrics). Para obter uma lista das métricas do EC2, consulte [Métricas coletadas pelo atendente do CloudWatch em instâncias do Linux e macOS](metrics-collected-by-CloudWatch-agent.md#linux-metrics-enabled-by-CloudWatch-agent).

**Exposição de portas do JMX para perfis de agente, produtor e consumidor do Kafka**

O agente do CloudWatch depende do JMX para coletar as métricas relacionadas aos agentes, produtores e consumidores do Kafka. Para que isso aconteça, é necessário expor a porta do JMX em seus servidores e aplicações.

Para os agentes do Kafka, é necessário usar a variável de ambiente `JMX_PORT` para definir a porta. Será necessário reiniciar os agentes após definir essa variável de ambiente. Analise os scripts de inicialização e os arquivos de configuração da aplicação para encontrar o local mais adequado para adicionar esses argumentos.

Por exemplo, para os sistemas do Linux e do macOS, você pode usar o comando apresentado a seguir para definir a porta do JMX. Certifique-se de especificar um número de porta que não esteja em uso.

```
export JMX_PORT=port-number
```

Para os produtores e consumidores do Kafka, as instruções para expor a porta do JMX dependem do tipo de workload que você está usando para a aplicação da JVM voltada para os produtores e para os consumidores. Consulte a documentação específica para a aplicação para encontrar essas instruções.

De maneira geral, para habilitar uma porta do JMX para monitoramento e gerenciamento, você precisa configurar as propriedades do sistema apresentadas a seguir para a aplicação da JVM. O exemplo apresentado a seguir configura o JMX sem autenticação. Se suas políticas ou seus requisitos de segurança exigirem que você habilite o JMX com autenticação por senha ou SSL para a obtenção de acesso remoto, consulte a [documentação do JMX](https://docs.oracle.com/en/java/javase/17/management/monitoring-and-management-using-jmx-technology.html) para definir a propriedade necessária.

```
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=port-number
-Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.ssl=false
```

Para verificar a porta do JMX, execute `ps aux | grep jmxremote.port`. Os resultados devem mostrar que a porta do JMX foi definida nos processos da JVM.

**Configuração do agente para esta solução**

As métricas coletadas pelo agente são definidas na configuração do agente. A solução fornece configurações do agente para a coleta das métricas recomendadas com dimensões adequadas para o painel da solução. Cada perfil do Kafka, como agente, produtor ou consumidor, tem sua própria configuração de agente que possibilita a coleta de métricas do Kafka e de métricas da JVM e do EC2 subjacentes.

As etapas para a implantação da solução são descritas posteriormente em [Implantação do agente para a sua solução](#Solution-Kafka-Agent-Deploy). As informações apresentadas a seguir são destinadas a ajudar você a compreender como personalizar a configuração do agente para o seu ambiente.

Você deve personalizar algumas partes da seguinte configuração do agente para o seu ambiente:
+ O número da porta do JMX corresponde ao número da porta que você configurou na seção anterior desta documentação. O número da porta está na linha `endpoint` na configuração.
+ `ClusterName`: esta variável é usada como uma dimensão para as métricas de agentes coletadas. Forneça um nome significativo que represente o agrupamento do cluster para as instâncias que executam o agente do Kafka.
+ `ProcessGroupName`: esta variável é usada como uma dimensão para as métricas da JVM coletadas para os agentes. Forneça o mesmo valor fornecido para `ClusterName`. Isso possibilita a visualização das métricas da JVM pertencentes ao mesmo grupo de agentes do Kafka, agrupando-as junto com as métricas dos agentes no painel da solução.
+ `ProducerGroupName`: esta variável é usada como uma dimensão para as métricas de produtores coletadas. Forneça um nome significativo que represente o grupo de instâncias de produtores. Para este valor, é possível especificar a aplicação ou o serviço dos produtores que você deseja usar para obter uma visualização combinada das métricas de produtores no painel da solução.
+ `ConsumerGroupName`: esta variável é usada como uma dimensão para as métricas de consumidores coletadas. Forneça um nome significativo que represente o grupo de instâncias de consumidores. Este nome não deve ser confundido com o conceito de grupo de consumidores no Kafka. Trata-se apenas de uma dimensão de agrupamento, na qual você pode especificar a aplicação ou o serviço de consumidores para obter uma visualização combinada das métricas de consumidores no painel da solução. 

Por exemplo, caso você tenha dois clusters do Kafka em execução na mesma conta, sendo uma para a aplicação `order-processing` e a outra para a aplicação `inventory-management`, é necessário configurar as dimensões `ClusterName` e `ProcessGroupName` de maneira adequada na configuração do agente da instância do agente.
+ Para as instâncias do agente do cluster `order-processing`, defina `ClusterName=order-processing` e `ProcessGroupName=order-processing`.
+ Para as instâncias do agente do cluster `inventory-management`, defina `ClusterName=inventory-management` e `ProcessGroupName=inventory-management`. 
+ De forma semelhante, configure o `ProducerGroupName` para as instâncias de produtores e o `ConsumerGroupName` para as instâncias de consumidores, com base em suas respectivas aplicações.

Ao configurar corretamente as dimensões mencionadas acima, o painel das soluções agrupará automaticamente as métricas com base nas dimensões `ClusterName`, `ProducerGroupName` e `ConsumerGroupName`. O painel incluirá opções do menu suspenso para a seleção e para a visualização de métricas de clusters e de grupos específicos, permitindo o monitoramento da performance de clusters e de grupos individuais separadamente.

Certifique-se de implantar a configuração relevante do agente nas instâncias adequadas do EC2. Cada configuração será armazenada como um parâmetro distinto no Parameter Store do SSM, conforme detalhado posteriormente em [Etapa 2: armazenar o arquivo de configuração recomendado do agente do CloudWatch no Systems Manager Parameter Store](#Solution-Kafka-Agent-Step2).

As instruções apresentadas a seguir descrevem a situação em que os perfis de produtor, consumidor e corretor são implantados em instâncias distintas do EC2, sem a ocorrência de sobreposições. Caso você esteja executando diversos perfis do Kafka na mesma instância do EC2, consulte [Configuração do agente para diversos perfis do Kafka na mesma instância](#Kafka-Multiple-Roles) para obter mais informações.

### Configuração do agente para agentes do agente do Kafka
<a name="Solution-Kafka-Agent-Broker"></a>

Use a configuração apresentada a seguir do agente do CloudWatch nas instâncias do EC2 em que os agentes do agente do Kafka estão implantados. Substitua *ClusterName* pelo nome do cluster que será usado para agrupar essas métricas para obter uma visualização unificada. O valor especificado para o *ClusterName* é usado tanto como a dimensão `ClusterName` quanto como a dimensão `ProcessGroupName`. Substitua *port-number* pela porta do JMX do seu servidor do Kafka. Se o JMX tiver sido habilitado com autenticação por senha ou SSL para acesso remoto, consulte [Coletar métricas do Java Management Extensions (JMX)](CloudWatch-Agent-JMX-metrics.md) para obter informações sobre como configurar o TLS ou a autorização, conforme necessário.

As métricas do EC2 mostradas nesta configuração (configuração apresentada de forma externa ao bloco do JMX) funcionam somente para instâncias do Linux e do macOS. Caso esteja usando instâncias do Windows, é possível optar por omitir essas métricas na configuração. Para obter mais informações sobre as métricas coletadas em instâncias do Windows, consulte [Métricas coletadas pelo atendente do CloudWatch em instâncias do Windows Server](metrics-collected-by-CloudWatch-agent.md#windows-metrics-enabled-by-CloudWatch-agent).

```
{
  "metrics": {
    "namespace": "CWAgent",
    "append_dimensions": {
      "InstanceId": "${aws:InstanceId}"
    },
    "metrics_collected": {
      "jmx": [
        {
          "endpoint": "localhost:port-number",
          "kafka": {
            "measurement": [
              "kafka.request.time.avg",
              "kafka.request.failed",
              "kafka.request.count",
              "kafka.purgatory.size",
              "kafka.partition.under_replicated",
              "kafka.partition.offline",
              "kafka.network.io",
              "kafka.leader.election.rate",
              "kafka.isr.operation.count"
            ]
          },
          "append_dimensions": {
            "ClusterName": "ClusterName"
          }
        },
        {
          "endpoint": "localhost:port-number",
          "jvm": {
            "measurement": [
              "jvm.classes.loaded",
              "jvm.gc.collections.count",
              "jvm.gc.collections.elapsed",
              "jvm.memory.heap.committed",
              "jvm.memory.heap.max",
              "jvm.memory.heap.used",
              "jvm.memory.nonheap.committed",
              "jvm.memory.nonheap.max",
              "jvm.memory.nonheap.used",
              "jvm.threads.count"
            ]
          },
          "append_dimensions": {
            "ProcessGroupName": "ClusterName"
          }
        }
      ],
      "disk": {
        "measurement": [
          "used_percent"
        ]
      },
      "mem": {
        "measurement": [
          "used_percent"
        ]
      },
      "swap": {
        "measurement": [
          "used_percent"
        ]
      },
      "netstat": {
        "measurement": [
          "tcp_established",
          "tcp_time_wait"
        ]
      }
    }
  }
}
```

### Configuração do agente para produtores do Kafka
<a name="Solution-Kafka-Agent-Producer"></a>

Use a configuração apresentada a seguir do agente do CloudWatch nas instâncias do Amazon EC2 em que os produtores do Kafka estão implantados. Substitua *ProducerGroupName* pelo nome da aplicação ou do grupo que você deseja usar para agrupar as métricas para obter uma visualização unificada. Substitua *port-number* pelo número da porta do JMX da aplicação do produtor do Kafka.

 A solução não habilita métricas da JVM para os produtores do Kafka, pois o painel da solução não exibe métricas da JVM relacionadas à JVM para os produtores. Além disso, é possível personalizar a configuração do agente para emitir métricas da JVM, no entanto, as métricas da JVM relacionadas aos produtores não são visíveis no painel da solução.

```
{
  "metrics": {
    "namespace": "CWAgent",
    "append_dimensions": {
      "InstanceId": "${aws:InstanceId}"
    },
    "metrics_collected": {
      "jmx": [
        {
          "endpoint": "localhost:port-number",
          "kafka-producer": {
            "measurement": [
              "kafka.producer.request-rate",
              "kafka.producer.byte-rate",
              "kafka.producer.request-latency-avg",
              "kafka.producer.response-rate",
              "kafka.producer.record-error-rate",
              "kafka.producer.record-send-rate"
            ]
          },
          "append_dimensions": {
            "ProducerGroupName": "ProducerGroupName"
          }
        }
      ]
    }
  }
}
```

### Configuração do agente para consumidores do Kafka
<a name="Solution-Kafka-Agent-Consumer"></a>

Use a configuração apresentada a seguir do agente do CloudWatch nas instâncias do EC2 em que os consumidores do Kafka estão em execução. Substitua *ConsumerGroupName* pelo nome da aplicação ou do grupo que você deseja usar para agrupar essas métricas para obter uma visualização unificada. Substitua *port-number* pelo número da porta do JMX da aplicação do consumidor do Kafka.

A solução não habilita métricas da JVM para os consumidores do Kafka, pois o painel da solução não exibe métricas da JVM relacionadas à JVM para os consumidores. Além disso, é possível personalizar a configuração do agente para emitir métricas da JVM, no entanto, as métricas da JVM relacionadas aos consumidores não são visíveis no painel da solução.

```
{
  "metrics": {
    "append_dimensions": {
      "InstanceId": "${aws:InstanceId}"
    },
    "metrics_collected": {
      "jmx": [
        {
          "endpoint": "localhost:port-number",
          "kafka-consumer": {
            "measurement": [
              "kafka.consumer.fetch-rate",
              "kafka.consumer.total.bytes-consumed-rate",
              "kafka.consumer.records-consumed-rate",
              "kafka.consumer.bytes-consumed-rate",
              "kafka.consumer.records-lag-max"
            ]
          },
          "append_dimensions": {
            "ConsumerGroupName": "ConsumerGroupName"
          }
        }
      ]
    }
  }
}
```

## Implantação do agente para a sua solução
<a name="Solution-Kafka-Agent-Deploy"></a>

Existem várias abordagens para instalar o agente do CloudWatch, dependendo do caso de uso. Recomendamos o uso do Systems Manager para esta solução. Ele fornece uma experiência no console e simplifica o gerenciamento de uma frota de servidores gerenciados em uma única conta da AWS. As instruções apresentadas nesta seção usam o Systems Manager e são destinadas para situações em que o agente do CloudWatch não está em execução com as configurações existentes. É possível verificar se o agente do CloudWatch está em execução ao seguir as etapas apresentadas em [Verificar se o atendente do CloudWatch está em execução](troubleshooting-CloudWatch-Agent.md#CloudWatch-Agent-troubleshooting-verify-running).

Se você já estiver executando o agente do CloudWatch nos hosts do EC2 nos quais a workload está implantada e gerenciando as configurações do agente, pode pular as instruções apresentadas nesta seção e usar o mecanismo de implantação existente para atualizar a configuração. Certifique-se de combinar a configuração do agente de acordo com o perfil (agente, produtor ou consumidor) com a configuração do agente existente e, em seguida, implante a configuração combinada. Se você estiver usando o Systems Manager para armazenar e gerenciar a configuração do agente do CloudWatch, poderá combinar a configuração com o valor do parâmetro existente. Para obter mais informações, consulte [Managing CloudWatch agent configuration files](https://docs.aws.amazon.com/prescriptive-guidance/latest/implementing-logging-monitoring-cloudwatch/create-store-cloudwatch-configurations.html).

**nota**  
Ao usar o Systems Manager para implantar as configurações do agente do CloudWatch apresentadas a seguir, qualquer configuração existente do agente do CloudWatch nas suas instâncias do EC2 será substituída ou sobrescrita. É possível modificar essa configuração para atender às necessidades do ambiente ou do caso de uso específico. As métricas definidas nesta solução representam o requisito mínimo para o painel recomendado. 

O processo de implantação inclui as seguintes etapas:
+ Etapa 1: garantir que as instâncias do EC2 de destino têm as permissões do IAM necessárias.
+ Etapa 2: armazenar o arquivo de configuração recomendado do agente no Systems Manager Parameter Store.
+ Etapa 3: instalar o agente do CloudWatch em uma ou mais instâncias do EC2 usando uma pilha do CloudFormation.
+ Etapa 4: verificar se a configuração do agente foi realizada corretamente.

Essas etapas devem ser repetidas dependendo de os agentes, produtores e consumidores estarem implantados na mesma instância do EC2 ou em instâncias distintas. Por exemplo, se o agente, o produtor e os consumidores do Kafka forem implantados em instâncias separadas, sem sobreposição, você deverá repetir essas etapas três vezes, com as configurações de agente apropriadas para as instâncias do EC2 destinadas ao agente, ao produtor e ao consumidor.

### Etapa 1: garantir que as instâncias do EC2 de destino têm as permissões do IAM necessárias
<a name="Solution-Kafka-Agent-Step1"></a>

Você deve conceder permissão para o Systems Manager instalar e configurar o agente do CloudWatch. Além disso, é necessário conceder permissão para que o agente do CloudWatch publique a telemetria da instância do EC2 para o CloudWatch. Certifique-se de que o perfil do IAM anexado à instância tenha as políticas do IAM **CloudWatchAgentServerPolicy** e **AmazonSSMManagedInstanceCore** associadas.
+ Após criar o perfil, associe-o às suas instâncias do EC2. Siga as etapas apresentadas em [Launch an instance with an IAM role](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#launch-instance-with-role) para anexar um perfil durante a inicialização de uma nova instância do EC2. Para anexar um perfil a uma instância do EC2 existente, siga as etapas apresentadas em [Attach an IAM role to an instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#attach-iam-role).

### Etapa 2: armazenar o arquivo de configuração recomendado do agente do CloudWatch no Systems Manager Parameter Store
<a name="Solution-Kafka-Agent-Step2"></a>

O Parameter Store simplifica a instalação do agente do CloudWatch em uma instância do EC2 ao armazenar e gerenciar os parâmetros de configuração de forma segura, eliminando a necessidade de valores com codificação rígida. Isso garante um processo de implantação mais seguro e flexível ao possibilitar o gerenciamento centralizado e as atualizações simplificadas para as configurações em diversas instâncias.

Use as etapas apresentadas a seguir para armazenar o arquivo de configuração recomendado do agente do CloudWatch como um parâmetro no Parameter Store.

**Como criar o arquivo de configuração do agente do CloudWatch como um parâmetro**

1. Abra o console AWS Systems Manager em [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. No painel de navegação, escolha **Gerenciamento de aplicações** e, em seguida, **Parameter Store**.

1. Siga as etapas apresentadas a seguir para criar um novo parâmetro para a configuração.

   1. Escolha **Criar Parâmetro**.

   1. Forneça um nome para o parâmetro que armazenará a configuração do seu agente do CloudWatch, como **AmazonCloudWatch-Kafka-Producer-Configuration** para produtores, **AmazonCloudWatch-Kafka-Consumer-Configuration** para consumidores ou **AmazonCloudWatch-Kafka-Broker-Configuration** para agentes. Caso você tenha diversos perfis do Kafka em uma única instância do EC2, nomeie-os de forma apropriada para facilitar a identificação. Esse valor será usado posteriormente para distribuir essa configuração para o agente em execução na instância do EC2.

   1. Em **Camadas de parâmetros**, escolha **Padrão**. 

   1. Para **Tipo**, escolha **String**.

   1. Em **Tipo de dados**, selecione **texto**.

   1. Na caixa **Valor**, cole o texto completo da configuração do agente do CloudWatch. Certifique-se de selecionar o bloco em JSON correspondente ao perfil do Kafka que essa instância está hospedando. Consulte as configurações fornecidas em [Configuração do agente para agentes do agente do Kafka](#Solution-Kafka-Agent-Broker), [Configuração do agente para produtores do Kafka](#Solution-Kafka-Agent-Producer) e [Configuração do agente para consumidores do Kafka](#Solution-Kafka-Agent-Consumer) ao armazenar a configuração para agentes, produtores e consumidores, respectivamente. Caso você esteja executando diversos perfis do Kafka na mesma instância do EC2, certifique-se de combinar as configurações, se necessário, conforme descrito em [Configuração do agente para diversos perfis do Kafka na mesma instância](#Kafka-Multiple-Roles).

   1. Escolha **Criar Parâmetro**. 

### Etapa 3: instalar o agente do CloudWatch e aplicar a configuração usando um modelo do CloudFormation
<a name="Solution-Kafka-Agent-Step3"></a>

É possível usar o AWS CloudFormation para instalar o agente e configurá-lo para usar a configuração do agente do CloudWatch criada nas etapas anteriores.

**Como instalar e configurar o agente do CloudWatch para esta solução**

1. Abra o assistente para **criar pilha de forma rápida** do CloudFormation usando este link: [https://console.aws.amazon.com/cloudformation/home?\$1/stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-1.0.0.json](https://console.aws.amazon.com/cloudformation/home?#/stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-1.0.0.json). 

1. Verifique se a região selecionada no console corresponde à região em que a workload do Kafka está em execução.

1. Em **Nome da pilha**, insira um nome para identificar esta pilha, como **CWAgentInstallationStack**.

1. Na seção **Parâmetros**, especifique o seguinte:

   1. Para **CloudWatchAgentConfigSSM**, insira o nome do parâmetro do Systems Manager para a configuração do agente que você criou anteriormente, como **AmazonCloudWatch-Kafka-Broker-Configuration** para agentes, **AmazonCloudWatch-Kafka-Producer-Configuration** para produtores e **AmazonCloudWatch-Kafka-Consumer-Configuration** para consumidores.

   1. Para selecionar as instâncias de destino, você tem duas opções.

      1. Para **InstanceIds**, especifique uma lista delimitada por vírgulas de IDs de instâncias nas quais você deseja instalar o agente do CloudWatch com esta configuração. É possível listar uma única instância ou várias instâncias.

      1. Se você estiver realizando implantações em grande escala, é possível especificar a **TagKey** e o **TagValue** correspondente para direcionar todas as instâncias do EC2 associadas a essa etiqueta e a esse valor. Se você especificar uma **TagKey**, é necessário especificar um **TagValue** correspondente. (Para um grupo do Auto Scaling, especifique **aws:autoscaling:groupName** para a **TagKey** e defina o nome do grupo do Auto Scaling para a **TagValue** para realizar a implantação em todas as instâncias do grupo do Auto Scaling.)

         Caso você especifique tanto os parâmetros **InstanceIds** quanto **TagKeys**, **InstanceIds** terá precedência, e as etiquetas serão desconsideradas.

1. Analise as configurações e, em seguida, escolha **Criar pilha**. 

Se você desejar editar o arquivo de modelo previamente para personalizá-lo, selecione a opção **Fazer upload de um arquivo de modelo** no **Assistente de criação de pilha** para fazer o upload do modelo editado. Para obter mais informações, consulte [Criar uma pilha no console do CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html). É possível usar o seguinte link para fazer download do modelo: [https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-1.0.0.json](https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-1.0.0.json). 

**nota**  
Após a conclusão desta etapa, este parâmetro do Systems Manager será associado aos agentes do CloudWatch em execução nas instâncias de destino. Isto significa que:  
Se o parâmetro do Systems Manager for excluído, o agente será interrompido.
Se o parâmetro do Systems Manager for editado, as alterações de configuração serão aplicadas automaticamente ao agente na frequência programada, que, por padrão, é de 30 dias.
Se você desejar aplicar imediatamente as alterações a este parâmetro do Systems Manager, você deverá executar esta etapa novamente. Para obter mais informações sobre as associações, consulte [Working with associations in Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/state-manager-associations.html).

### Etapa 4: verificar se a configuração do agente foi realizada corretamente
<a name="Solution-Kafka-Agent-Step4"></a>

É possível verificar se o agente do CloudWatch está instalado ao seguir as etapas apresentadas em [Verificar se o atendente do CloudWatch está em execução](troubleshooting-CloudWatch-Agent.md#CloudWatch-Agent-troubleshooting-verify-running). Se o agente do CloudWatch não estiver instalado e em execução, certifique-se de que todas as configurações foram realizadas corretamente.
+ Certifique-se de ter anexado um perfil com as permissões adequadas para a instância do EC2, conforme descrito na [Etapa 1: garantir que as instâncias do EC2 de destino têm as permissões do IAM necessárias](Solution-Tomcat-On-EC2.md#Solution-Tomcat-Agent-Step1).
+ Certifique-se de ter configurado corretamente o JSON para o parâmetro do Systems Manager. Siga as etapas em [Solução de problemas de instalação do atendente do CloudWatch com o CloudFormation](Install-CloudWatch-Agent-New-Instances-CloudFormation.md#CloudWatch-Agent-CloudFormation-troubleshooting).

Se todas as configurações estiverem corretas, as métricas do Kafka serão publicadas no CloudWatch e estarão disponíveis para visualização. É possível verificar no console do CloudWatch para assegurar que as métricas estão sendo publicadas corretamente.

**Como verificar se as métricas do Kafka estão sendo publicadas no CloudWatch**

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

1. Escolha **Métricas** e, depois, **Todas as métricas**.

1. Certifique-se de ter selecionado a região na qual a solução foi implantada, escolha **Namespaces personalizados** e, em seguida, selecione **CWAgent**.

1. Pesquise pelas métricas mencionadas na seção de configuração do agente deste documento, como `kafka.partition.offline` para agentes, `kafka.consumer.fetch.rate` para consumidores ou `kafka.producer.request-rate` para produtores. Caso encontre resultados para essas métricas, isso significa que elas estão sendo publicadas no CloudWatch.

## Criação do painel da solução do Kafka
<a name="Solution-Kafka-Dashboard"></a>

Este painel exibe as métricas emitidas recentemente para o Kafka e para a JVM subjacente. Este painel fornece uma visualização do principal colaborador para a integridade da workload do Kafka, entre produtores, agentes e consumidores. A visualização do principal colaborador exibe os dez principais colaboradores por widget de métrica. Isso permite a identificação de discrepâncias rapidamente. 

O painel da solução não exibe métricas do EC2. Para visualizar as métricas relacionadas ao EC2, é necessário usar o painel automático do EC2 para acessar as métricas fornecidas diretamente pelo EC2 e usar o painel do console do EC2 para consultar as métricas do EC2 que são coletadas pelo agente do CloudWatch. Para obter mais informações sobre os painéis automáticos para serviços da AWS, consulte [Visualização de um painel do CloudWatch para um único serviço da AWS](CloudWatch_Automatic_Dashboards_Focus_Service.md).

Para criar o painel, é possível usar as seguintes opções:
+ Usar o console do CloudWatch para criar o painel.
+ Usar o console do AWS CloudFormation para implantar o painel.
+ Fazer o download do código de infraestrutura como código do AWS CloudFormation e integrá-lo como parte da automação de integração contínua (CI).

Ao usar o console do CloudWatch para criar um painel, é possível visualizá-lo previamente antes de criá-lo e incorrer em custos.

**nota**  
O painel criado com o CloudFormation nesta solução exibe métricas da região em que a solução está implantada. Certifique-se de que a pilha do CloudFormation seja criada na mesma região em que as métricas do Kafka e da JVM são publicadas.  
Se você especificou um namespace personalizado diferente de `CWAgent` na configuração do agente do CloudWatch, será necessário alterar o modelo do CloudFormation para o painel, substituindo `CWAgent` pelo namespace personalizado que você está usando.

**Como criar o painel usando o console do CloudWatch**
**nota**  
Atualmente, os painéis de soluções exibem métricas relacionadas à coleta de resíduos somente para o G1 Garbage Collector, que é o coletor padrão para as versões mais recentes do Java. Caso esteja usando um algoritmo de coleta de resíduos diferente, os widgets relacionados à coleta de resíduos estarão vazios. No entanto, você pode personalizar esses widgets alterando o modelo do painel do CloudFormation e aplicando o tipo de coleta de resíduos apropriado à dimensão do nome das métricas relacionadas à coleta de resíduos. Por exemplo, se você estiver usando a coleta de resíduos paralela, altere **name=\$1"G1 Young Generation\$1"** para **name=\$1"Parallel GC\$1"** da métrica de contagem de coleta de resíduos `jvm.gc.collections.count`.

1. Abra o console do CloudWatch e acesse **Criar painel** usando este link: [https://console.aws.amazon.com/cloudwatch/home?\$1dashboards?dashboardTemplate=ApacheKafkaOnEc2&referrer=os-catalog](https://console.aws.amazon.com/cloudwatch/home?#dashboards?dashboardTemplate=ApacheKafkaOnEc2&referrer=os-catalog). 

1. Verifique se a região selecionada no console corresponde à região em que a workload do Kafka está em execução.

1. Insira o nome do painel e, em seguida, escolha **Criar painel**.

   Para diferenciar este painel de painéis semelhantes em outras regiões com facilidade, recomendamos incluir o nome da região no nome do painel, por exemplo, **KafkaDashboard-us-east-1**.

1. Visualize previamente o painel e escolha **Salvar** para criá-lo.

**Como criar o painel usando o CloudFormation**

1. Abra o assistente para **criar pilha de forma rápida** do CloudFormation usando este link: [https://console.aws.amazon.com/cloudformation/home?\$1/stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/Kafka\$1EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json](https://console.aws.amazon.com/cloudformation/home?#/stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/Kafka_EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json). 

1. Verifique se a região selecionada no console corresponde à região em que a workload do Kafka está em execução.

1. Em **Nome da pilha**, insira um nome para identificar esta pilha, como **KafkaDashboardStack**.

1. Na seção **Parâmetros**, especifique o nome do painel no parâmetro **DashboardName**.

   Para diferenciar este painel de painéis semelhantes em outras regiões com facilidade, recomendamos incluir o nome da região no nome do painel, por exemplo, **KafkaDashboard-us-east-1**.

1. Confirme as funcionalidades de acesso relacionadas às transformações na seção **Capacidades e transformações**. Lembre-se de que o CloudFormation não adiciona recursos do IAM.

1. Analise as configurações e, em seguida, escolha **Criar pilha**. 

1. Quando o status da pilha mostrar **CREATE\$1COMPLETE**, selecione a guia **Recursos** na pilha criada e, em seguida, escolha o link exibido em **ID físico** para acessar o painel. Como alternativa, é possível acessar o painel diretamente no console do CloudWatch ao selecionar **Painéis** no painel de navegação do console à esquerda e localizar o nome do painel na seção **Painéis personalizados**.

Se você desejar editar o arquivo de modelo para personalizá-lo para atender a uma necessidade específica, é possível usar a opção **Fazer upload de um arquivo de modelo** no **Assistente de criação de pilha** para fazer o upload do modelo editado. Para obter mais informações, consulte [Criar uma pilha no console do CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html). É possível usar este link para fazer download do modelo: [https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/Kafka\$1EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json](https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/Kafka_EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json). 

**nota**  
Atualmente, os painéis de soluções exibem métricas relacionadas à coleta de resíduos somente para o G1 Garbage Collector, que é o coletor padrão para as versões mais recentes do Java. Caso esteja usando um algoritmo de coleta de resíduos diferente, os widgets relacionados à coleta de resíduos estarão vazios. No entanto, você pode personalizar esses widgets alterando o modelo do painel do CloudFormation e aplicando o tipo de coleta de resíduos apropriado à dimensão do nome das métricas relacionadas à coleta de resíduos. Por exemplo, se você estiver usando a coleta de resíduos paralela, altere **name=\$1"G1 Young Generation\$1"** para **name=\$1"Parallel GC\$1"** da métrica de contagem de coleta de resíduos `jvm.gc.collections.count`. 

### Como começar a usar o painel do Kafka
<a name="Solution-Kafka-Dashboard-GetStarted"></a>

A seguir, apresentamos algumas tarefas que você pode realizar para explorar o novo painel do Kafka. Essas tarefas permitem a validação do funcionamento correto do painel e fornecem uma experiência prática ao usá-lo para monitorar um cluster do Kafka. À medida que realiza as tarefas, você se familiarizará com a navegação no painel e com a interpretação das métricas visualizadas.

**Uso das listas suspensas**

O painel fornece listas suspensas na parte superior, que podem ser usadas para filtrar e selecionar os clusters, os produtores e os grupos de consumidores específicos do Kafka que você deseja monitorar.
+ Para exibir métricas para um cluster específico do Kafka, selecione o nome desse cluster na lista suspensa **Cluster do Kafka**. 
+ Para exibir métricas para um grupo de produtores específico do Kafka, selecione o nome desse grupo de produtores na lista suspensa **Produtor do Kafka**. 
+ Para exibir métricas para um grupo de consumidores específico do Kafka, selecione o nome desse grupo de consumidores na lista suspensa **Grupo de consumidores do Kafka**. 

**Verificação da integridade do cluster**

Na seção **Visão geral do cluster**, localize os widgets **Partições sub-replicadas** e **Réplicas em sincronização**. Esses valores devem ser, idealmente, zero ou um número pequeno. Um valor elevado em qualquer uma dessas métricas podem indicar problemas no cluster do Kafka que requerem investigação. 

**Investigação da performance do agente**

Na seção **Agentes**, localize os widgets **Falha nas solicitações de busca** e **Falha nas solicitações do produtor**. Esses widgets apresentam a quantidade de falhas nas solicitações de operações de busca e de produção, respectivamente. As taxas elevadas de falha podem indicar problemas nos agentes ou na conectividade da rede, que requerem uma investigação mais aprofundada.

**Monitoramento da performance do produtor**

Na seção **Visão geral do grupo de produtores**, localize os widgets **Taxa média de solicitações**, **Latência média de solicitações** e **Taxa média de registros de envio ou de erros**. Esses widgets disponibilizarão uma visão geral sobre a performance dos produtores do grupo selecionado. Além disso, é possível obter um detalhamento para visualizar métricas de produtores e de tópicos específicos na seção **Produtores**.

**Monitoramento de atrasos dos consumidores**

Na seção **Visão geral do grupo de consumidores**, localize o widget **Atraso dos consumidores**. Esse widget mostra o quão atrasados os consumidores estão no processamento das mensagens em relação aos últimos deslocamentos que ocorreram nas partições às quais eles são assinantes. Idealmente, o atraso dos consumidores deve ser um valor baixo ou zero. Um atraso dos consumidores significativo pode indicar que os consumidores não estão conseguindo acompanhar o ritmo de produção de dados, o que pode resultar em possíveis perdas de dados ou atrasos no processamento. Além disso, é possível obter um detalhamento para visualizar métricas de consumidores e de tópicos específicos na seção **Consumidores**.

## Configuração do agente para diversos perfis do Kafka na mesma instância
<a name="Kafka-Multiple-Roles"></a>

As configurações individuais para os perfis do Kafka listadas na [Configuração do agente do CloudWatch para esta solução](#Solution-Kafka-CloudWatch-Agent) são aplicáveis somente quando os perfis de produtor, consumidor e agente estão implantados em instâncias do EC2 distintas, sem sobreposição. Se você estiver executando diversos perfis do Kafka na mesma instância do Amazon EC2, existem duas opções:
+ Criar um único arquivo de configuração do agente que lista e configura todas as métricas para todos os perfis do Kafka implantados nessa instância. Se você planeja usar o Systems Manager para gerenciar a configuração do agente, esta é a opção recomendada.

  Ao escolher essa opção, se os diversos perfis do Kafka fizerem parte do mesmo processo da JVM, será necessário especificar o mesmo endpoint para cada um dos perfis do Kafka no arquivo de configuração do agente. Se os diversos perfis do Kafka fizerem parte de processos diferentes da JVM, o endpoint para cada um dos perfis pode ser distinto, dependendo da porta do JMX configurada para esse processo.
+ Criar arquivos de configuração do agente distintos para cada um dos perfis do Kafka e configurar o agente para aplicar ambos os arquivos de configuração. Para obter instruções sobre como aplicar diversos arquivos de configuração, consulte [Criação de vários arquivos de configuração para o agente do CloudWatch](create-cloudwatch-agent-configuration-file.md#CloudWatch-Agent-multiple-config-files).

O exemplo apresentado a seguir mostra uma configuração de agente do CloudWatch em que os perfis de produtor e de consumidor estão em execução em uma instância como parte do mesmo processo da JVM. Nesse caso, o número da porta deve ser semelhante nas partes de produtor e de consumidor da configuração abaixo. Se, em vez disso, os dois perfis estivessem em execução como parte de diferentes processos da JVM, você poderia especificar números de portas diferentes para cada um dos perfis, de acordo com a porta do JMX de cada processo individual da JVM.

```
{
  "metrics": {
    "namespace": "CWAgent",
    "append_dimensions": {
      "InstanceId": "${aws:InstanceId}"
    },
    "metrics_collected": {
      "jmx": [
        {
          "endpoint": "localhost:port-number",
          "kafka-producer": {
            "measurement": [
              "kafka.producer.request-rate",
              "kafka.producer.byte-rate",
              "kafka.producer.request-latency-avg",
              "kafka.producer.response-rate",
              "kafka.producer.record-error-rate",
              "kafka.producer.record-send-rate"
            ]
          },
          "append_dimensions": {
            "ProducerGroupName": "ProducerGroupName"
          }
        },
        {
          "endpoint": "localhost:port-number",
          "kafka-consumer": {
            "measurement": [
              "kafka.consumer.fetch-rate",
              "kafka.consumer.total.bytes-consumed-rate",
              "kafka.consumer.records-consumed-rate",
              "kafka.consumer.bytes-consumed-rate",
              "kafka.consumer.records-lag-max"
            ]
          },
          "append_dimensions": {
            "ConsumerGroupName": "ConsumerGroupName"
          }
        }
      ]
    }
  }
}
```

# Solução do CloudWatch: workload do Tomcat no Amazon EC2
<a name="Solution-Tomcat-On-EC2"></a>

Esta solução auxilia na configuração da coleta de métricas prontas para uso com agentes do CloudWatch para servidores do Tomcat que estão sendo executadas em instâncias do EC2 Além disso, a solução ajuda na configuração de um painel do CloudWatch configurado previamente. Para obter informações gerais sobre todas as soluções de observabilidade do CloudWatch, consulte [Soluções de observabilidade do CloudWatch](Monitoring-Solutions.md).

**Topics**
+ [Requisitos](#Solution-Tomcat-On-EC2-Requirements)
+ [Benefícios](#Solution-Tomcat-On-EC2-Benefits)
+ [Custos](#Solution-Tomcat-On-EC2-Costs)
+ [Configuração do agente do CloudWatch para esta solução](#Solution-Tomcat-CloudWatch-Agent)
+ [Implantação do agente para a sua solução](#Solution-Tomcat-Agent-Deploy)
+ [Criação do painel da solução do Tomcat](#Solution-Tomcat-Dashboard)

## Requisitos
<a name="Solution-Tomcat-On-EC2-Requirements"></a>

Esta solução é aplicável nas seguintes condições:
+ Versões compatíveis: Tomcat nas versões 9, 10.1 e 11 (beta)
+ Computação: Amazon EC2
+ Fornecimento de suporte para até 500 instâncias do EC2 em todas as workloads do Tomcat em uma Região da AWS específica
+ Versão mais recente do agente do CloudWatch
+ SSM Agent instalado na instância do EC2
**nota**  
O AWS Systems Manager (SSM Agent) está instalado previamente em algumas [imagens de máquinas da Amazon (AMIs)](https://docs.aws.amazon.com/systems-manager/latest/userguide/ami-preinstalled-agent.html) fornecidas pela AWS e por entidades externas confiáveis. Se o agente não estiver instalado, você poderá instalá-lo manualmente usando o procedimento adequado para o seu tipo de sistema operacional.  
[Instalar e desinstalar o SSM Agent manualmente em instâncias do EC2 para Linux](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-linux.html)
[Instalar e desinstalar o SSM Agent manualmente em instâncias do EC2 para macOS](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-macos.html)
[Instalar e desinstalar o SSM Agent manualmente em instâncias do EC2 para Windows Server](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-windows.html)

## Benefícios
<a name="Solution-Tomcat-On-EC2-Benefits"></a>

A solução disponibiliza monitoramento do servidor do Tomcat, fornecendo insights valiosos para os seguintes casos de uso:
+ Detecção de erros e de problemas de performance do servidor do Tomcat.
+ Monitoramento do tráfego de rede para identificar problemas relacionados à transferência de dados.
+ Rastreamento do uso de threads e das sessões de usuários ativos.
+ Análise da performance subjacente da JVM para o servidor do Tomcat.

A seguir, apresentamos as principais vantagens da solução:
+ Automatiza a coleta de métricas para o Apache Tomcat e para a JVM subjacente usando a configuração do agente do CloudWatch, o que elimina a necessidade de instrumentação manual.
+ Fornece um painel do CloudWatch consolidado e configurado previamente para as métricas do Apache Tomcat e da JVM. O painel gerenciará automaticamente as métricas das novas instâncias do EC2 para o Tomcat que foram configuradas usando a solução, mesmo que essas métricas não estejam disponíveis no momento de criação do painel. Além disso, o painel permite agrupar as métricas em aplicações lógicas para facilitar o foco e o gerenciamento.

A imagem apresentada a seguir é um exemplo do painel para esta solução.

![\[Exemplo de painel para a solução do Apache Tomcat.\]](http://docs.aws.amazon.com/pt_br/AmazonCloudWatch/latest/monitoring/images/TomcatDashboard.png)


## Custos
<a name="Solution-Tomcat-On-EC2-Costs"></a>

Esta solução cria e usa recursos em sua conta. A cobrança será realizada com base no uso padrão, que inclui o seguinte:
+ Todas as métricas coletadas pelo agente do CloudWatch são cobradas como métricas personalizadas. O número de métricas usadas por esta solução depende do número de hosts do EC2.
  + Cada host do Tomcat configurado para a solução publica um total de 27 métricas, além de uma métrica (`disk_used_percent`) cuja contagem de métricas depende do número de caminhos dos discos fornecidos para este host.
+ Um painel personalizado.
+ As operações da API solicitadas pelo agente do CloudWatch para publicar as métricas. Com a configuração padrão para esta solução, o agente do CloudWatch chama a operação **PutMetricData** uma vez por minuto. Isso significa que a API **PutMetricData** será chamada `30*24*60=43,200` em um mês com 30 dias para cada host do EC2.

Para obter mais informações sobre os preços do CloudWatch, consulte [Preço do Amazon CloudWatch](https://aws.amazon.com/cloudwatch/pricing/).

A calculadora de preços pode ajudar a estimar os custos mensais aproximados para o uso desta solução. 

**Como usar a calculadora de preços para estimar os custos mensais da solução**

1. Abra a [calculadora de preços do Amazon CloudWatch](https://calculator.aws/#/createCalculator/CloudWatch).

1. Na seção **Métricas**, em **Número de métricas**, insira **(27 \$1 average number of disk paths per EC2 host) \$1 number of EC2 instances configured for this solution**.

1. Na seção **APIs**, em **Número de solicitações de API**, insira **43200 \$1 number of EC2 instances configured for this solution**.

   Por padrão, a solução executa uma operação **PutMetricData** a cada minuto para cada host do EC2.

1. Na seção **Painéis e alarmes**, em **Número de painéis**, insira **1**.

1. É possível visualizar os custos mensais estimados na parte inferior da calculadora de preços.

## Configuração do agente do CloudWatch para esta solução
<a name="Solution-Tomcat-CloudWatch-Agent"></a>

O agente do CloudWatch é um software que opera de maneira contínua e autônoma em seus servidores e em ambientes com contêineres. Ele coleta métricas, logs e rastreamentos da infraestrutura e das aplicações e os envia para o CloudWatch e para o X-Ray.

Para obter mais informações sobre o agente do CloudWatch, consulte [Coleta de métricas, logs e rastreamentos usando o agente do CloudWatch](Install-CloudWatch-Agent.md).

A configuração do agente nesta solução coleta as métricas fundamentais para o Tomcat, a JVM e o EC2. O agente do CloudWatch pode ser configurado para coletar mais métricas da JVM do que as que são exibidas por padrão no painel. Para obter uma lista de todas as métricas do Tomcat que você pode coletar, consulte [Coleta métricas do Tomcat](CloudWatch-Agent-JMX-metrics.md#CloudWatch-Agent-Tomcat-metrics). Para obter uma lista de todas as métricas da JVM que você pode coletar, consulte [Coletar métricas da JVM](CloudWatch-Agent-JMX-metrics.md#CloudWatch-Agent-JVM-metrics). Para obter uma lista das métricas do Amazon EC2, consulte [Métricas coletadas pelo atendente do CloudWatch em instâncias do Linux e macOS](metrics-collected-by-CloudWatch-agent.md#linux-metrics-enabled-by-CloudWatch-agent).

**Exposição de portas do JMX para o servidor do Tomcat**

O agente do CloudWatch depende do JMX para coletar as métricas relacionadas ao servidor do Tomcat e ao processo da JVM. Para que isso aconteça, é necessário expor a porta do JMX de seus servidores. Para habilitar uma porta do JMX para monitoramento e gerenciamento, você definiria propriedades do sistema para os servidores do Tomcat. É possível usar a variável de ambiente `CATALINA_OPTS ` para definir as propriedades do sistema necessárias para o Tomcat. Analise os scripts de inicialização e os arquivos de configuração do servidor do Tomcat para encontrar o local mais adequado para definir a variável de ambiente. Certifique-se de especificar um número de porta que não esteja em uso. Você precisará reiniciar o servidor depois de realizar a alteração. 

```
export CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=<<port-number>> -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
```

Este exemplo configura o JMX sem autenticação. Se suas políticas ou seus requisitos de segurança exigirem que você habilite o JMX com autenticação por senha ou SSL para a obtenção de acesso remoto, consulte a [documentação do JMX](https://docs.oracle.com/en/java/javase/17/management/monitoring-and-management-using-jmx-technology.html) para definir a propriedade necessária.

Para verificar a porta do JMX, execute `ps aux | grep jmxremote.port`. Os resultados devem mostrar que a porta do JMX foi definida nos processos da JVM.

### Configuração do agente para a solução do Tomcat
<a name="Solution-Agent-Configuration-Tomcat-Solution"></a>

As métricas coletadas pelo agente são definidas na configuração do agente. A solução fornece configurações do agente para a coleta das métricas recomendadas com dimensões adequadas para o painel da solução.

As etapas para a implantação da solução são descritas posteriormente em [Implantação do agente para a sua solução](#Solution-Tomcat-Agent-Deploy). As informações apresentadas a seguir são destinadas a ajudar você a compreender como personalizar a configuração do agente para o seu ambiente.

Você deve personalizar algumas partes da seguinte configuração do agente para o seu ambiente:
+ O número da porta do JMX corresponde ao número da porta que você configurou na seção anterior desta documentação. O número da porta está na linha `endpoint` na configuração.
+ `AppName`: esta variável é usada como uma dimensão para as métricas da aplicação do Tomcat coletadas. Forneça um nome significativo que represente o agrupamento para as instâncias que executam a aplicação do Tomcat.
+ `ProcessGroupName`: esta variável é usada como uma dimensão para as métricas da JVM coletadas para os hosts do Tomcat. Forneça o mesmo valor fornecido para `AppName` acima. Isso possibilita a visualização das métricas da JVM pertencentes ao mesmo grupo de aplicações do Tomcat como métricas do servidor no painel da solução.

Por exemplo, caso você tenha duas aplicações do Tomcat em execução na mesma Conta da AWS, sendo uma para a aplicação `billing-system` e a outra para a aplicação `order-system`, é possível configurar as dimensões `AppName` e `ProcessGroupName` de maneira adequada na configuração do agente de cada instância.
+ Para as instâncias da aplicação `billing-system`, defina `AppName=billing-system` e `ProcessGroupName=billing-system`.
+ Para as instâncias da aplicação `order-system`, defina `AppName=order-system` e `ProcessGroupName=order-system`.

Ao seguir essas diretrizes, a solução agrupará automaticamente as métricas com base nas dimensões `AppName` e `ProcessGroupName`. O painel incluirá opções do menu suspenso para a seleção e para a visualização de métricas de uma aplicação do Tomcat específica, permitindo o monitoramento da performance de aplicações individuais separadamente.

### Configuração do agente para hosts do Tomcat
<a name="Solution-Agent-Configuration-Tomcat-Host"></a>

Use a configuração do agente do CloudWatch apresentada a seguir nas instâncias do EC2 em que as aplicações do Tomcat estão implantadas. A configuração será armazenada como um parâmetro no Parameter Store do SSM, conforme detalhado posteriormente em [Etapa 2: armazenar o arquivo de configuração recomendado do agente do CloudWatch no Systems Manager Parameter Store](#Solution-Tomcat-Agent-Step2).

Substitua *AppName* por um nome significativo que represente a aplicação do Tomcat da qual as instâncias fazem parte. Substitua *port-number* pela porta do JMX do seu servidor do Tomcat. Se o JMX tiver sido habilitado com autenticação por senha ou SSL para acesso remoto, consulte [Coletar métricas do Java Management Extensions (JMX)](CloudWatch-Agent-JMX-metrics.md) para obter informações sobre como configurar o TLS ou a autorização na configuração do agente, conforme necessário.

As métricas do EC2 mostradas nesta configuração (configuração apresentada de forma externa ao bloco do JMX) funcionam somente para instâncias do Linux e do macOS. Caso esteja usando instâncias do Windows, é possível optar por omitir essas métricas na configuração. Para obter mais informações sobre as métricas coletadas em instâncias do Windows, consulte [Métricas coletadas pelo atendente do CloudWatch em instâncias do Windows Server](metrics-collected-by-CloudWatch-agent.md#windows-metrics-enabled-by-CloudWatch-agent).

```
{
  "metrics": {
    "namespace": "CWAgent",
    "append_dimensions": {
      "InstanceId": "${aws:InstanceId}"
    },
    "metrics_collected": {
      "jmx": [
        {
          "endpoint": "localhost:port-number",
          "tomcat": {
            "measurement": [
              "tomcat.sessions",
              "tomcat.errors",
              "tomcat.processing_time",
              "tomcat.traffic",
              "tomcat.max_time",
              "tomcat.request_count",
              "tomcat.threads"
            ]
          },
          "append_dimensions": {
            "AppName": "AppName"
          }
        },
        {
          "endpoint": "localhost:port-number",
          "jvm": {
            "measurement": [
              "jvm.classes.loaded",
              "jvm.gc.collections.count",
              "jvm.gc.collections.elapsed",
              "jvm.memory.heap.committed",
              "jvm.memory.heap.max",
              "jvm.memory.heap.used",
              "jvm.memory.nonheap.committed",
              "jvm.memory.nonheap.max",
              "jvm.memory.nonheap.used",
              "jvm.threads.count"
            ]
          },
          "append_dimensions": {
            "ProcessGroupName": "AppName"
          }
        }
      ],
      "disk": {
        "measurement": [
          "used_percent"
        ]
      },
      "mem": {
        "measurement": [
          "used_percent"
        ]
      },
      "swap": {
        "measurement": [
          "used_percent"
        ]
      },
      "netstat": {
        "measurement": [
          "tcp_established",
          "tcp_time_wait"
        ]
      }
    }
  }
}
```

## Implantação do agente para a sua solução
<a name="Solution-Tomcat-Agent-Deploy"></a>

Existem várias abordagens para instalar o agente do CloudWatch, dependendo do caso de uso. Recomendamos o uso do Systems Manager para esta solução. Ele fornece uma experiência no console e simplifica o gerenciamento de uma frota de servidores gerenciados em uma única conta da AWS. As instruções apresentadas nesta seção usam o Systems Manager e são destinadas para situações em que o agente do CloudWatch não está em execução com as configurações existentes. É possível verificar se o agente do CloudWatch está em execução ao seguir as etapas apresentadas em [Verificar se o atendente do CloudWatch está em execução](troubleshooting-CloudWatch-Agent.md#CloudWatch-Agent-troubleshooting-verify-running).

Se você já estiver executando o agente do CloudWatch nos hosts do EC2 nos quais a aplicação da JVM está implantada e gerenciando as configurações do agente, pode pular as instruções apresentadas nesta seção e usar o mecanismo de implantação existente para atualizar a configuração. Certifique-se de combinar a configuração do agente da JVM com a configuração do agente existente e, em seguida, implante a configuração combinada. Se você estiver usando o Systems Manager para armazenar e gerenciar a configuração do agente do CloudWatch, poderá combinar a configuração com o valor do parâmetro existente. Para obter mais informações, consulte [Managing CloudWatch agent configuration files](https://docs.aws.amazon.com/prescriptive-guidance/latest/implementing-logging-monitoring-cloudwatch/create-store-cloudwatch-configurations.html).

**nota**  
Ao usar o Systems Manager para implantar as configurações do agente do CloudWatch apresentadas a seguir, qualquer configuração existente do agente do CloudWatch nas suas instâncias do EC2 será substituída ou sobrescrita. É possível modificar essa configuração para atender às necessidades do ambiente ou do caso de uso específico. As métricas definidas nesta solução representam o requisito mínimo para o painel recomendado. 

O processo de implantação inclui as seguintes etapas:
+ Etapa 1: garantir que as instâncias do EC2 de destino têm as permissões do IAM necessárias.
+ Etapa 2: armazenar o arquivo de configuração recomendado do agente no Systems Manager Parameter Store.
+ Etapa 3: instalar o agente do CloudWatch em uma ou mais instâncias do EC2 usando uma pilha do CloudFormation.
+ Etapa 4: verificar se a configuração do agente foi realizada corretamente.

### Etapa 1: garantir que as instâncias do EC2 de destino têm as permissões do IAM necessárias
<a name="Solution-Tomcat-Agent-Step1"></a>

Você deve conceder permissão para o Systems Manager instalar e configurar o agente do CloudWatch. Além disso, é necessário conceder permissão para que o agente do CloudWatch publique a telemetria da instância do EC2 para o CloudWatch. Certifique-se de que o perfil do IAM anexado à instância tenha as políticas do IAM **CloudWatchAgentServerPolicy** e **AmazonSSMManagedInstanceCore** associadas.
+ Após criar o perfil, associe-o às suas instâncias do EC2. Siga as etapas apresentadas em [Launch an instance with an IAM role](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#launch-instance-with-role) para anexar um perfil durante a inicialização de uma nova instância do EC2. Para anexar um perfil a uma instância do EC2 existente, siga as etapas apresentadas em [Attach an IAM role to an instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#attach-iam-role).

### Etapa 2: armazenar o arquivo de configuração recomendado do agente do CloudWatch no Systems Manager Parameter Store
<a name="Solution-Tomcat-Agent-Step2"></a>

O Parameter Store simplifica a instalação do agente do CloudWatch em uma instância do EC2 ao armazenar e gerenciar os parâmetros de configuração de forma segura, eliminando a necessidade de valores com codificação rígida. Isso garante um processo de implantação mais seguro e flexível ao possibilitar o gerenciamento centralizado e as atualizações simplificadas para as configurações em diversas instâncias.

Use as etapas apresentadas a seguir para armazenar o arquivo de configuração recomendado do agente do CloudWatch como um parâmetro no Parameter Store.

**Como criar o arquivo de configuração do agente do CloudWatch como um parâmetro**

1. Abra o console AWS Systems Manager em [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. No painel de navegação, escolha **Gerenciamento de aplicações** e, em seguida, **Parameter Store**.

1. Siga as etapas apresentadas a seguir para criar um novo parâmetro para a configuração.

   1. Escolha **Criar Parâmetro**.

   1. Na caixa **Nome**, insira um nome que será usado para referenciar o arquivo de configuração do agente do CloudWatch nas etapas posteriores. Por exemplo, **AmazonCloudWatch-Tomcat-Configuration**.

   1. (Opcional) Na caixa **Descrição**, digite uma descrição para o parâmetro.

   1. Em **Camadas de parâmetros**, escolha **Padrão**. 

   1. Para **Tipo**, escolha **String**.

   1. Em **Tipo de dados**, selecione **texto**.

   1. Na caixa **Valor**, cole o bloco em JSON correspondente que foi listado em [Configuração do agente para hosts do Tomcat](#Solution-Agent-Configuration-Tomcat-Host). Certifique-se de personalizar o valor da dimensão de agrupamento e o número da porta, conforme descrito.

   1. Escolha **Criar Parâmetro**. 

### Etapa 3: instalar o agente do CloudWatch e aplicar a configuração usando um modelo do CloudFormation
<a name="Solution-Tomcat-Agent-Step3"></a>

É possível usar o AWS CloudFormation para instalar o agente e configurá-lo para usar a configuração do agente do CloudWatch criada nas etapas anteriores.

**Como instalar e configurar o agente do CloudWatch para esta solução**

1. Abra o assistente para **criar pilha de forma rápida** do CloudFormation usando este link: [https://console.aws.amazon.com/cloudformation/home?\$1/stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-1.0.0.json](https://console.aws.amazon.com/cloudformation/home?#/stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-1.0.0.json). 

1. Verifique se a região selecionada no console corresponde à região em que a workload do Tomcat está em execução.

1. Em **Nome da pilha**, insira um nome para identificar esta pilha, como **CWAgentInstallationStack**.

1. Na seção **Parâmetros**, especifique o seguinte:

   1. Para **CloudWatchAgentConfigSSM**, insira o nome do parâmetro do Systems Manager para a configuração do agente que você criou anteriormente, como **AmazonCloudWatch-Tomcat-Configuration**.

   1. Para selecionar as instâncias de destino, você tem duas opções.

      1. Para **InstanceIds**, especifique uma lista delimitada por vírgulas de IDs de instâncias nas quais você deseja instalar o agente do CloudWatch com esta configuração. É possível listar uma única instância ou várias instâncias.

      1. Se você estiver realizando implantações em grande escala, é possível especificar a **TagKey** e o **TagValue** correspondente para direcionar todas as instâncias do EC2 associadas a essa etiqueta e a esse valor. Se você especificar uma **TagKey**, é necessário especificar um **TagValue** correspondente. (Para um grupo do Auto Scaling, especifique **aws:autoscaling:groupName** para a **TagKey** e defina o nome do grupo do Auto Scaling para a **TagValue** para realizar a implantação em todas as instâncias do grupo do Auto Scaling.)

         Caso você especifique tanto os parâmetros **InstanceIds** quanto **TagKeys**, **InstanceIds** terá precedência, e as etiquetas serão desconsideradas.

1. Analise as configurações e, em seguida, escolha **Criar pilha**. 

Se você desejar editar o arquivo de modelo previamente para personalizá-lo, selecione a opção **Fazer upload de um arquivo de modelo** no **Assistente de criação de pilha** para fazer o upload do modelo editado. Para obter mais informações, consulte [Criar uma pilha no console do CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html). É possível usar o seguinte link para fazer download do modelo: [https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-1.0.0.json](https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-1.0.0.json). 

**nota**  
Após a conclusão desta etapa, este parâmetro do Systems Manager será associado aos agentes do CloudWatch em execução nas instâncias de destino. Isto significa que:  
Se o parâmetro do Systems Manager for excluído, o agente será interrompido.
Se o parâmetro do Systems Manager for editado, as alterações de configuração serão aplicadas automaticamente ao agente na frequência programada, que, por padrão, é de 30 dias.
Se você desejar aplicar imediatamente as alterações a este parâmetro do Systems Manager, você deverá executar esta etapa novamente. Para obter mais informações sobre as associações, consulte [Working with associations in Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/state-manager-associations.html).

### Etapa 4: verificar se a configuração do agente foi realizada corretamente
<a name="Solution-Tomcat-Agent-Step4"></a>

É possível verificar se o agente do CloudWatch está instalado ao seguir as etapas apresentadas em [Verificar se o atendente do CloudWatch está em execução](troubleshooting-CloudWatch-Agent.md#CloudWatch-Agent-troubleshooting-verify-running). Se o agente do CloudWatch não estiver instalado e em execução, certifique-se de que todas as configurações foram realizadas corretamente.
+ Certifique-se de ter anexado um perfil com as permissões adequadas para a instância do EC2, conforme descrito na [Etapa 1: garantir que as instâncias do EC2 de destino têm as permissões do IAM necessárias](#Solution-Tomcat-Agent-Step1).
+ Certifique-se de ter configurado corretamente o JSON para o parâmetro do Systems Manager. Siga as etapas em [Solução de problemas de instalação do atendente do CloudWatch com o CloudFormation](Install-CloudWatch-Agent-New-Instances-CloudFormation.md#CloudWatch-Agent-CloudFormation-troubleshooting).

Se todas as configurações estiverem corretas, as métricas do Tomcat serão publicadas no CloudWatch e estarão disponíveis para visualização. É possível verificar no console do CloudWatch para assegurar que as métricas estão sendo publicadas corretamente.

**Como verificar se as métricas do Tomcat estão sendo publicadas no CloudWatch**

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

1. Escolha **Métricas** e, depois, **Todas as métricas**.

1. Certifique-se de ter selecionado a região na qual a solução foi implantada, escolha **Namespaces personalizados** e, em seguida, selecione **CWAgent**.

1. Pesquise pelas métricas mencionadas na seção de configuração do agente deste documento, como `tomcat.errors`. Caso encontre resultados para essas métricas, isso significa que elas estão sendo publicadas no CloudWatch.

## Criação do painel da solução do Tomcat
<a name="Solution-Tomcat-Dashboard"></a>

Este painel exibe as métricas emitidas recentemente, mostrando o servidor de aplicações do Tomcat e a JVM subjacente. Este painel fornece uma visualização dos principais colaboradores relacionados à obtenção da integridade da workload do Tomcat. A visualização do principal colaborador exibe os dez principais colaboradores por widget de métrica. Isso permite a identificação de discrepâncias rapidamente. O painel também inclui uma visão geral do cluster ao agregar e apresentar métricas de todas as instâncias, disponibilizando um resumo de alto nível sobre a integridade geral e o estado operacional do cluster.

O painel da solução não exibe métricas do EC2. Para visualizar as métricas relacionadas ao EC2, é necessário usar o painel automático do EC2 para acessar as métricas fornecidas diretamente pelo EC2 e usar o painel do console do EC2 para consultar as métricas do EC2 que são coletadas pelo agente do CloudWatch. Para obter mais informações sobre os painéis automáticos para Serviços da AWS, consulte [Visualização de um painel do CloudWatch para um único serviço da AWS](CloudWatch_Automatic_Dashboards_Focus_Service.md).

Para criar o painel, é possível usar as seguintes opções:
+ Usar o console do CloudWatch para criar o painel.
+ Usar o console do AWS CloudFormation para implantar o painel.
+ Fazer o download do código de infraestrutura como código do AWS CloudFormation e integrá-lo como parte da automação de integração contínua (CI).

Ao usar o console do CloudWatch para criar um painel, é possível visualizá-lo previamente antes de criá-lo e incorrer em custos.

**nota**  
O painel criado com o CloudFormation nesta solução exibe métricas da região em que a solução está implantada. Certifique-se de que a pilha do CloudFormation seja criada na mesma região em que as métricas do Tomcat são publicadas.  
Se você especificou um namespace personalizado diferente de `CWAgent` na configuração do agente do CloudWatch, será necessário alterar o modelo do CloudFormation para o painel, substituindo `CWAgent` pelo namespace personalizado que você está usando.

**Como criar o painel usando o console do CloudWatch**
**nota**  
Atualmente, os painéis de soluções exibem métricas relacionadas à coleta de resíduos somente para o G1 Garbage Collector, que é o coletor padrão para as versões mais recentes do Java. Caso esteja usando um algoritmo de coleta de resíduos diferente, os widgets relacionados à coleta de resíduos estarão vazios. No entanto, você pode personalizar esses widgets alterando o modelo do painel do CloudFormation e aplicando o tipo de coleta de resíduos apropriado à dimensão do nome das métricas relacionadas à coleta de resíduos. Por exemplo, se você estiver usando a coleta de resíduos paralela, altere **name=\$1"G1 Young Generation\$1"** para **name=\$1"Parallel GC\$1"** da métrica de contagem de coleta de resíduos `jvm.gc.collections.count`.

1. Abra o console do CloudWatch e acesse **Criar painel** usando este link: [https://console.aws.amazon.com/cloudwatch/home?\$1dashboards?dashboardTemplate=ApacheTomcatOnEc2&referrer=os-catalog](https://console.aws.amazon.com/cloudwatch/home?#dashboards?dashboardTemplate=ApacheTomcatOnEc2&referrer=os-catalog). 

1. Verifique se a região selecionada no console corresponde à região em que a workload do Tomcat está em execução.

1. Insira o nome do painel e, em seguida, escolha **Criar painel**.

   Para diferenciar este painel de painéis semelhantes em outras regiões com facilidade, recomendamos incluir o nome da região no nome do painel, por exemplo, **TomcatDashboard-us-east-1**.

1. Visualize previamente o painel e escolha **Salvar** para criá-lo.

**Como criar o painel usando o CloudFormation**

1. Abra o assistente para **criar pilha de forma rápida** do CloudFormation usando este link: [https://console.aws.amazon.com/cloudformation/home?\$1/stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/Tomcat\$1EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json](https://console.aws.amazon.com/cloudformation/home?#/stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/Tomcat_EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json). 

1. Verifique se a região selecionada no console corresponde à região em que a workload do Tomcat está em execução.

1. Em **Nome da pilha**, insira um nome para identificar esta pilha, como **TomcatDashboard-us-east-1**.

1. Na seção **Parâmetros**, especifique o nome do painel no parâmetro **DashboardName**.

1. Para diferenciar este painel de painéis semelhantes em outras regiões com facilidade, recomendamos incluir o nome da região no nome do painel, por exemplo, **TomcatDashboard-us-east-1**.

1. Confirme as funcionalidades de acesso relacionadas às transformações na seção **Capacidades e transformações**. Lembre-se de que o CloudFormation não adiciona recursos do IAM.

1. Analise as configurações e, em seguida, escolha **Criar pilha**. 

1. Quando o status da pilha mostrar **CREATE\$1COMPLETE**, selecione a guia **Recursos** na pilha criada e, em seguida, escolha o link exibido em **ID físico** para acessar o painel. Como alternativa, é possível acessar o painel diretamente no console do CloudWatch ao selecionar **Painéis** no painel de navegação do console à esquerda e localizar o nome do painel na seção **Painéis personalizados**.

Se você desejar editar o arquivo de modelo para personalizá-lo para atender a uma necessidade específica, é possível usar a opção **Fazer upload de um arquivo de modelo** no **Assistente de criação de pilha** para fazer o upload do modelo editado. Para obter mais informações, consulte [Criar uma pilha no console do CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html). É possível usar este link para fazer download do modelo: [https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/Tomcat\$1EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json](https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/Tomcat_EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json). 

**nota**  
Atualmente, os painéis de soluções exibem métricas relacionadas à coleta de resíduos somente para o G1 Garbage Collector, que é o coletor padrão para as versões mais recentes do Java. Caso esteja usando um algoritmo de coleta de resíduos diferente, os widgets relacionados à coleta de resíduos estarão vazios. No entanto, você pode personalizar esses widgets alterando o modelo do painel do CloudFormation e aplicando o tipo de coleta de resíduos apropriado à dimensão do nome das métricas relacionadas à coleta de resíduos. Por exemplo, se você estiver usando a coleta de resíduos paralela, altere **name=\$1"G1 Young Generation\$1"** para **name=\$1"Parallel GC\$1"** da métrica de contagem de coleta de resíduos `jvm.gc.collections.count`. 

### Como começar a usar o painel de monitoramento do Tomcat
<a name="Solution-Tomcat-GetStarted"></a>

A seguir, apresentamos algumas tarefas que você pode realizar para explorar o novo painel do Tomcat. Essas tarefas permitem a validação do funcionamento correto do painel e fornecem uma experiência prática ao usá-lo para monitorar uma aplicação do Tomcat. À medida que realiza as tarefas, você se familiarizará com a navegação no painel e com a interpretação das métricas visualizadas.

**Uso das listas suspensas**

O painel fornece uma lista suspensa na parte superior que pode ser usada para filtrar e selecionar a aplicação específica do Tomcat que você deseja monitorar. Para exibir as métricas para uma aplicação específica do Tomcat, selecione o nome dessa aplicação na lista suspensa **Aplicação do Tomcat**. 

**Verificação da integridade da aplicação**

Na seção **Visão geral da aplicação**, localize os widgets de **Solicitações**, **Erros** e **Taxa de erros**. Esses widgets fornecem um resumo de alto nível da performance de tratamento de solicitações da aplicação. Procure por contagens ou taxas de erros anormalmente altas, pois isso pode indicar problemas que precisam ser investigados.

**Monitoramento do processamento de solicitações**

Na seção **Tempo de processamento de solicitações**, localize os widgets de **Tempo máximo** e de **Tempo total para o processamento de todas as solicitações**. Essas métricas ajudam a identificar possíveis gargalos de performance no processamento de solicitações. Procure por servidores com tempos máximos de processamento significativamente maiores em comparação aos outros. 

**Análise do tráfego de rede**

Na seção **Tráfego de rede**, localize os widgets de **Tráfego enviado** e de **Tráfego recebido**. Esses widgets apresentam a quantidade de dados enviados e recebidos pela aplicação por meio da rede. Níveis de tráfego inesperadamente elevados podem indicar possíveis problemas relacionados com a saturação de rede ou com a transferência ineficiente de dados.

**Investigação do uso de threads**

Na seção **Sessões e threads**, localize os widgets de **Contagem de threads em uso**, **Contagem de threads** e **Sessões**. Essas métricas fornecem insights sobre o gerenciamento de threads e as sessões com usuários ativos da aplicação. Procure por servidores com um número anormalmente elevado de threads ou sessões em uso, pois isso pode indicar possíveis restrições de recursos.

# Solução do CloudWatch: integridade do Amazon EC2
<a name="Solution-EC2-Health"></a>

Esta solução auxilia na configuração da coleta de métricas prontas para uso com agentes do CloudWatch para workloads que estão sendo executadas em instâncias do EC2. Além disso, a solução ajuda na configuração de um painel do CloudWatch configurado previamente.

**Topics**
+ [Requisitos](#Solution-EC2-Health-Requirements)
+ [Benefícios](#Solution-EC2-Health-Benefits)
+ [Custos](#Solution-EC2-Health-Costs)
+ [Configuração do agente do CloudWatch para esta solução](#Solution-EC2-Health-Agent-Config)
+ [Implantação do agente para a sua solução](#Solution-EC2-Health-Deploy)
+ [Criação do painel da solução de integridade do EC2](#Solution-EC2-Health-Dashboard)
+ [Como começar a usar o painel da solução de integridade do EC2](#Solution-EC2-Health-Dashboard-Usage)

## Requisitos
<a name="Solution-EC2-Health-Requirements"></a>

Esta solução é aplicável nas seguintes condições:
+ Computação: Amazon EC2
+ Plataforma: Linux e macOS
+ Fornecimento de suporte para até 500 instâncias do EC2 em uma Região da AWS específica
+ Versão mais recente do agente do CloudWatch
+ SSM Agent instalado na instância do EC2
**nota**  
O AWS Systems Manager (SSM Agent) está instalado previamente em algumas [imagens de máquinas da Amazon (AMIs)](https://docs.aws.amazon.com/systems-manager/latest/userguide/ami-preinstalled-agent.html) fornecidas pela AWS e por entidades externas confiáveis. Se o agente não estiver instalado, você poderá instalá-lo manualmente usando o procedimento adequado para o seu tipo de sistema operacional.  
[Instalar e desinstalar o SSM Agent manualmente em instâncias do EC2 para Linux](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-linux.html)
[Instalar e desinstalar o SSM Agent manualmente em instâncias do EC2 para macOS](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-macos.html)
[Instalar e desinstalar o SSM Agent manualmente em instâncias do EC2 para Windows Server](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-windows.html)

## Benefícios
<a name="Solution-EC2-Health-Benefits"></a>

A solução oferece monitoramento de servidores do EC2 usando o agente do CloudWatch, que fornece métricas adicionais em nível de sistema, complementando as métricas padrão do namespace do EC2 para os seguintes casos de uso:
+ Detecção de problemas de performance da CPU e restrições de recursos.
+ Monitoramento da utilização do disco e da capacidade de armazenamento em diferentes discos nas instâncias do EC2.
+ Rastreamento de padrões de uso de memória e possíveis vazamentos de memória.
+ Análise das operações de E/S e de seu impacto na performance geral.
+ Observação dos padrões de tráfego de rede e de possíveis anomalias.

A seguir, apresentamos as principais vantagens da solução:
+ Automatiza a coleta de métricas para as instâncias do EC2, eliminando a instrumentação manual.
+ Fornece um painel do CloudWatch consolidado e configurado previamente para as métricas da instância do EC2. O painel gerenciará automaticamente as métricas das novas instâncias do EC2 que foram configuradas usando a solução, mesmo que essas métricas não estejam disponíveis no momento de criação do painel. Além disso, o painel permite que você realize a observação de instâncias do EC2 gerenciadas usando os grupos do Auto Scaling.

A imagem apresentada a seguir é um exemplo do painel para esta solução.

![\[Exemplo do painel de integridade do EC2\]](http://docs.aws.amazon.com/pt_br/AmazonCloudWatch/latest/monitoring/images/EC2HealthDashboard.png)


## Custos
<a name="Solution-EC2-Health-Costs"></a>

Esta solução cria e usa recursos em sua conta. A cobrança será realizada com base no uso padrão, que inclui o seguinte:
+ Todas as métricas coletadas pelo agente do CloudWatch são cobradas como métricas personalizadas. O número de métricas usadas por esta solução depende do número de hosts do EC2.

  O número total de métricas do agente do CloudWatch depende da configuração dos discos. Ao excluir as métricas de disco e de diskio, a solução publica seis métricas. O número de métricas de disco (`disk_used_percent` e `disk_inodes_free`) depende da contagem de dimensões `device/fstype/path`. A métrica de diskio (`diskio_io_time`) depende da contagem de dimensões `name`. Por exemplo, uma única instância t2.micro com configurações padrão, conforme a experiência do console do EC2, produz um total de 22 métricas do agente do CloudWatch: 4 métricas de CPU, 12 métricas de disco, 4 métricas de diskio, 1 métrica de memória e 1 métrica de troca. As métricas fornecidas, como `AWS/EC2`, são disponibilizadas gratuitamente.
+ Um painel personalizado.
+ As operações da API solicitadas pelo agente do CloudWatch para publicar as métricas. Com a configuração padrão para esta solução, o agente do CloudWatch chama a operação **PutMetricData** uma vez por minuto. Isso significa que a API **PutMetricData** será chamada `30*24*60=43,200` em um mês com 30 dias para cada host do EC2.

Para obter mais informações sobre os preços do CloudWatch, consulte [Preço do Amazon CloudWatch](https://aws.amazon.com/cloudwatch/pricing/).

A calculadora de preços pode ajudar a estimar os custos mensais aproximados para o uso desta solução.

**Como usar a calculadora de preços para estimar os custos mensais da solução**

1. Abra a [calculadora de preços do Amazon CloudWatch](https://calculator.aws/#/createCalculator/CloudWatch).

1. Na seção **Métricas**, em **Número de métricas**, insira **(6 \$1 total count of disk and diskio metrics per EC2 host as described above) \$1 number of EC2 instances configured for this solution**.

1. Na seção **APIs**, em **Número de solicitações de API**, insira **43200 \$1 number of EC2 instances configured for this solution**.

1. Por padrão, a solução executa uma operação **PutMetricData** a cada minuto para cada host do EC2.

1. Na seção **Painéis e alarmes**, em **Número de painéis**, insira **1**.

1. É possível visualizar os custos mensais estimados na parte inferior da calculadora de preços.

## Configuração do agente do CloudWatch para esta solução
<a name="Solution-EC2-Health-Agent-Config"></a>

O agente do CloudWatch é um software que opera de maneira contínua e autônoma em seus servidores e em ambientes com contêineres. Ele coleta métricas, logs e rastreamentos da infraestrutura e das aplicações e os envia para o CloudWatch e para o X-Ray.

Para obter mais informações sobre o agente do CloudWatch, consulte [Coletar métricas, registros e rastreamentos com o agente do CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html).

Nesta solução, a configuração do agente coleta um conjunto de métricas para ajudar você a começar a monitorar e realizar a observabilidade das instâncias do EC2. O agente do CloudWatch pode ser configurado para coletar mais métricas do EC2 do que as que são exibidas por padrão no painel. Para obter uma lista de métricas do Amazon EC2, consulte [Métricas coletadas pelo atendente do CloudWatch em instâncias do Linux e macOS](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/metrics-collected-by-CloudWatch-agent.html#linux-metrics-enabled-by-CloudWatch-agent). Para obter informações sobre as métricas coletadas em instâncias do Windows, consulte [Métricas coletadas pelo atendente do CloudWatch em instâncias do Windows Server](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/metrics-collected-by-CloudWatch-agent.html#windows-metrics-enabled-by-CloudWatch-agent).

### Configuração do agente para a solução de integridade do EC2
<a name="Solution-EC2-Health-Agent-Config-Details"></a>

As métricas coletadas pelo agente são definidas na configuração do agente. A solução fornece configurações do agente para a coleta das métricas recomendadas com dimensões adequadas para o painel da solução.

As etapas para a implantação da solução são descritas posteriormente em [Implantação do agente para a sua solução](#Solution-EC2-Health-Deploy). As informações apresentadas a seguir são destinadas a ajudar você a compreender como personalizar a configuração do agente para o seu ambiente.

**nota**  
Se uma instância do EC2 não fizer parte de um grupo do Auto Scaling, o agente do CloudWatch descartará completamente a dimensão `AutoScalingGroupName`. Esse comportamento ajuda a evitar a utilização de nomes de dimensões com valores nulos ou em branco. Cada widget de métrica incluído no painel da solução é projetado para buscar métricas que considerem a presença ou ausência da dimensão `AutoScalingGroup`. Isso ajuda a garantir que todas as instâncias do EC2 nas quais a solução é aplicada sejam compatíveis com o mesmo painel.

Caso deseje realizar modificações na configuração do agente, será necessário aplicar as mesmas alterações ao painel associado à solução. Por exemplo, se você decidir omitir a dimensão ImageId, essa mesma dimensão deverá ser removida da expressão de busca de métricas usada nos widgets do painel.

### Configuração do agente para as instâncias do EC2
<a name="Solution-EC2-Health-Agent-Config-Instance"></a>

Use a configuração do agente do CloudWatch apresentada a seguir nas instâncias do Amazon EC2 em que as workloads estão implantadas.

```
{
    "agent": {
      "metrics_collection_interval": 60,
      "run_as_user": "cwagent"
    },
    "metrics": {
      "append_dimensions": {
        "InstanceId": "${aws:InstanceId}",
        "InstanceType": "${aws:InstanceType}",
        "ImageId": "${aws:ImageId}",
        "AutoScalingGroupName": "${aws:AutoScalingGroupName}"
      },
      "metrics_collected": {
        "cpu": {
          "measurement": [
            "cpu_usage_idle",
             "cpu_usage_iowait",
             "cpu_usage_user",
             "cpu_usage_system"
          ],
          "totalcpu": true
        },
        "disk": {
          "measurement": [
            "used_percent",
            "inodes_free"
          ],
          "resources": [
            "*"
          ],
          "dimensions": [
            ["device", "fstype", "path"]
          ]
        },
        "diskio": {
           "measurement": [
             "io_time"
           ],
           "resources": [
             "*"
           ]
          },
        "mem": {
          "measurement": [
            "used_percent"
          ]
        },
        "swap": {
          "measurement": [
            "used_percent"
          ]
        }
      }
    }
  }
```

## Implantação do agente para a sua solução
<a name="Solution-EC2-Health-Deploy"></a>

Existem várias abordagens para instalar o agente do CloudWatch, dependendo do caso de uso. Recomendamos o uso do Systems Manager para esta solução. Ele fornece uma experiência no console e simplifica o gerenciamento de uma frota de servidores gerenciados em uma única conta da AWS. As instruções apresentadas nesta seção usam o Systems Manager e são destinadas para situações em que o agente do CloudWatch não está em execução com as configurações existentes. É possível verificar se o agente do CloudWatch está em execução ao seguir as etapas apresentadas em [Verificar se o atendente do CloudWatch está em execução](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/troubleshooting-CloudWatch-Agent.html#CloudWatch-Agent-troubleshooting-verify-running).

Se você já estiver executando o agente do CloudWatch nos hosts do EC2 e gerenciando as configurações do agente, pode pular as instruções apresentadas nesta seção e usar o mecanismo de implantação existente para atualizar a configuração. Certifique-se de combinar a configuração do agente de integridade do EC2 com a configuração do agente existente e, em seguida, implante a configuração combinada. Se você estiver usando o Systems Manager para armazenar e gerenciar a configuração do agente do CloudWatch, poderá combinar a configuração com o valor do parâmetro existente. Para obter mais informações, consulte [Managing CloudWatch agent configuration files](https://docs.aws.amazon.com/prescriptive-guidance/latest/implementing-logging-monitoring-cloudwatch/create-store-cloudwatch-configurations.html).

**nota**  
Ao usar o Systems Manager para implantar as configurações do agente do CloudWatch apresentadas a seguir, qualquer configuração existente do agente do CloudWatch nas suas instâncias do EC2 será substituída ou sobrescrita. É possível modificar essa configuração para atender às necessidades do ambiente ou do caso de uso específico. As métricas definidas na configuração representam o requisito mínimo necessário para o painel fornecido pela solução.

O processo de implantação inclui as seguintes etapas:
+ Etapa 1: garantir que as instâncias do EC2 de destino têm as permissões do IAM necessárias.
+ Etapa 2: armazenar o arquivo de configuração recomendado do agente no Systems Manager Parameter Store.
+ Etapa 3: instalar o agente do CloudWatch em uma ou mais instâncias do EC2 usando uma pilha do CloudFormation.
+ Etapa 4: verificar se a configuração do agente foi realizada corretamente.

### Etapa 1: garantir que as instâncias do EC2 de destino têm as permissões do IAM necessárias
<a name="Solution-EC2-Health-Deploy-Step1"></a>

Você deve conceder permissão para o Systems Manager instalar e configurar o agente do CloudWatch. Além disso, é necessário conceder permissão para que o agente do CloudWatch publique a telemetria da instância do EC2 para o CloudWatch. Certifique-se de que o perfil do IAM anexado à instância tenha as políticas do IAM **CloudWatchAgentServerPolicy** e **AmazonSSMManagedInstanceCore** associadas.
+ Após criar o perfil, associe-o às suas instâncias do EC2. Para anexar um perfil a uma instância do EC2, siga as etapas apresentadas em [Attach an IAM role to an instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/attach-iam-role.html).

### Etapa 2: armazenar o arquivo de configuração recomendado do agente do CloudWatch no Systems Manager Parameter Store
<a name="Solution-EC2-Health-Deploy-Step2"></a>

O Parameter Store simplifica a instalação do agente do CloudWatch em uma instância do EC2 ao armazenar e gerenciar os parâmetros de configuração de forma segura, eliminando a necessidade de valores com codificação rígida. Isso garante um processo de implantação mais seguro e flexível ao possibilitar o gerenciamento centralizado e as atualizações simplificadas para as configurações em diversas instâncias.

Use as etapas apresentadas a seguir para armazenar o arquivo de configuração recomendado do agente do CloudWatch como um parâmetro no Parameter Store. 

**Como criar o arquivo de configuração do agente do CloudWatch como um parâmetro**

1. Abra o console AWS Systems Manager em [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Verifique se a região selecionada no console corresponde à região em que as instâncias do EC2 estão em execução.

1. No painel de navegação, escolha **Gerenciamento de aplicações** e, em seguida, **Parameter Store**.

1. Siga as etapas apresentadas a seguir para criar um novo parâmetro para a configuração.

   1. Escolha **Criar Parâmetro**.

   1. Na caixa **Nome**, insira um nome que será usado para referenciar o arquivo de configuração do agente do CloudWatch nas etapas posteriores. Por exemplo, **AmazonCloudWatch-EC2Health-Configuration**.

   1. (Opcional) Na caixa **Descrição**, digite uma descrição para o parâmetro.

   1. Em **Camadas de parâmetros**, escolha **Padrão**.

   1. Para **Tipo**, escolha **String**.

   1. Em **Tipo de dados**, selecione **texto**.

   1. Na caixa **Valor**, cole o arquivo em JSON de configuração do agente fornecido anteriormente neste documento.

   1. Escolha **Criar Parâmetro**.

### Etapa 3: instalar o agente do CloudWatch e aplicar a configuração usando um modelo do CloudFormation
<a name="Solution-EC2-Health-Deploy-Step3"></a>

É possível usar o CloudFormation para instalar o agente e configurá-lo para usar a configuração do agente do CloudWatch criada nas etapas anteriores.

**Como instalar e configurar o agente do CloudWatch para esta solução**

1. Abra o assistente para **criar pilha de forma rápida** do CloudFormation usando este link: [https://console.aws.amazon.com/cloudformation/home?\$1/stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-1.0.0.json](https://console.aws.amazon.com/cloudformation/home?#/stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-1.0.0.json).

1. Verifique se a região selecionada no console corresponde à região em que as instâncias do EC2 estão em execução.

1. Em **Nome da pilha**, insira um nome para identificar esta pilha, como **CWAgentInstallationStack**.

1. Na seção **Parâmetros**, especifique o seguinte:

   1. Para **CloudWatchAgentConfigSSM**, insira o nome do parâmetro do Systems Manager para a configuração do agente que você criou anteriormente, como **AmazonCloudWatch-EC2Health-Configuration**.

   1. Para selecionar as instâncias de destino, você tem duas opções.

      1. Para **InstanceIds**, especifique uma lista delimitada por vírgulas de IDs de instâncias nas quais você deseja instalar o agente do CloudWatch com esta configuração. É possível listar uma única instância ou várias instâncias.

      1. Se você estiver realizando implantações em grande escala, é possível especificar a **TagKey** e o **TagValue** correspondente para direcionar todas as instâncias do EC2 associadas a essa etiqueta e a esse valor. Se você especificar uma **TagKey**, é necessário especificar um **TagValue** correspondente. (Para um grupo do Auto Scaling, especifique **aws:autoscaling:groupName** para a **TagKey** e defina o nome do grupo do Auto Scaling para a **TagValue** para realizar a implantação em todas as instâncias do grupo do Auto Scaling.)

      Caso você especifique tanto os parâmetros **InstanceIds** quanto **TagKeys**, **InstanceIds** terá precedência, e as etiquetas serão desconsideradas.

1. Analise as configurações e, em seguida, escolha **Criar pilha**.

Se você desejar editar o arquivo de modelo previamente para personalizá-lo, selecione a opção **Fazer upload de um arquivo de modelo** no **Assistente de criação de pilha** para fazer o upload do modelo editado. Para obter mais informações, consulte [Criar uma pilha no console do CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html). É possível usar o seguinte link para fazer download do modelo: [https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-1.0.0.json](https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-1.0.0.json).

**nota**  
Após a conclusão desta etapa, este parâmetro do Systems Manager será associado aos agentes do CloudWatch em execução nas instâncias de destino. Isto significa que:  
Se o parâmetro do Systems Manager for excluído, o agente será interrompido.
Se o parâmetro do Systems Manager for editado, as alterações de configuração serão aplicadas automaticamente ao agente na frequência programada, que, por padrão, é de 30 dias.
Se você desejar aplicar imediatamente as alterações a este parâmetro do Systems Manager, você deverá executar esta etapa novamente. Para obter mais informações sobre as associações, consulte [Working with associations in AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/state-manager-associations.html).

### Etapa 4: verificar se a configuração do agente foi realizada corretamente
<a name="Solution-EC2-Health-Deploy-Step4"></a>

É possível verificar se o agente do CloudWatch está instalado ao seguir as etapas apresentadas em [Verificar se o atendente do CloudWatch está em execução](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/troubleshooting-CloudWatch-Agent.html#CloudWatch-Agent-troubleshooting-verify-running). Se o agente do CloudWatch não estiver instalado e em execução, certifique-se de que todas as configurações foram realizadas corretamente.
+ Certifique-se de ter anexado um perfil com as permissões adequadas para a instância do EC2, conforme descrito na [Etapa 1: garantir que as instâncias do EC2 de destino têm as permissões do IAM necessárias](#Solution-EC2-Health-Deploy-Step1).
+ Certifique-se de ter configurado corretamente o JSON para o parâmetro do Systems Manager. Siga as etapas apresentadas em [Solução de problemas de instalação do atendente do CloudWatch com o CloudFormation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent-New-Instances-CloudFormation.html#CloudWatch-Agent-CloudFormation-troubleshooting).

**Como verificar se as métricas de integridade do EC2 estão sendo publicadas no CloudWatch**

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

1. Escolha **Métricas** e, depois, **Todas as métricas**.

1. Certifique-se de ter selecionado a região na qual a solução foi implantada, escolha **Namespaces personalizados** e, em seguida, selecione **CWAgent**.

1. Pesquise pelas métricas mencionadas na seção de configuração do agente deste documento, como `mem_used_percent`. Caso encontre resultados para essas métricas, isso significa que elas estão sendo publicadas no CloudWatch.

## Criação do painel da solução de integridade do EC2
<a name="Solution-EC2-Health-Dashboard"></a>

Este painel exibe as métricas geradas recentemente, apresentando as métricas de integridade do EC2. O painel oferece uma visualização dos principais colaboradores para a obtenção de integridade das instâncias do EC2 em uma única região. A visualização do principal colaborador exibe os dez principais colaboradores por widget de métrica. Isso permite a identificação de discrepâncias rapidamente.

Para criar o painel, é possível usar as seguintes opções:
+ Usar o console do CloudWatch para criar o painel.
+ Usar o console do AWS CloudFormation para implantar o painel.
+ Fazer o download do código de infraestrutura como código do AWS CloudFormation e integrá-lo como parte da automação de integração contínua (CI).

Ao usar o console do CloudWatch para criar um painel, é possível visualizá-lo previamente antes de criá-lo e incorrer em custos.

**nota**  
O painel criado com o CloudFormation nesta solução exibe métricas da região em que a solução está implantada. Certifique-se de que a pilha do CloudFormation seja criada na mesma região em que as métricas do EC2 são publicadas.  
Se você especificou um namespace personalizado diferente de `CWAgent` na configuração do agente do CloudWatch, será necessário alterar o modelo do CloudFormation para o painel, substituindo `CWAgent` pelo namespace personalizado que você está usando.

**Como criar o painel usando o console do CloudWatch**

1. Abra o console do CloudWatch e acesse **Criar painel** usando este link: [https://console.aws.amazon.com/cloudwatch/home?\$1dashboards?dashboardTemplate=Ec2LinuxMacOsHealth&referrer=os-catalog](https://console.aws.amazon.com/cloudwatch/home?#dashboards?dashboardTemplate=Ec2LinuxMacOsHealth&referrer=os-catalog). 

1. Verifique se a região selecionada no console corresponde à região em que as instâncias do EC2 estão em execução.

1. Insira o nome do painel e, em seguida, escolha **Criar painel**.

   Para diferenciar este painel de painéis semelhantes em outras regiões com facilidade, recomendamos incluir o nome da região no nome do painel, por exemplo, **EC2HealthDashboard-us-east-1**.

1. Visualize previamente o painel e escolha **Salvar** para criá-lo.

**Como criar o painel usando o CloudFormation**

1. Abra o assistente para **criar pilha de forma rápida** do CloudFormation usando este link: [https://console.aws.amazon.com/cloudformation/home?\$1/stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/EC2\$1Health/CloudWatch/CFN/v1.0.0/dashboard-template-linux-macos-1.0.0.json ](https://console.aws.amazon.com/cloudformation/home?#/stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/EC2_Health/CloudWatch/CFN/v1.0.0/dashboard-template-linux-macos-1.0.0.json). 

1. Verifique se a região selecionada no console corresponde à região em que as instâncias do EC2 estão em execução.

1. Em **Nome da pilha**, insira um nome para identificar esta pilha, como `EC2HealthDashboardStack`.

1. Na seção **Parâmetros**, especifique o nome do painel no parâmetro **DashboardName**.

   Para diferenciar este painel de painéis semelhantes em outras regiões com facilidade, recomendamos incluir o nome da região no nome do painel, por exemplo, **EC2HealthDashboard-us-east-1**.

1. Confirme as funcionalidades de acesso relacionadas às transformações na seção **Capacidades e transformações**. Lembre-se de que o CloudFormation não adiciona recursos do IAM.

1. Analise as configurações e, em seguida, escolha **Criar pilha**.

1. Quando o status da pilha mostrar **CREATE\$1COMPLETE**, selecione a guia **Recursos** na pilha criada e, em seguida, escolha o link exibido em **ID físico** para acessar o painel. Como alternativa, é possível acessar o painel diretamente no console do CloudWatch ao selecionar **Painéis** no painel de navegação do console à esquerda e localizar o nome do painel na seção **Painéis personalizados**.

Se você desejar editar o arquivo de modelo para personalizá-lo para atender a uma necessidade específica, é possível usar a opção **Fazer upload de um arquivo de modelo** no **Assistente de criação de pilha** para fazer o upload do modelo editado. Para obter mais informações, consulte [Criar uma pilha no console do CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html). É possível usar este link para fazer download do modelo: [https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/EC2\$1Health/CloudWatch/CFN/v1.0.0/dashboard-template-linux-macos-1.0.0.json](https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/EC2_Health/CloudWatch/CFN/v1.0.0/dashboard-template-linux-macos-1.0.0.json). 

## Como começar a usar o painel da solução de integridade do EC2
<a name="Solution-EC2-Health-Dashboard-Usage"></a>

A seguir, apresentamos algumas tarefas que você pode realizar para explorar o novo painel de monitoramento do EC2. Essas tarefas permitem a validação do funcionamento correto do painel e fornecem uma experiência prática ao usá-lo para monitorar as instâncias do EC2. À medida que realiza as tarefas, você se familiarizará com a navegação no painel e com a interpretação das métricas visualizadas.

Monitoramento das diversas métricas de utilização da CPU  
Na seção **CPU**, examine a matriz de métricas de uso da CPU. Essas métricas fornecem insights sobre como os recursos da CPU estão sendo utilizados em diferentes atividades, como processos do usuário, tarefas do sistema e operações de E/S. Procure por instâncias com utilização consistentemente elevada ou padrões incomuns, pois isso pode indicar a necessidade de ajuste de escala ou de otimização.

Análise da utilização do disco em diferentes dispositivos  
Acesse a seção **Disco** para encontrar as métricas de uso de armazenamento e de disponibilidade de inodes. Essas métricas ajudam a identificar instâncias que estão em execução com pouco espaço de armazenamento ou com poucos recursos do sistema de arquivos. Preste atenção a qualquer instância que apresente níveis elevados de uso de disco, pois isso pode causar problemas de performance ou interrupções no serviço.

Investigação dos padrões de utilização da memória  
Na seção **Memória**, observe o gráfico que traça a utilização da memória ao longo do tempo. Este gráfico mostra a quantidade de memória disponível que está sendo usada por cada instância. Procure por padrões ou picos no uso da memória que possam estar associados a horários ou a eventos específicos. Uma utilização elevada da memória pode indicar a necessidade de, por exemplo, redimensionamento ou otimização da aplicação.

Correlação de padrões entre as principais métricas de utilização  
Compare e preste atenção nos padrões de utilização relacionados. Por exemplo, uma workload que executa um processo de alternância de logs pode apresentar aumentos periódicos na utilização da **CPU** e da **memória**, acompanhados por uma diminuição subsequente na utilização do **disco**.

Inspeção da atividade da rede  
Na seção **Rede**, examine as métricas de tráfego de rede de entrada e de saída, tanto em termos de volume de dados quanto de contagem de pacotes. Essas métricas fornecem insights sobre a atividade da rede para as instâncias do EC2. Atente-se para a ocorrência de picos regulares ou anômalos no tráfego de rede, ou desequilíbrios entre dados de entrada e de saída.