

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Métricas e dimensões no Managed Service for Apache Flink
<a name="metrics-dimensions"></a>

Quando seu serviço gerenciado para Apache Flink processa uma fonte de dados, o serviço gerenciado para Apache Flink reporta as seguintes métricas e dimensões para a Amazon. CloudWatch

**Mudanças na métrica do Flink 2.2**  
O Flink 2.2 introduz mudanças métricas que podem afetar seu monitoramento e alarmes. Analise as seguintes alterações antes de fazer o upgrade:  
A `fullRestarts` métrica foi removida. Use `numRestarts` em vez disso.
As `downtime` métricas `uptime` e estão obsoletas e serão removidas em uma versão futura. Migre para as novas métricas específicas do estado.
A `bytesRequestedPerFetch` métrica do conector 6.0.0 do Kinesis Data Streams foi removida.

## Métricas da aplicação
<a name="metrics-dimensions-jobs"></a>


| Métrica | Unidade | Description | Nível | Observações sobre o uso | 
| --- | --- | --- | --- | --- | 
| backPressuredTimeMsPerSecond\$1 | Milissegundos | O tempo (em milissegundos) em que essa tarefa ou operador é contrapressionado por segundo. | Tarefa, operador, paralelismo | \$1Disponível para aplicativos Managed Service para Apache Flink executando somente a versão 1.13 do Flink. Essas métricas podem ser úteis para identificar gargalos em um aplicativo. | 
| busyTimeMsPerSecond\$1 | Milissegundos | O tempo (em milissegundos) em que essa tarefa ou operador está ocupado (sem inatividade ou contrapressão) por segundo. Pode ser NaN, se o valor não puder ser calculado. | Tarefa, operador, paralelismo | \$1Disponível para aplicativos Managed Service para Apache Flink executando somente a versão 1.13 do Flink. Essas métricas podem ser úteis para identificar gargalos em um aplicativo. | 
| cpuUtilization | Porcentagem | Porcentagem geral de utilização da CPU nos gerenciadores de tarefas. Por exemplo, se houver cinco gerenciadores de tarefas, o Managed Service for Apache Flink publica cinco amostras dessa métrica por intervalo de geração de relatórios. | Aplicação | Você pode usar essa métrica para monitorar a utilização mínima, média e máxima da CPU em seu aplicativo. A CPUUtilization métrica considera apenas o uso da CPU do processo TaskManager JVM executado dentro do contêiner.  | 
| containerCPUUtilization | Porcentagem | Porcentagem geral de utilização da CPU em contêineres do gerenciador de tarefas no cluster de aplicativos do Flink. Por exemplo, se houver cinco gerenciadores de tarefas, correspondentemente, há cinco TaskManager contêineres e o Managed Service for Apache Flink publica 2 x cinco amostras dessa métrica por intervalo de relatório de 1 minuto. | Aplicação | É calculado por contêiner como: *Tempo total de CPU (em segundos) consumido pelo contêiner \$1 100/ Limite de CPU do contêiner (em CPUs /segundos)* A `CPUUtilization` métrica considera apenas o uso da CPU do processo TaskManager JVM executado dentro do contêiner. Há outros componentes em execução fora da JVM dentro do mesmo contêiner. A métrica `containerCPUUtilization` fornece uma visão mais completa, incluindo todos os processos, em termos de esgotamento da CPU no contêiner e falhas resultantes disso.  | 
| containerMemoryUtilization | Porcentagem | Porcentagem geral de utilização da memória nos contêineres do gerenciador de tarefas no cluster de aplicativos do Flink. Por exemplo, se houver cinco gerenciadores de tarefas, correspondentemente, há cinco TaskManager contêineres e o Managed Service for Apache Flink publica 2 x cinco amostras dessa métrica por intervalo de relatório de 1 minuto. | Aplicação | É calculado por contêiner como: *Uso de memória do contêiner (bytes) × 100 / Limite de memória do contêiner de acordo com a especificação de implantação do pod (em bytes)* [As `ManagedMemoryUtilzations` métricas `HeapMemoryUtilization` e consideram apenas métricas de memória específicas, como uso de memória em pilha da TaskManager JVM ou memória gerenciada (uso de memória fora da JVM para processos nativos, como o RocksDB State Backend).](https://flink.apache.org/2021/01/18/rocksdb.html#:~:text=Conclusion-,The%20RocksDB%20state%20backend%20(i.e.%2C%20RocksDBStateBackend)%20is%20one%20of,with%20exactly%2Donce%20processing%20guarantees.) A métrica `containerMemoryUtilization` fornece uma visão mais completa ao incluir a memória do conjunto de trabalho, que é um rastreador melhor do esgotamento total da memória. Após sua exaustão, isso resultará na `Out of Memory Error` cápsula. TaskManager   | 
| containerDiskUtilization | Porcentagem | Porcentagem geral de utilização do disco nos contêineres do gerenciador de tarefas no cluster de aplicativos do Flink. Por exemplo, se houver cinco gerenciadores de tarefas, correspondentemente, há cinco TaskManager contêineres e o Managed Service for Apache Flink publica 2 x cinco amostras dessa métrica por intervalo de relatório de 1 minuto. | Aplicação | É calculado por contêiner como: *Uso do disco em bytes × 100 / Limite do disco por contêiner em bytes* Para contêineres, ele representa a utilização do sistema de arquivos no qual o volume raiz do contêiner está configurado.  | 
| currentInputWatermark | Milissegundos | A última marca d'água que isso application/operator/task/thread recebeu | Aplicativo, operador, tarefa, paralelismo | Esse registro só é emitido para dimensões com duas entradas. Esse é o valor mínimo das últimas marcas d’água recebidas. | 
| currentOutputWatermark | Milissegundos | A última marca d'água application/operator/task/thread emitida | Aplicativo, operador, tarefa, paralelismo |  | 
| downtime[OBSOLETO] | Milissegundos | Para trabalhos atualmente em uma failing/recovering situação, o tempo decorrido durante essa interrupção. | Aplicação | Essa métrica mede o tempo transcorrido enquanto um trabalho está falhando ou se recuperando. Essa métrica retorna 0 para trabalhos em execução e –1 para trabalhos concluídos. Se essa métrica não for 0 ou –1, isso indica que a tarefa do Apache Flink para o aplicativo falhou na execução. **Obsoleto no Flink 2.2.** Use `restartingTime``cancellingTime`, and/or `failingTime` em vez disso. | 
| failingTime | Milissegundos | O tempo (em milissegundos) que o aplicativo passou em um estado de falha. Use essa métrica para monitorar falhas de aplicativos e acionar alertas. | Aplicação, fluxo | Disponível a partir do Flink 2.2. Substitui parte da métrica obsoletadowntime. | 
| heapMemoryUtilization | Porcentagem | Utilização geral da memória heap em todos os gerenciadores de tarefas. Por exemplo, se houver cinco gerenciadores de tarefas, o Managed Service for Apache Flink publica cinco amostras dessa métrica por intervalo de geração de relatórios. | Aplicação | Você pode usar essa métrica para monitorar a utilização mínima, média e máxima da memória heap em seu aplicativo. A HeapMemoryUtilization única conta para métricas de memória específicas, como o uso de memória em pilha da TaskManager JVM. | 
| idleTimeMsPerSecond\$1 | Milissegundos | O tempo (em milissegundos) em que essa tarefa ou operador fica inativo (não tem dados para processar) por segundo. O tempo sem atividade exclui o tempo de contrapressão, portanto, se a tarefa for contrapressionada, ela não estará sem atividade. | Tarefa, operador, paralelismo | \$1Disponível para aplicativos Managed Service para Apache Flink executando somente a versão 1.13 do Flink. Essas métricas podem ser úteis para identificar gargalos em um aplicativo. | 
| lastCheckpointSize | Bytes | O tamanho total do último ponto de verificação | Aplicação | Você pode usar essa métrica para determinar a utilização do armazenamento de aplicativos em execução. Se o valor dessa métrica estiver aumentando, isso pode indicar que há um problema com seu aplicativo, como um vazamento de memória ou gargalo. | 
| lastCheckpointDuration | Milissegundos | O tempo necessário para concluir o último ponto de verificação | Aplicação | Essa métrica mede o tempo necessário para concluir o ponto de verificação mais recente. Se o valor dessa métrica estiver aumentando, isso pode indicar que há um problema com seu aplicativo, como um vazamento de memória ou gargalo. Em alguns casos, você pode solucionar esse problema desativando o ponto de verificação. | 
| managedMemoryUsed\$1 | Bytes | A quantidade de memória gerenciada usada no momento. | Aplicativo, operador, tarefa, paralelismo | \$1Disponível para aplicativos Managed Service para Apache Flink executando somente a versão 1.13 do Flink. Isso está relacionado à memória gerenciada pelo Flink fora da heap do Java. Ele é usado para o RocksDB State Backend e também está disponível para aplicativos. | 
| managedMemoryTotal\$1 | Bytes | A quantidade total de memória gerenciada. | Aplicativo, operador, tarefa, paralelismo | \$1Disponível para aplicativos Managed Service para Apache Flink executando somente a versão 1.13 do Flink. Isso está relacionado à memória gerenciada pelo Flink fora da heap do Java. Ele é usado para o RocksDB State Backend e também está disponível para aplicativos. A métrica `ManagedMemoryUtilzations` só considera métricas de memória específicas, como a memória gerenciada (uso de memória fora da JVM para processos nativos, como o [RocksDB State Backend](https://flink.apache.org/2021/01/18/rocksdb.html#:~:text=Conclusion-,The%20RocksDB%20state%20backend%20(i.e.%2C%20RocksDBStateBackend)%20is%20one%20of,with%20exactly%2Donce%20processing%20guarantees.)) | 
| managedMemoryUtilization\$1 | Porcentagem | Derivado por managedMemoryUsed/managedMemoryTotal | Aplicativo, operador, tarefa, paralelismo | \$1Disponível para aplicativos Managed Service para Apache Flink executando somente a versão 1.13 do Flink. Isso está relacionado à memória gerenciada pelo Flink fora da heap do Java. Ele é usado para o RocksDB State Backend e também está disponível para aplicativos. | 
| numberOfFailedCheckpoints | Contagem | O número de vezes que o ponto de verificação falhou. | Aplicação | Você pode usar essa métrica para monitorar a integridade e o progresso do aplicativo. Os pontos de verificação podem falhar devido a problemas do aplicativo, como problemas de throughput ou permissões.  | 
| numRecordsIn\$1 | Contagem | O número total de registros que esse aplicativo, operador ou tarefa recebeu. | Aplicativo, operador, tarefa, paralelismo | \$1Para aplicar a estatística SUM por um período de tempo (segundo/minuto): [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/managed-flink/latest/java/metrics-dimensions.html) O nível da métrica especifica se essa métrica mede o número total de registros que o aplicativo todo, um operador específico ou uma tarefa específica recebeu. | 
| numRecordsInPerSecond\$1 | Contagem/segundo | O número total de registros que esse aplicativo, operador ou tarefa recebeu por segundo. | Aplicativo, operador, tarefa, paralelismo | \$1Para aplicar a estatística SUM por um período de tempo (segundo/minuto): [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/managed-flink/latest/java/metrics-dimensions.html) O nível da métrica especifica se essa métrica mede o número total de registros que o aplicativo todo, um operador específico ou uma tarefa específica recebeu por segundo. | 
| numRecordsOut\$1 | Contagem | O número total de registros que esse aplicativo, operador ou tarefa emitiu. | Aplicativo, operador, tarefa, paralelismo |  \$1Para aplicar a estatística SUM por um período de tempo (segundo/minuto): [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/managed-flink/latest/java/metrics-dimensions.html) O nível da métrica especifica se essa métrica mede o número total de registros que o aplicativo todo, um operador específico ou uma tarefa específica emitiu. | 
| numLateRecordsDropped\$1 | Contagem | Aplicativo, operador, tarefa, paralelismo |  | \$1Para aplicar a estatística SUM por um período de tempo (segundo/minuto): [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/managed-flink/latest/java/metrics-dimensions.html) O número de registros que esse operador ou tarefa reduziu devido ao atraso na chegada. | 
| numRecordsOutPerSecond\$1 | Contagem/segundo | O número total de registros que esse aplicativo, operador ou tarefa emitiu por segundo. | Aplicativo, operador, tarefa, paralelismo |  \$1Para aplicar a estatística SUM por um período de tempo (segundo/minuto): [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/managed-flink/latest/java/metrics-dimensions.html) O nível da métrica especifica se essa métrica mede o número total de registros que o aplicativo todo, um operador específico ou uma tarefa específica emitiu por segundo. | 
| oldGenerationGCCount | Contagem | O número total de operações antigas de coleta de resíduos que ocorreram em todos os gerenciadores de tarefas.  | Aplicação |  | 
| oldGenerationGCTime | Milissegundos | O tempo total gasto executando operações antigas de coleta de resíduos.  | Aplicação | Você pode usar essa métrica para monitorar a soma, a média e o tempo máximo de coleta de resíduos. | 
| threadsCount | Contagem | O número total de threads ativos usados pelo aplicativo.  | Aplicação | Essa métrica mede o número de segmentos usados pelo código do aplicativo. Isso não é o mesmo que paralelismo de aplicativos. | 
| cancellingTime | Milissegundos | O tempo (em milissegundos) que o aplicativo passou em um estado de cancelamento. Use essa métrica para monitorar as operações de cancelamento de aplicativos. | Aplicação, fluxo | Disponível a partir do Flink 2.2. Substitui parte da métrica obsoletadowntime. | 
| restartingTime | Milissegundos | O tempo (em milissegundos) que o aplicativo passou em um estado de reinicialização. Use essa métrica para monitorar o comportamento de reinicialização do aplicativo. | Aplicação, fluxo | Disponível a partir do Flink 2.2. Substitui parte da métrica obsoletadowntime. | 
| runningTime | Milissegundos | O tempo (em milissegundos) em que o aplicativo está sendo executado sem interrupção. Substitui a métrica obsoletauptime. | Aplicação, fluxo | Disponível a partir do Flink 2.2. Use como um substituto direto para a métrica obsoletauptime. | 
| uptime[OBSOLETO] | Milissegundos | O tempo no qual o trabalho foi executado sem interrupções. | Aplicação | Você pode usar essa métrica para determinar se um trabalho está sendo executado com êxito. Essa métrica retorna –1 para trabalhos concluídos. **Obsoleto no Flink 2.2.** Use `runningTime` em vez disso. | 
| jobmanagerFileDescriptorsMax | Contagem | O número máximo de descritores de arquivo disponíveis para o. JobManager | Aplicativo, fluxo, host | Use essa métrica para monitorar a capacidade do descritor de arquivo. | 
| jobmanagerFileDescriptorsOpen | Contagem | O número atual de descritores de arquivo abertos para o. JobManager | Aplicativo, fluxo, host | Use essa métrica para monitorar o uso do descritor de arquivo e detectar a possível exaustão de recursos. | 
| taskmanagerFileDescriptorsMax | Contagem | O número máximo de descritores de arquivo disponíveis para cada um TaskManager. | Aplicativo, fluxo, host, tm\$1id | Use essa métrica para monitorar a capacidade do descritor de arquivo. | 
| taskmanagerFileDescriptorsOpen | Contagem | O número atual de descritores de arquivo abertos para cada um TaskManager. | Aplicativo, fluxo, host, tm\$1id | Use essa métrica para monitorar o uso do descritor de arquivo e detectar a possível exaustão de recursos. | 
| KPUs\$1 | Contagem | O número total de KPUs usados pelo aplicativo. | Aplicação | \$1Esta métrica recebe uma amostra por período de cobrança (uma hora). Para visualizar o número de KPUs ao longo do tempo, use MAX ou AVG por um período de pelo menos uma (1) hora. A contagem de KPU inclui a KPU `orchestration`. Para obter mais informações, consulte [Preço do Managed Service for Apache Flink](https://aws.amazon.com/managed-service-apache-flink/pricing/). | 

**Guia de migração métrica do Flink 2.2**  
**Migração do FullRestarts:** a `fullRestarts` métrica foi removida no Flink 2.2. Em vez disso, use a `numRestarts` métrica. A `numRestarts` métrica fornece funcionalidade equivalente e pode ser usada como uma substituição direta em CloudWatch alarmes sem exigir ajustes de limite.  
**Migração do tempo de atividade:** a `uptime` métrica foi descontinuada no Flink 2.2 e será removida em uma versão futura. Em vez disso, use a `runningTime` métrica. A `runningTime` métrica fornece funcionalidade equivalente e pode ser usada como uma substituição direta em CloudWatch alarmes sem exigir ajustes de limite.  
**Migração do tempo de inatividade:** a `downtime` métrica foi descontinuada no Flink 2.2 e será removida em uma versão futura. Dependendo do que você deseja monitorar, use uma ou mais das seguintes métricas:  
`restartingTime`: Monitore o tempo gasto na reinicialização do aplicativo
`cancellingTime`: Monitore o tempo gasto no cancelamento da inscrição
`failingTime`: Monitore o tempo gasto em um estado de falha

## Métricas do conector do Kinesis Data Streams
<a name="metrics-dimensions-stream"></a>

AWS emite todos os registros do Kinesis Data Streams, além dos seguintes:


| Métrica | Unidade | Description | Nível | Observações sobre o uso | 
| --- | --- | --- | --- | --- | 
| millisbehindLatest | Milissegundos | O número de milissegundos em que o consumidor está atrás do início do fluxo de dados, indicando o quão atrasado o consumidor está em relação ao horário atual. | Aplicação (para Stream), Paralelismo (para) ShardId | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/managed-flink/latest/java/metrics-dimensions.html)  | 

**nota**  
A `bytesRequestedPerFetch` métrica foi removida na versão 6.0.0 do AWS conector Flink (a única versão do conector compatível com o Flink 2.2). A única métrica do conector do Kinesis Data Streams disponível no Flink 2.2 é. `millisBehindLatest`

## Métricas do conector do Amazon MSK
<a name="metrics-dimensions-msk"></a>

AWS emite todos os registros do Amazon MSK, além dos seguintes:


| Métrica | Unidade | Description | Nível | Observações sobre o uso | 
| --- | --- | --- | --- | --- | 
| currentoffsets | N/D | O deslocamento de leitura atual do consumidor, para cada partição. A métrica de uma partição específica pode ser especificada pelo nome do tópico e pela ID da partição. | Aplicação (para tópico), paralelismo (para) PartitionId |  | 
| commitsFailed | N/D | O número total de falhas de confirmação de deslocamentos para o Kafka, se o deslocamento e o ponto de verificação estiverem habilitados.  | Aplicativo, operador, tarefa, paralelismo | Enviar os deslocamentos de volta ao Kafka é apenas um meio de expor o progresso do consumidor, portanto, uma falha de confirmação não afeta a integridade dos deslocamentos de partição do ponto de verificação do Flink. | 
| commitsSucceeded | N/D | O número total de confirmações de deslocamentos bem-sucedidas para o Kafka, se a confirmação do deslocamento e o ponto de verificação estiverem habilitados.  | Aplicativo, operador, tarefa, paralelismo |  | 
| committedoffsets | N/D | Os últimos deslocamentos confirmados com sucesso para o Kafka, para cada partição. A métrica de uma partição específica pode ser especificada pelo nome do tópico e pela ID da partição. | Aplicação (para tópico), paralelismo (para) PartitionId |  | 
| records\$1lag\$1max | Contagem | O atraso máximo em termos de número de registros para qualquer partição nesta janela | Aplicativo, operador, tarefa, paralelismo |  | 
| bytes\$1consumed\$1rate | Bytes | O número médio de bytes consumidos por segundo para um tópico | Aplicativo, operador, tarefa, paralelismo |  | 

## Métricas do Apache Zeppelin
<a name="metrics-dimensions-zeppelin"></a>

Para notebooks Studio, AWS emite as seguintes métricas no nível do aplicativo:`KPUs`,`cpuUtilization`,`heapMemoryUtilization`, `oldGenerationGCTime``oldGenerationGCCount`, e. `threadCount` Além disso, ela emite as métricas mostradas na tabela a seguir, também no nível do aplicativo.


****  

| Métrica | Unidade | Description | Nome no Prometheus | 
| --- | --- | --- | --- | 
| zeppelinCpuUtilization | Porcentagem | Porcentagem geral de utilização da CPU no servidor Apache Zeppelin. | process\$1cpu\$1usage | 
| zeppelinHeapMemoryUtilization | Porcentagem | Porcentagem geral de utilização da memória heap para o servidor Apache Zeppelin. | jvm\$1memory\$1used\$1bytes | 
| zeppelinThreadCount | Contagem | O número total de threads ativos usados pelo servidor Apache Zeppelin. | jvm\$1threads\$1live\$1threads | 
| zeppelinWaitingJobs | Contagem | O número de trabalhos enfileirados do Apache Zeppelin esperando por um thread. | jetty\$1threads\$1jobs | 
| zeppelinServerUptime | Segundos | O tempo total em que o servidor esteve ativo e funcionando. | process\$1uptime\$1seconds | 

# Exibir CloudWatch métricas
<a name="metrics-dimensions-viewing"></a>

Você pode visualizar CloudWatch as métricas do seu aplicativo usando o CloudWatch console da Amazon ou AWS CLI o.

**Para visualizar métricas usando o CloudWatch console**

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

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

1. No painel **CloudWatch Métricas por categoria** do Managed Service for Apache Flink, escolha uma categoria de métricas.

1. No painel superior, role para visualizar a lista completa de métricas.

**Para visualizar métricas usando o AWS CLI**
+ Em um prompt de comando, use o seguinte comando.

  ```
  1. aws cloudwatch list-metrics --namespace "AWS/KinesisAnalytics" --region region
  ```

# Defina níveis de relatórios de CloudWatch métricas
<a name="cloudwatch-logs-levels"></a>

Você pode controlar o nível das métricas do aplicativo que seu aplicativo cria. O Managed Service for Apache Flink oferece suporte para os seguintes níveis de métricas:
+ **Aplicativo**: o aplicativo relata apenas o nível mais alto de métricas para cada aplicativo. Por padrão, as métricas do Managed Service for Apache Flink são publicadas no nível do aplicativo.
+ **Tarefa**: o aplicativo relata dimensões métricas específicas da tarefa para métricas definidas com o nível de relatório métrico da tarefa, como o número de registros de entrada e saída do aplicativo por segundo.
+ **Operador**: o aplicativo relata dimensões métricas específicas do operador para métricas definidas com o nível de relatório métrico do operador, como métricas para cada operação de filtro ou mapa.
+ **Paralelismo**: o aplicativo relata `Task` e `Operator` métricas de nível para cada thread de execução. O nível de relatório não é recomendado para aplicativos com uma configuração de paralelismo acima de 64 devido aos custos excessivos. 
**nota**  
Você só deve usar esse nível métrico para solucionar problemas devido à quantidade de dados métricos que o serviço gera. Você só pode definir esse nível métrico usando a CLI. Esse nível métrico não está disponível no console.

O nível padrão é **Aplicativo**. O aplicativo relata métricas no nível atual e em todos os níveis superiores. Por exemplo, se o nível de relatório estiver definido como **Operador**, o aplicativo reportará as métricas de **Aplicativo**, **Tarefa** e **Operador**.

Você define o nível do relatório de CloudWatch métricas usando o `MonitoringConfiguration` parâmetro da [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html)ação ou o `MonitoringConfigurationUpdate` parâmetro da [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html)ação. O exemplo a seguir de solicitação para a [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html)ação define o nível de relatório de CloudWatch métricas como **Tarefa**:

```
{
   "ApplicationName": "MyApplication",  
   "CurrentApplicationVersionId": 4,
   "ApplicationConfigurationUpdate": { 
      "FlinkApplicationConfigurationUpdate": { 
         "MonitoringConfigurationUpdate": { 
            "ConfigurationTypeUpdate": "CUSTOM",
            "MetricsLevelUpdate": "TASK"
         }
      }
   }
}
```

Você também pode configurar o nível de registro em log usando o parâmetro `LogLevel` da ação [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html) ou o parâmetro `LogLevelUpdate` da ação [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html). Você pode usar os seguintes níveis de log:
+ `ERROR`: registra eventos de erro potencialmente recuperáveis.
+ `WARN`: registra eventos de alerta que podem levar a um erro.
+ `INFO`: registra eventos informativos.
+ `DEBUG`: registra eventos gerais de depuração. 

Para obter mais informações sobre os níveis de registro em log do Log4j, consulte [Níveis de registro personalizados](https://logging.apache.org/log4j/2.x/manual/customloglevels.html) na documentação do [Apache Log4j](https://logging.apache.org/log4j/2.x/).

# Use métricas personalizadas com o Amazon Managed Service for Apache Flink
<a name="monitoring-metrics-custom"></a>

O Managed Service for Apache Flink expõe 19 métricas CloudWatch, incluindo métricas de uso de recursos e taxa de transferência. Além disso, você pode criar suas próprias métricas para rastrear dados específicos do aplicativo, como eventos de processamento ou acesso a recursos externos.

**Topics**
+ [Como funciona](#monitoring-metrics-custom-howitworks)
+ [Veja alguns exemplos para criar uma classe de mapeamento](#monitoring-metrics-custom-examples)
+ [Visualizar métricas personalizadas](#monitoring-metrics-custom-examples-viewing)

## Como funciona
<a name="monitoring-metrics-custom-howitworks"></a>

As métricas personalizadas no Managed Service for Apache Flink usam o sistema métrico Apache Flink. As métricas do Apache Flink têm os atributos a seguir:
+ **Tipo:** o tipo de uma métrica descreve como ela mede e relata dados. Os tipos de métricas disponíveis no Apache Flink incluem Contagem, Indicador, Histograma e Medidor. Para obter mais informações sobre os tipos de métricas do Apache Flink, consulte [Tipos de métricas](https://nightlies.apache.org/flink/flink-docs-release-1.15/monitoring/metrics.html#metric-types).
**nota**  
AWS CloudWatch As métricas não são compatíveis com o tipo de métrica Histogram Apache Flink. CloudWatch só pode exibir métricas do Apache Flink dos tipos Count, Gauge e Meter.
+ **Escopo:** o escopo de uma métrica consiste em seu identificador e um conjunto de pares de valores-chave que indicam como a métrica será reportada. CloudWatch O identificador de uma métrica consiste no seguinte:
  + Um escopo do sistema, que indica o nível no qual a métrica é relatada (por exemplo, Operator).
  + Um escopo de usuário, que define atributos como variáveis de usuário ou nomes de grupos de métricas. Esses atributos são definidos usando [https://ci.apache.org/projects/flink/flink-docs-master/api/java/org/apache/flink/metrics/MetricGroup.html#addGroup-java.lang.String-java.lang.String-](https://ci.apache.org/projects/flink/flink-docs-master/api/java/org/apache/flink/metrics/MetricGroup.html#addGroup-java.lang.String-java.lang.String-) ou [https://ci.apache.org/projects/flink/flink-docs-master/api/java/org/apache/flink/metrics/MetricGroup.html#addGroup-java.lang.String-](https://ci.apache.org/projects/flink/flink-docs-master/api/java/org/apache/flink/metrics/MetricGroup.html#addGroup-java.lang.String-).

  Para obter mais informações sobre as métricas de escopos, consulte [Escopo](https://nightlies.apache.org/flink/flink-docs-release-1.15/monitoring/metrics.html#scope).

Para obter mais informações sobre a métrica do Apache Flink, consulte [Métrica](https://nightlies.apache.org/flink/flink-docs-release-1.15/monitoring/metrics.html) na [documentação do Apache Flink](https://nightlies.apache.org/flink/flink-docs-release-1.15/).

Para criar uma métrica personalizada em seu Managed Service for Apache Flink, você pode acessar o sistema métrico do Apache Flink a partir de qualquer função do usuário que se estenda `RichFunction` por meio de chamadas para [https://nightlies.apache.org/flink/flink-docs-release-1.15/api/java/org/apache/flink/api/common/functions/RuntimeContext.html#getMetricGroup--](https://nightlies.apache.org/flink/flink-docs-release-1.15/api/java/org/apache/flink/api/common/functions/RuntimeContext.html#getMetricGroup--). Esse método retorna um [MetricGroup](https://nightlies.apache.org/flink/flink-docs-release-1.15/api/java/org/apache/flink/metrics/MetricGroup.html)objeto que você pode usar para criar e registrar métricas personalizadas. O Managed Service for Apache Flink relata todas as métricas criadas com a chave de grupo para`KinesisAnalytics`. CloudWatch As métricas personalizadas que você define têm as seguintes características:
+ Sua métrica personalizada tem um nome de métrica e um nome de grupo. Esses nomes devem conter caracteres alfanuméricos de acordo com as [regras de nomenclatura do Prometheus](https://prometheus.io/docs/instrumenting/writing_exporters/#naming).
+ Os atributos que você define no escopo do usuário (exceto para o grupo de `KinesisAnalytics` métricas) são publicados como CloudWatch dimensões.
+ Por padrão, as métricas personalizadas são publicadas no nível `Application`.
+ As dimensões (Task/Operator/Parallelism) são adicionadas à métrica com base no nível de monitoramento do aplicativo. Você define o nível de monitoramento do aplicativo usando o [MonitoringConfiguration](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_MonitoringConfiguration.html)parâmetro da [CreateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_CreateApplication.html)ação ou o [MonitoringConfigurationUpdate](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_MonitoringConfigurationUpdate.html)parâmetro ou da [UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html)ação.

## Veja alguns exemplos para criar uma classe de mapeamento
<a name="monitoring-metrics-custom-examples"></a>

Os exemplos de código a seguir demonstram como criar uma classe de mapeamento que cria e incrementa uma métrica personalizada e como implementar a classe de mapeamento em seu aplicativo adicionando-a a um objeto `DataStream`.

### Métrica personalizada de contagem de registros
<a name="monitoring-metrics-custom-examples-recordcount"></a>

O exemplo de código a seguir demonstra como criar uma classe de mapeamento que cria uma métrica que conta registros em um fluxo de dados (a mesma funcionalidade da métrica `numRecordsIn`):

```
    private static class NoOpMapperFunction extends RichMapFunction<String, String> {
        private transient int valueToExpose = 0;
        private final String customMetricName;
 
        public NoOpMapperFunction(final String customMetricName) {
            this.customMetricName = customMetricName;
        }
 
        @Override
        public void open(Configuration config) {
            getRuntimeContext().getMetricGroup()
                    .addGroup("KinesisAnalytics")
                    .addGroup("Program", "RecordCountApplication")
                    .addGroup("NoOpMapperFunction")
                    .gauge(customMetricName, (Gauge<Integer>) () -> valueToExpose);
        }
 
        @Override
        public String map(String value) throws Exception {
            valueToExpose++;
            return value;
        }
    }
```

No exemplo anterior, a variável `valueToExpose` é incrementada para cada registro que o aplicativo processa. 

Depois de definir sua classe de mapeamento, você cria um fluxo no aplicativo que implementa o mapa:

```
DataStream<String> noopMapperFunctionAfterFilter =
    kinesisProcessed.map(new NoOpMapperFunction("FilteredRecords"));
```

Para obter o código completo desse aplicativo, consulte [Aplicativo de métrica personalizada para contagem de registros](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/CustomMetrics/RecordCount).

### Métrica personalizada de contagem de palavras
<a name="monitoring-metrics-custom-examples-wordcount"></a>

O exemplo de código a seguir demonstra como criar uma classe de mapeamento que cria uma métrica que conta palavras em um fluxo de dados:

```
private static final class Tokenizer extends RichFlatMapFunction<String, Tuple2<String, Integer>> {
     
            private transient Counter counter;
     
            @Override
            public void open(Configuration config) {
                this.counter = getRuntimeContext().getMetricGroup()
                        .addGroup("KinesisAnalytics")
                        .addGroup("Service", "WordCountApplication")
                        .addGroup("Tokenizer")
                        .counter("TotalWords");
            }
     
            @Override
            public void flatMap(String value, Collector<Tuple2<String, Integer>>out) {
                // normalize and split the line
                String[] tokens = value.toLowerCase().split("\\W+");
     
                // emit the pairs
                for (String token : tokens) {
                    if (token.length() > 0) {
                        counter.inc();
                        out.collect(new Tuple2<>(token, 1));
                    }
                }
            }
        }
```

No exemplo anterior, a variável `counter` é incrementada para cada palavra que o aplicativo processa. 

Depois de definir sua classe de mapeamento, você cria um fluxo no aplicativo que implementa o mapa:

```
// Split up the lines in pairs (2-tuples) containing: (word,1), and
// group by the tuple field "0" and sum up tuple field "1"
DataStream<Tuple2<String, Integer>> wordCountStream = input.flatMap(new Tokenizer()).keyBy(0).sum(1);
     
// Serialize the tuple to string format, and publish the output to kinesis sink
wordCountStream.map(tuple -> tuple.toString()).addSink(createSinkFromStaticConfig());
```

Para obter o código completo desse aplicativo, consulte [Aplicativo de métrica personalizada para contagem de palavras](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/CustomMetrics/WordCount).

## Visualizar métricas personalizadas
<a name="monitoring-metrics-custom-examples-viewing"></a>

As métricas personalizadas do seu aplicativo aparecem no console de CloudWatch métricas no **AWS/KinesisAnalytics**painel, no grupo de métricas do **aplicativo**. 

# Use CloudWatch alarmes com o Amazon Managed Service para Apache Flink
<a name="monitoring-metrics-alarms"></a>

Usando os alarmes CloudWatch métricos da Amazon, você assiste a uma CloudWatch métrica durante um período de tempo especificado por você. O alarme executa uma ou mais ações com base no valor da métrica ou na expressão em relação a um limite em alguns períodos. Um exemplo de uma ação é o envio de uma notificação para um tópico do Amazon Simple Notiﬁcation Service (Amazon SNS). 

Para obter mais informações sobre CloudWatch alarmes, consulte [Usando CloudWatch alarmes da Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html).

## Analise os alarmes recomendados
<a name="monitoring-metrics-alarms-recommended"></a>

Esta seção contém os alarmes recomendados para monitorar o aplicativos Managed Service for Apache Flink.

A tabela descreve os alarmes recomendados e tem as seguintes colunas:
+ **Expressão métrica:** a métrica ou expressão métrica a ser testada em relação ao limite.
+ **Estatística:** a estatística usada para verificar a métrica, por exemplo, **Average** (Média).
+ **Limite:** o uso deste alarme exige que você determine o limite do desempenho esperado do aplicativo. Você precisa determinar esse limite monitorando seu aplicativo em condições normais.
+ **Descrição:** causas que podem acionar esse alarme e possíveis soluções para a situação.


| Expressão da métrica | Estatística | Limite | Description | 
| --- |--- |--- |--- |
| downtime> 0 | Média | 0 |  Um tempo de inatividade maior que zero indica que o aplicativo falhou. Se o valor for maior que zero, o aplicativo não está processando nenhum dado. Recomendado para todas as aplicações. A Downtime métrica mede a duração de uma interrupção. Um tempo de inatividade maior que zero indica que o aplicativo falhou. Para solução de problemas, consulte [O aplicativo está sendo reiniciado](troubleshooting-rt-restarts.md). | 
| RATE (numberOfFailedCheckpoints)> 0 | Média | 0 | Essa métrica conta o número de pontos de verificação com falha desde o início do aplicativo. Dependendo do aplicativo, pode ser tolerável que os pontos de verificação falhem de vez em quando. Mas, se os pontos de verificação falharem regularmente, é provável que o aplicativo não esteja íntegro e precise de mais atenção. Recomendamos monitorar RATE (numberOfFailedCheckpoints) para alertar sobre o gradiente e não sobre valores absolutos. Recomendado para todas as aplicações. Use essa métrica para monitorar a integridade do aplicativo e verificar o progresso. O aplicativo salva os dados do estado nos pontos de verificação quando estão íntegros. O ponto de verificação pode falhar devido a tempos limite se o aplicativo não estiver progredindo no processamento dos dados de entrada. Para solução de problemas, consulte [O ponto de verificação está atingindo o tempo limite](troubleshooting-chk-timeout.md). | 
| Operator.numRecordsOutPerSecond< limite | Média | O número mínimo de registros emitidos pelo aplicativo em condições normais.  | Recomendado para todas as aplicações. Ficar abaixo desse limite pode indicar que o aplicativo não está fazendo o progresso esperado nos dados de entrada. Para solução de problemas, consulte [O throughput é muito lento](troubleshooting-rt-throughput.md). | 
| records\$1lag\$1max\$1millisbehindLatest> limiar | Máximo | A latência máxima esperada em condições normais. | Se o aplicativo estiver consumindo do Kinesis ou do Kafka, essas métricas indicam se o aplicativo está ficando para trás e precisa ser escalado para acompanhar a carga atual. Essa é uma boa métrica genérica que é fácil de rastrear para todos os tipos de aplicativos. Mas, ele só pode ser usado para escalonamento reativo, ou seja, quando o aplicativo já ficou para trás. Recomendado para todas as aplicações. Use a records\$1lag\$1max métrica para uma fonte do Kafka ou millisbehindLatest para uma fonte de stream do Kinesis. Superar esse limite pode indicar que o aplicativo não está fazendo o progresso esperado nos dados de entrada. Para solução de problemas, consulte [O throughput é muito lento](troubleshooting-rt-throughput.md). | 
| lastCheckpointDuration> limiar | Máximo | A duração máxima esperada do ponto de verificação em condições normais. | Monitora a quantidade de dados armazenados no estado e quanto tempo leva para passar por um ponto de verificação. Se os pontos de verificação aumentarem ou demorarem muito, o aplicativo gastará tempo continuamente fazendo pontos de verificação e terá menos ciclos para o processamento real. Em alguns pontos, os pontos de verificação podem ficar muito grandes ou demorar tanto tempo que acabam falhando. Além de monitorar valores absolutos, os clientes também devem considerar monitorar a taxa de alteração com RATE(lastCheckpointSize) e RATE(lastCheckpointDuration). Se o lastCheckpointDuration aumento continuar, ultrapassar esse limite pode indicar que o aplicativo não está fazendo o progresso esperado nos dados de entrada ou que há problemas com a integridade do aplicativo, como contrapressão. Para solução de problemas, consulte [Crescimento ilimitado do estado](troubleshooting-rt-stateleaks.md). | 
| lastCheckpointSize> limiar | Máximo | O tamanho máximo esperado do ponto de verificação em condições normais. | Monitora a quantidade de dados armazenados no estado e quanto tempo leva para passar por um ponto de verificação. Se os pontos de verificação aumentarem ou demorarem muito, o aplicativo gastará tempo continuamente fazendo pontos de verificação e terá menos ciclos para o processamento real. Em alguns pontos, os pontos de verificação podem ficar muito grandes ou demorar tanto tempo que acabam falhando. Além de monitorar valores absolutos, os clientes também devem considerar monitorar a taxa de alteração com RATE(lastCheckpointSize) e RATE(lastCheckpointDuration). Se o lastCheckpointSize aumento continuar, ultrapassar esse limite pode indicar que o aplicativo está acumulando dados de estado. Se os dados de estado ficarem muito grandes, o aplicativo poderá ficar sem memória ao se recuperar de um ponto de verificação, ou a recuperação de um ponto de verificação poderá levar muito tempo. Para solução de problemas, consulte [Crescimento ilimitado do estado](troubleshooting-rt-stateleaks.md). | 
| heapMemoryUtilization> limiar | Máximo | Isso fornece uma boa indicação da utilização geral dos recursos do aplicativo e pode ser usado para escalabilidade proativa, a menos que o aplicativo esteja vinculado. I/O O heapMemoryUtilization tamanho máximo esperado em condições normais, com um valor recomendado de 90 por cento. | Você pode usar essa métrica para monitorar a utilização máxima da memória dos gerenciadores de tarefas em todo o aplicativo. Se o aplicativo atingir esse limite, você precisará provisionar mais recursos. Você faz isso ativando o escalonamento automático ou aumentando o paralelismo do aplicativo. Para obter mais informações sobre o aumento de recursos, consulte[Implemente a escalabilidade de aplicativos](how-scaling.md). | 
| cpuUtilization> limiar | Máximo | Isso fornece uma boa indicação da utilização geral dos recursos do aplicativo e pode ser usado para escalabilidade proativa, a menos que o aplicativo esteja vinculado. I/O O cpuUtilization tamanho máximo esperado em condições normais, com um valor recomendado de 80 por cento. | Você pode usar essa métrica para monitorar a utilização máxima da CPU dos gerenciadores de tarefas em todo o aplicativo. Se o aplicativo atingir esse limite, você precisará provisionar mais recursos. Faça isso ativando o escalonamento automático ou aumentando o paralelismo do aplicativo. Para obter mais informações sobre o aumento de recursos, consulte[Implemente a escalabilidade de aplicativos](how-scaling.md). | 
| threadsCount> limiar | Máximo | O threadsCount tamanho máximo esperado em condições normais. | Você pode usar essa métrica para observar vazamentos de tópicos nos gerenciadores de tarefas em todo o aplicativo. Se essa métrica atingir esse limite, verifique se há threads criados sem serem fechados no código do aplicativo. | 
| (oldGarbageCollectionTime \$1 100)/60\$1000 over 1 min period')> limiar | Máximo | A oldGarbageCollectionTime duração máxima esperada. Recomendamos definir um limite de forma que o tempo normal de coleta de lixo seja 60% do limite especificado, mas o limite correto para seu aplicativo variará. | Se essa métrica estiver aumentando continuamente, isso pode indicar que há um vazamento de memória nos gerenciadores de tarefas em todo o aplicativo. | 
| RATE(oldGarbageCollectionCount) > limiar | Máximo | O máximo esperado oldGarbageCollectionCount em condições normais. O limite correto para sua inscrição variará. | Se essa métrica estiver aumentando continuamente, isso pode indicar que há um vazamento de memória nos gerenciadores de tarefas em todo o aplicativo. | 
| Operator.currentOutputWatermark - Operator.currentInputWatermark > limiar | Mínimo | O incremento mínimo esperado da marca d'água em condições normais. O limite correto para sua inscrição variará. | Se essa métrica estiver aumentando continuamente, isso pode indicar que o aplicativo está processando eventos cada vez mais antigos ou que uma subtarefa inicial não envia uma marca d'água há um tempo cada vez mais longo. | 