

# Coletar métricas de processo com o plugin procstat
<a name="CloudWatch-Agent-procstat-process-metrics"></a>

 O plugin *procstat* permite coletar métricas de processos individuais. O plug-in é compatível com servidores do Linux e com os que executam versões compatíveis com o Windows Server. Esta seção descreve como configurar o agente do CloudWatch para o plug-in procstat e visualizar as métricas importadas pelo agente do CloudWatch. A seção lista as métricas coletadas pelo plug-in procstat. 

**nota**  
Não há suporte para o plug-in `procstat` com o tipo de inicialização do Fargate em ambientes do Amazon ECS. 

**Topics**
+ [Configuração do agente do CloudWatch para procstat](#CloudWatch-Agent-procstat-configuration)
+ [Métricas coletadas pelo procstat](#CloudWatch-Agent-procstat-process-metrics-collected)
+ [Visualizar métricas de processo importadas pelo atendente do CloudWatch](#CloudWatch-view-procstat-metrics)

## Configuração do agente do CloudWatch para procstat
<a name="CloudWatch-Agent-procstat-configuration"></a>

Para usar o plugin procstat, adicione uma seção `procstat` à seção `metrics_collected` do arquivo de configuração do atendente do CloudWatch. Existem três maneiras de especificar os processos a serem monitorados. Use apenas um desses métodos, embora possa usar esse método para especificar um ou mais processos a serem monitorados.
+ `pid_file`: seleciona processos pelos nomes dos arquivos de Process Identification Number (PID – Número de identificação do processo) criados. 
+ `exe`: seleciona os processos que tenham nomes de processos correspondentes à string especificada usando regras de correspondência de expressão regular. A correspondência é uma correspondência do tipo “contém”, o que significa que, se você especificar `agent` como o termo a ser correspondido, os processos com nomes como `cloudwatchagent` corresponderão ao termo. Para obter mais informações, consulte [Sintaxe](https://github.com/google/re2/wiki/Syntax).
+ `pattern`: seleciona processos pelas linhas de comando usadas para iniciar os processos. Todos os processos são selecionados que tenham linhas de comando correspondentes à string especificada usando regras de correspondência de expressão regular. Toda a linha de comando é verificada, inclusive opções e parâmetros usados com o comando.

   A correspondência é uma correspondência do tipo “contém”, o que significa que, se você especificar `-c` como o termo a ser correspondido, os processos com parâmetros como `-config` corresponderão ao termo. 

O atendente do CloudWatch só usa um desses métodos, mesmo se você incluir mais de uma das seções acima. Se você especificar mais de uma seção, o atendente do CloudWatch usará a seção `pid_file` se estiver presente. Do contrário, ele usa a seção `exe`.

Em servidores Linux, as strings especificadas em uma seção `exe` ou `pattern` são avaliadas como expressões regulares. Em servidores nos quais o Windows Server esteja em execução, essas strings são avaliadas como consultas WMI. Um exemplo seria `pattern: "%apache%"`. Para obter mais informações, consulte [Operador LIKE](https://docs.microsoft.com/en-us/windows/desktop/WmiSdk/like-operator).

Independentemente do método, inclua um parâmetro `metrics_collection_interval` opcional, que especifica a frequência em segundos para coletar essas métricas. Se você omitir esse parâmetro, o valor padrão de 60 segundos será usado.

Nos exemplos nas seções a seguir, a seção `procstat` é a única seção incluída na seção `metrics_collected` do arquivo de configuração do atendente. Os arquivos de configuração também podem incluir outras seções em `metrics_collected`. Para obter mais informações, consulte [Criar ou editar manualmente o arquivo de configuração do atendente do CloudWatch](CloudWatch-Agent-Configuration-File-Details.md).

### Configuração com pid\_file
<a name="CloudWatch-Agent-procstat-configuration-pidfile"></a>

A seção `procstat` do exemplo a seguir monitora os processos que criam os arquivos PID `example1.pid` e `example2.pid`. As métricas diferentes são coletadas de cada processo. As métricas coletadas do processo que cria `example2.pid` são coletadas a cada 10 segundos, e as métricas coletadas do processo `example1.pid` são coletadas a cada 60 segundos, o valor padrão. 

```
{
    "metrics": {
        "metrics_collected": {
            "procstat": [
                {
                    "pid_file": "/var/run/example1.pid",
                    "measurement": [
                        "cpu_usage",
                        "memory_rss"
                    ]
                },
                {
                    "pid_file": "/var/run/example2.pid",
                    "measurement": [
                        "read_bytes",
                        "read_count",
                        "write_bytes"
                    ],
                    "metrics_collection_interval": 10
                }
            ]
        }
    }
}
```

### Configurar com exe
<a name="CloudWatch-Agent-procstat-configuration-exe"></a>

A seção `procstat` do exemplo a seguir monitora todos os processos com nomes correspondentes às strings `agent` ou `plugin`. As mesmas métricas são coletadas de cada processo. 

```
{
    "metrics": {
        "metrics_collected": {
            "procstat": [
                {
                    "exe": "agent",
                    "measurement": [
                        "cpu_time",
                        "cpu_time_system",
                        "cpu_time_user"
                    ]
                },
                {
                    "exe": "plugin",
                    "measurement": [
                        "cpu_time",
                        "cpu_time_system",
                        "cpu_time_user"
                    ]
                }
            ]
        }
    }
}
```

### Configurar com padrão
<a name="CloudWatch-Agent-procstat-configuration-pattern"></a>

A seção `procstat` do exemplo a seguir monitora todos os processos com linhas de comando correspondentes às strings `config` ou `-c`. As mesmas métricas são coletadas de cada processo. 

```
{
    "metrics": {
        "metrics_collected": {
            "procstat": [
                {
                    "pattern": "config",
                    "measurement": [
                        "rlimit_memory_data_hard",
                        "rlimit_memory_data_soft",
                        "rlimit_memory_stack_hard",
                        "rlimit_memory_stack_soft"
                    ]
                },
                {
                    "pattern": "-c",
                    "measurement": [
                        "rlimit_memory_data_hard",
                        "rlimit_memory_data_soft",
                        "rlimit_memory_stack_hard",
                        "rlimit_memory_stack_soft"
                    ]
                }
            ]
        }
    }
}
```

## Métricas coletadas pelo procstat
<a name="CloudWatch-Agent-procstat-process-metrics-collected"></a>

A tabela a seguir lista as métricas que é possível coletar com o plugin `procstat`

O atendente do CloudWatch adiciona `procstat` ao início dos nomes de métrica a seguir. Há uma sintaxe diferente dependendo de ter sido coletada de um servidor Linux ou de um servidor no qual o Windows Server esteja em execução. Por exemplo, a métrica `cpu_time` é exibida como `procstat_cpu_time` quando coletada do Linux e como `procstat cpu_time` quando coletada do Windows Server.


| Nome da métrica | Disponível em | Descrição | 
| --- | --- | --- | 
| `cpu_time` | Linux | O tempo em que o processo usa a CPU. Essa métrica é medida em centésimos de segundo.<br />Unidade: Contagem | 
| `cpu_time_guest` | Linux | A quantidade de tempo em que o processo permanece em modo de usuário. Essa métrica é medida em centésimos de segundo.<br />Tipo: float<br />Unidade: nenhuma | 
| `cpu_time_guest_nice` | Linux | A quantidade de tempo em que o processo está sendo executado em um ambiente “nice guest”. Essa métrica é medida em centésimos de segundo.<br />Tipo: float<br />Unidade: nenhuma | 
| `cpu_time_idle` | Linux | A quantidade de tempo em que o processo permanece em modo ocioso. Essa métrica é medida em centésimos de segundo.<br />Tipo: float<br />Unidade: nenhuma | 
| `cpu_time_iowait` | Linux | A quantidade de tempo em que o processo está aguardando a conclusão de operações de entrada/saída. Essa métrica é medida em centésimos de segundo.<br />Tipo: float<br />Unidade: nenhuma | 
| `cpu_time_irq` | Linux | A quantidade de tempo em que o processo está atendendo a interrupções. Essa métrica é medida em centésimos de segundo.<br />Tipo: float<br />Unidade: nenhuma | 
| `cpu_time_nice` | Linux | A quantidade de tempo em que o processo permanece em modo nice. Essa métrica é medida em centésimos de segundo.<br />Tipo: float<br />Unidade: nenhuma | 
| `cpu_time_soft_irq` | Linux | A quantidade de tempo em que o processo está atendendo a interrupções de software. Essa métrica é medida em centésimos de segundo.<br />Tipo: float<br />Unidade: nenhuma | 
| `cpu_time_steal` | Linux | A quantidade de tempo gasto executando em outros sistemas operacionais quando executado em um ambiente virtualizado. Essa métrica é medida em centésimos de segundo.<br />Tipo: float<br />Unidade: nenhuma | 
| `cpu_time_stolen` | Linux, Windows Server | A quantidade de tempo em que o processo está em *tempo roubado*, que é o tempo gasto em outros sistemas operacionais em um ambiente virtualizado. Essa métrica é medida em centésimos de segundo.<br />Tipo: float<br />Unidade: nenhuma | 
| `cpu_time_system` | Linux, Windows Server, macOS | O tempo em que o processo permanece em modo de sistema. Essa métrica é medida em centésimos de segundo.<br />Tipo: float<br />Unidade: Contagem | 
| `cpu_time_user` | Linux, Windows Server, macOS | O tempo em que o processo permanece em modo de usuário. Essa métrica é medida em centésimos de segundo.<br />Unidade: Contagem | 
| `cpu_usage` | Linux, Windows Server, macOS | A porcentagem de tempo em que o processo permanece ativo em qualquer capacidade.<br />Unidade: percentual | 
| `memory_data` | Linux, macOS | A quantidade de memória usada pelo processo em dados.<br />Unidade: bytes | 
| `memory_locked` | Linux, macOS | A quantidade de memória bloqueada pelo processo.<br />Unidade: bytes | 
| `memory_rss` | Linux, Windows Server, macOS | A quantidade de memória real (conjunto residente) que o processo está usando.<br />Unidade: bytes | 
| `memory_stack` | Linux, macOS | A quantidade de memória em pilha usada pelo processo.<br />Unidade: bytes | 
| `memory_swap` | Linux, macOS | A quantidade de memória swap usada pelo processo.<br />Unidade: bytes | 
| `memory_vms` | Linux, Windows Server, macOS | A quantidade de memória virtual usada pelo processo.<br />Unidade: bytes | 
| `num_fds` | Linux | O número de descritores de arquivo abertos por esse processo.<br />Unidade: nenhuma | 
| `num_threads` | Linux, Windows, macOS | O número de threads neste processo.<br />Unidade: nenhuma | 
| `pid` | Linux, Windows Server, macOS | Process Identifier (ID – Identificador de processo).<br />Unidade: nenhuma | 
| `pid_count` | Linux, Windows Server, macOS | O número de IDs de processo associados ao processo.<br />Em servidores Linux e computadores macOC, o nome completo dessa métrica é `procstat_lookup_pid_count` e no Windows Server é `procstat_lookup pid_count`.<br />Unidade: nenhuma | 
| `read_bytes` | Linux, Windows Server | O número de bytes lidos de discos pelo processo.<br />Unidade: bytes | 
| `write_bytes` | Linux, Windows Server | O número de bytes gravados em discos pelo processo.<br />Unidade: bytes | 
| `read_count` | Linux, Windows Server | O número de operações de leitura em disco executadas pelo processo.<br />Unidade: nenhuma | 
| `rlimit_realtime_priority_hard` | Linux | O limite rígido da prioridade em tempo real que pode ser definido para este processo.<br />Unidade: nenhuma | 
| `rlimit_realtime_priority_soft` | Linux | O limite flexível da prioridade em tempo real que pode ser definido para este processo.<br />Unidade: nenhuma | 
| `rlimit_signals_pending_hard` | Linux | O limite rígido do número máximo de sinais que podem ser enfileirados por este processo.<br />Unidade: nenhuma | 
| `rlimit_signals_pending_soft` | Linux | O limite flexível do número máximo de sinais que podem ser enfileirados por este processo.<br />Unidade: nenhuma | 
| `rlimit_nice_priority_hard` | Linux | O limite rígido da prioridade de nice que pode ser definido para este processo.<br />Unidade: nenhuma | 
| `rlimit_nice_priority_soft` | Linux | O limite flexível da prioridade de nice que pode ser definido para este processo.<br />Unidade: nenhuma | 
| `rlimit_num_fds_hard` | Linux | O limite rígido para o número máximo de descritores de arquivo que este processo pode ter em aberto.<br />Unidade: nenhuma | 
| `rlimit_num_fds_soft` | Linux | O limite flexível para o número máximo de descritores de arquivo que este processo pode ter em aberto.<br />Unidade: nenhuma | 
| `write_count` | Linux, Windows Server | O número de operações de gravação em disco executadas pelo processo.<br />Unidade: nenhuma | 
| `involuntary_context_switches` | Linux | O número de vezes em que o contexto do processo foi alterado involuntariamente. <br />Unidade: nenhuma | 
| `voluntary_context_switches` | Linux | O número de vezes em que o contexto do processo foi alterado voluntariamente. <br />Unidade: nenhuma | 
| `realtime_priority` | Linux | O uso atual da prioridade em tempo real para o processo.<br />Unidade: nenhuma | 
| `nice_priority` | Linux | O uso atual da prioridade boa para o processo.<br />Unidade: nenhuma | 
| `signals_pending` | Linux | O número de sinais pendentes a serem processados pelo processo.<br />Unidade: nenhuma | 
| `rlimit_cpu_time_hard` | Linux | O limite de recursos do tempo de CPU fixo para o processo.<br />Unidade: nenhuma | 
| `rlimit_cpu_time_soft` | Linux | O limite de recursos do tempo de CPU flexível para o processo.<br />Unidade: nenhuma | 
| `rlimit_file_locks_hard` | Linux | O limite de recursos de bloqueios de arquivo fixo para o processo.<br />Unidade: nenhuma | 
| `rlimit_file_locks_soft` | Linux | O limite de recursos de bloqueios de arquivo flexível para o processo.<br />Unidade: nenhuma | 
| `rlimit_memory_data_hard` | Linux | O limite de recursos fixo no processo de memória usada em dados.<br />Unidade: bytes | 
| `rlimit_memory_data_soft` | Linux | O limite de recursos flexível no processo de memória usada em dados.<br />Unidade: bytes | 
| `rlimit_memory_locked_hard` | Linux | O limite de recursos fixo no processo de memória bloqueada.<br />Unidade: bytes | 
| `rlimit_memory_locked_soft` | Linux | O limite de recursos flexível no processo de memória bloqueada.<br />Unidade: bytes | 
| `rlimit_memory_rss_hard` | Linux | O limite de recursos fixo no processo de memória física.<br />Unidade: bytes | 
| `rlimit_memory_rss_soft` | Linux | O limite de recursos flexível no processo de memória física.<br />Unidade: bytes | 
| `rlimit_memory_stack_hard` | Linux | O limite de recursos fixo na pilha de processos.<br />Unidade: bytes | 
| `rlimit_memory_stack_soft` | Linux | O limite de recursos flexível na pilha de processos.<br />Unidade: bytes | 
| `rlimit_memory_vms_hard` | Linux | O limite de recursos fixo no processo de memória virtual.<br />Unidade: bytes | 
| `rlimit_memory_vms_soft` | Linux | O limite de recursos flexível no processo de memória virtual.<br />Unidade: bytes | 

## Visualizar métricas de processo importadas pelo atendente do CloudWatch
<a name="CloudWatch-view-procstat-metrics"></a>

Depois de importar métricas de processo para o CloudWatch, é possível visualizar essas métricas como gráficos de séries temporais e criar alarmes que podem observar essas métricas e notificar você, se elas violarem um limite especificado. O procedimento a seguir mostra como visualizar métricas de processo como um gráfico de séries temporais. Para obter mais informações sobre configuração de alarmes, consulte [Usar alarmes do Amazon CloudWatch](CloudWatch_Alarms.md).

**Para exibir métricas de processo no console do CloudWatch**

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

1. No painel de navegação, selecione **Métricas**.

1. Escolha o namespace para as métricas coletadas pelo atendente. Por padrão, é **CWAgent**, mas você pode ter especificado um namespace diferente no arquivo de configuração do atendente do CloudWatch.

1. Escolha uma dimensão de métrica; por exemplo, **Per-Instance Metrics** (Métricas por instância).

1. A guia **All metrics** (Todas as métricas) exibe todas as métricas dessa dimensão no namespace. Você pode fazer o seguinte:

   1. Para criar um gráfico de uma métrica, marque a caixa de seleção ao lado da métrica. Para selecionar todas as métricas, marque a caixa de seleção na linha de cabeçalho da tabela.

   1. Para classificar a tabela, use o cabeçalho da coluna.

   1. Para filtrar por recurso, escolha o ID do recurso e, em seguida, escolha **Adicionar à pesquisa**.

   1. Para filtrar por métrica, selecione o nome da métrica e, em seguida, escolha **Adicionar à pesquisa**.

1. (Opcional) Para adicionar esse gráfico a um painel do CloudWatch, escolha **Actions** (Ações), **Add to dashboard** (Adicionar ao painel).