

# 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.