

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

# Registro em log e monitoramento no Amazon Managed Service for Apache Flink
<a name="monitoring-overview"></a>

O monitoramento é uma parte importante para manter a confiabilidade, a disponibilidade e o desempenho dos aplicativos Managed Service for Apache Flink. Você deve coletar dados de monitoramento de todas as partes da sua AWS solução para poder depurar com mais facilidade uma falha multiponto, caso ocorra. 

Antes de começar a monitorar o Managed Service for Apache Flink, crie um plano de monitoramento que inclua as respostas para as seguintes perguntas:
+ Quais são seus objetivos de monitoramento?
+ Quais recursos você vai monitorar?
+ Com que frequência você vai monitorar esses recursos?
+ Quais ferramentas de monitoramento você usará?
+ Quem realizará o monitoramento das tarefas?
+ Quem deve ser notificado quando algo der errado?

A próxima etapa é estabelecer um parâmetro de desempenho normal do Managed Service for Apache Flink em seu ambiente. Você faz isso medindo o desempenho em vários momentos e em condições diferentes de carga. Enquanto monitora o Managed Service for Apache Flink, você pode armazenar dados históricos de monitoramento. Você poderá, em seguida, compará-los com os dados de desempenho atuais, identificar padrões de desempenho normais e anomalias de desempenho, e elaborar métodos para resolver problemas.

**Topics**
+ [Registro em log do Managed Service for Apache Flink](logging.md)
+ [Monitoramento no Managed Service for Apache Flink](monitoring.md)
+ [Configure o registro em log do aplicativo no Managed Service for Apache Flink](cloudwatch-logs.md)
+ [Analise registros com o CloudWatch Logs Insights](cloudwatch-logs-reading.md)
+ [Métricas e dimensões no Managed Service for Apache Flink](metrics-dimensions.md)
+ [Grave mensagens personalizadas no CloudWatch Logs](cloudwatch-logs-writing.md)
+ [Serviço gerenciado de log para chamadas da API Apache Flink com AWS CloudTrail](logging-using-cloudtrail.md)

# Registro em log do Managed Service for Apache Flink
<a name="logging"></a>

O registro em log é importante para que os aplicativos de produção entendam erros e falhas. No entanto, o subsistema de registro precisa coletar e encaminhar entradas de registro para CloudWatch registros. Embora alguns registros sejam bons e desejáveis, um registro extensivo pode sobrecarregar o serviço e fazer com que o aplicativo Flink fique para trás. O log de exceções e avisos certamente é uma boa ideia. Mas, você não pode gerar uma mensagem de log para cada mensagem processada pelo aplicativo Flink. O Flink é otimizado para latências altas constantes e baixas, mas o subsistema de registro não é. Caso seja realmente necessário gerar uma saída de log para cada mensagem processada, use um coletor adicional DataStream dentro do aplicativo Flink e um coletor adequado para enviar os dados para o Amazon CloudWatch S3 ou. Não use o sistema de log Java para essa finalidade. Além disso, a `Debug Monitoring Log Level` configuração do Managed Service for Apache Flink gera uma grande quantidade de tráfego, o que pode criar contrapressão. Você só deve usá-lo enquanto estiver investigando ativamente os problemas com o aplicativo.

## Registros de consulta com o CloudWatch Logs Insights
<a name="logging-querying"></a>

CloudWatch O Logs Insights é um serviço poderoso para consultar registros em grande escala. Os clientes devem aproveitar seus recursos para pesquisar rapidamente os logs para identificar e mitigar erros durante eventos operacionais.

 A consulta a seguir procura exceções em todos os registros do gerenciador de tarefas e as ordena de acordo com a hora em que ocorreram.

```
fields @timestamp, @message
| filter isPresent(throwableInformation.0) or isPresent(throwableInformation) or @message like /(Error|Exception)/
| sort @timestamp desc
```

Para outras consultas úteis, consulte [Exemplos de consultas](https://docs.aws.amazon.com/managed-flink/latest/java/cloudwatch-logs-reading.html#cloudwatch-logs-reading-examples).

# Monitoramento no Managed Service for Apache Flink
<a name="monitoring"></a>

Ao executar aplicativos de streaming em produção, você decide executar o aplicativo de forma contínua e indefinida. É fundamental implementar o monitoramento e o alarme adequados para todos os componentes, não apenas os do aplicativo Flink. Caso contrário, você corre o risco de deixar passar problemas emergentes logo no início e só perceber um evento operacional quando ele estiver totalmente elucidado e for muito mais difícil de mitigar. No geral é preciso monitorar:
+ A fonte está ingerindo dados?
+ Os dados são lidos a partir da fonte (da perspectiva da fonte)?
+ O aplicativo Flink está recebendo dados?
+ O aplicativo Flink é capaz de acompanhar ou está ficando para trás?
+ O aplicativo Flink está persistindo em colocar dados no coletor (do ponto de vista do aplicativo)?
+ O coletor está recebendo dados?

Métricas mais específicas devem, em seguida, ser consideradas para o aplicativo Flink. Esse [CloudWatch painel](https://github.com/aws-samples/kda-metrics-dashboard) fornece um bom ponto de partida. Para obter mais informações sobre quais métricas monitorar para aplicativos de produção, consulte [Use CloudWatch alarmes com o Amazon Managed Service para Apache Flink](monitoring-metrics-alarms.md). Essas métricas incluem:
+ **records\$1lag\$1max** e **MillisBehindLatest** – se o aplicativo estiver consumindo do Kinesis ou do Kafka, estas métricas indicam se o aplicativo está ficando para trás e precisa ser agilizado 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.
+ **CPUUtilization **heapMemoryUtilization****e — Essas métricas fornecem uma boa indicação da utilização geral dos recursos do aplicativo e podem ser usadas para escalabilidade proativa, a menos que o aplicativo esteja vinculado. I/O 
+ **Tempo de inatividade** – 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.
+ **lastCheckpointSize**e *lastCheckpointDuration*— Essas métricas monitoram a quantidade de dados armazenados no estado e quanto tempo é necessário para chegar a 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)`.
+ **numberOfFailedPontos de verificação** — 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 o monitoramento `RATE(numberOfFailedCheckpoints)` para gerar alertas sobre o gradiente e não sobre os valores absolutos.

# Configure o registro em log do aplicativo no Managed Service for Apache Flink
<a name="cloudwatch-logs"></a>

Ao adicionar uma opção de CloudWatch registro da Amazon ao seu aplicativo Managed Service for Apache Flink, você pode monitorar eventos do aplicativo ou problemas de configuração.

Este tópico descreve como configurar seu aplicativo para gravar eventos do aplicativo em um stream do CloudWatch Logs. Uma opção de CloudWatch registro é uma coleção de configurações e permissões do aplicativo que seu aplicativo usa para configurar a forma como grava eventos do aplicativo no CloudWatch Logs. Você pode adicionar e configurar uma opção de CloudWatch registro usando o Console de gerenciamento da AWS ou o AWS Command Line Interface (AWS CLI).

Observe o seguinte sobre como adicionar uma opção de CloudWatch registro ao seu aplicativo:
+ Quando você adiciona uma opção de CloudWatch registro usando o console, o Managed Service for Apache Flink cria o grupo de CloudWatch log e o stream de log para você e adiciona as permissões que seu aplicativo precisa para gravar no stream de log. 
+ Ao adicionar uma opção de CloudWatch registro usando a API, você também deve criar o grupo de registros e o fluxo de registros do aplicativo e adicionar as permissões que seu aplicativo precisa para gravar no fluxo de registros.

## Configurar o CloudWatch registro usando o console
<a name="cloudwatch-logs-console"></a>

Quando você ativa o CloudWatch registro em log para seu aplicativo no console, um grupo de CloudWatch registros e um fluxo de registros são criados para você. Além disso, a política de permissões do seu aplicativo é atualizada com permissões para gravar no fluxo. 

O Managed Service for Apache Flink cria um grupo de logs chamado usando a seguinte convenção, onde *ApplicationName* está o nome do seu aplicativo.

```
/aws/kinesis-analytics/ApplicationName
```

O Managed Service for Apache Flink cria um fluxo de logs no novo grupo de logs com o nome a seguir.

```
kinesis-analytics-log-stream
```

Você define o nível da métrica de monitoramento do aplicativo e o nível do log de monitoramento usando a seção **Monitoring log level** (Nível do log de monitoramento) da página **Configure application** (Configurar aplicativo). Para obter informações sobre os níveis de log do aplicativo, consulte [Controle os níveis de monitoramento do aplicativo](#cloudwatch_levels).

## Configurar o CloudWatch registro usando a CLI
<a name="cloudwatch-logs-api"></a>

Para adicionar uma opção de CloudWatch registro usando o AWS CLI, você conclui o seguinte: 
+ Crie um grupo de CloudWatch registros e um fluxo de registros.
+ Adicione uma opção de registro ao criar um aplicativo usando a [CreateApplication](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html)ação ou adicione uma opção de registro a um aplicativo existente usando a [AddApplicationCloudWatchLoggingOption](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_AddApplicationCloudWatchLoggingOption.html)ação.
+ Adicione permissões à política do seu aplicativo para gravar nos logs.

### Crie um grupo de CloudWatch registros e um fluxo de registros
<a name="cloudwatch-logs-api-create"></a>

Você cria um grupo de CloudWatch registros e transmite usando o console de CloudWatch registros ou a API. Para obter informações sobre como criar um grupo de CloudWatch registros e um fluxo de registros, consulte Como [trabalhar com grupos de registros e fluxos de registros](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html).

### Trabalhe com opções de CloudWatch registro de aplicativos
<a name="adding_cloudwatch"></a>

Use as ações de API a seguir para adicionar uma opção de CloudWatch log a um aplicativo novo ou existente ou alterar uma opção de log de um aplicativo existente. Para obter informações sobre como usar um arquivo JSON como entrada de uma ação da API, consulte [Exemplo de código de API para o Managed Service for Apache Flink](api-examples.md).

#### Adicione uma opção de CloudWatch registro ao criar um aplicativo
<a name="add_cloudwatch_create"></a>

O exemplo a seguir demonstra como usar a `CreateApplication` ação para adicionar uma opção de CloudWatch log ao criar um aplicativo. No exemplo, substitua *Amazon Resource Name (ARN) of the CloudWatch Log stream to add to the new application* com suas próprias informações. Para obter mais informações sobre a ação, consulte [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).

```
{
    "ApplicationName": "test",
    "ApplicationDescription": "test-application-description",
    "RuntimeEnvironment": "FLINK-1_15",
    "ServiceExecutionRole": "arn:aws:iam::123456789123:role/myrole",
    "ApplicationConfiguration": {
        "ApplicationCodeConfiguration": {
            "CodeContent": {
                "S3ContentLocation":{
                              "BucketARN": "arn:aws:s3:::amzn-s3-demo-bucket",
                              "FileKey": "myflink.jar"
                }
            },
            "CodeContentType": "ZIPFILE"
        }
    },
    "CloudWatchLoggingOptions": [{
      "LogStreamARN": "<Amazon Resource Name (ARN) of the CloudWatch log stream to add to the new application>"
	}]
}
```

#### Adicionar uma opção de CloudWatch log a um aplicativo existente
<a name="add_to_existing_app"></a>

O exemplo a seguir demonstra como usar a `AddApplicationCloudWatchLoggingOption` ação para adicionar uma opção de CloudWatch log a um aplicativo existente. No exemplo, substitua cada um *user input placeholder* por suas próprias informações. Para obter mais informações sobre a ação, consulte [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_AddApplicationCloudWatchLoggingOption.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_AddApplicationCloudWatchLoggingOption.html).

```
{
   "ApplicationName": "<Name of the application to add the log option to>",
   "CloudWatchLoggingOption": { 
      "LogStreamARN": "<ARN of the log stream to add to the application>"
   },
   "CurrentApplicationVersionId": <Version of the application to add the log to>
}
```

#### Atualizar uma opção de CloudWatch registro existente
<a name="update_existing"></a>

O exemplo a seguir demonstra como usar a `UpdateApplication` ação para modificar uma opção de CloudWatch log existente. No exemplo, substitua cada um *user input placeholder* por suas próprias informações. Para obter mais informações sobre a ação, consulte [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).

```
{
   "ApplicationName": "<Name of the application to update the log option for>",
   "CloudWatchLoggingOptionUpdates": [ 
         { 
            "CloudWatchLoggingOptionId": "<ID of the logging option to modify>",
            "LogStreamARNUpdate": "<ARN of the new log stream to use>"
         }
      ],
   "CurrentApplicationVersionId": <ID of the application version to modify>
}
```

#### Excluir uma opção de CloudWatch registro de um aplicativo
<a name="delete-log"></a>

O exemplo a seguir demonstra como usar a `DeleteApplicationCloudWatchLoggingOption` ação para excluir uma opção de CloudWatch log existente. No exemplo, substitua cada um *user input placeholder* por suas próprias informações. Para obter mais informações sobre a ação, consulte [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_DeleteApplicationCloudWatchLoggingOption.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_DeleteApplicationCloudWatchLoggingOption.html).

```
{
   "ApplicationName": "<Name of application to delete log option from>",
   "CloudWatchLoggingOptionId": "<ID of the application log option to delete>",
   "CurrentApplicationVersionId": <Version of the application to delete the log option from>
}
```

#### Defina o nível de registro em log do aplicativo
<a name="cloudwatch-level"></a>

Para definir o nível de registro em log do aplicativo, use o parâmetro [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_MonitoringConfiguration.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_MonitoringConfiguration.html) 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 [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_MonitoringConfigurationUpdate.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_MonitoringConfigurationUpdate.html) 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). 

Para obter informações sobre os níveis de log do aplicativo, consulte [Controle os níveis de monitoramento do aplicativo](#cloudwatch_levels).

##### Defina o nível de registro em log do aplicativo ao criar um aplicativo
<a name="cloudwatch-level-create"></a>

O exemplo de solicitação a seguir para a 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) define o nível de log do aplicativo como `INFO`.

```
{
   "ApplicationName": "MyApplication",                    
   "ApplicationDescription": "My Application Description",
   "ApplicationConfiguration": {
      "ApplicationCodeConfiguration":{
      "CodeContent":{
        "S3ContentLocation":{
          "BucketARN":"arn:aws:s3:::amzn-s3-demo-bucket",
          "FileKey":"myflink.jar",
          "ObjectVersion":"AbCdEfGhIjKlMnOpQrStUvWxYz12345"
        }
      },
      "CodeContentType":"ZIPFILE"
      },
      "FlinkApplicationConfiguration": 
         "MonitoringConfiguration": { 
            "ConfigurationType": "CUSTOM",
            "LogLevel": "INFO"
         }
      },
   "RuntimeEnvironment": "FLINK-1_15",
   "ServiceExecutionRole": "arn:aws:iam::123456789123:role/myrole"
}
```

##### Atualize o nível de registro em log do aplicativo
<a name="cloudwatch-level-update"></a>

O exemplo de solicitação a seguir para a 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) define o nível de log do aplicativo como `INFO`.

```
{
   "ApplicationConfigurationUpdate": {
      "FlinkApplicationConfigurationUpdate": { 
         "MonitoringConfigurationUpdate": { 
            "ConfigurationTypeUpdate": "CUSTOM",
            "LogLevelUpdate": "INFO"
         }
      }
   }
}
```

### Adicione permissões para gravar no fluxo de CloudWatch registros
<a name="enable_putlogevents"></a>

O Managed Service for Apache Flink precisa de permissões para gravar erros de configuração incorreta. CloudWatch Você pode adicionar essas permissões à função AWS Identity and Access Management (IAM) que o Managed Service for Apache Flink assume.

Para obter mais informações sobre como usar um perfil do IAM para o Managed Service for Apache Flink, consulte [Gerenciamento de identidade e acesso para o Amazon Managed Service for Apache Flink](security-iam.md).

#### Política de confiança
<a name="enable_putlogevents_trust_policy"></a>

Para conceder permissões ao Managed Service for Apache Flink para assumir o perfil do IAM, anexe a política de confiança a seguir ao perfil de execução de serviço.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "kinesisanalytics.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

#### Política de permissões
<a name="enable_putlogevents_permissions_policy"></a>

Para conceder permissões a um aplicativo para gravar eventos de log a CloudWatch partir de um recurso do Managed Service for Apache Flink, você pode usar a seguinte política de permissões do IAM. Forneça os nomes de recursos da Amazon (ARNs) corretos para seu grupo de registros e stream.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Stmt0123456789000",
            "Effect": "Allow",
            "Action": [
                "logs:PutLogEvents",
                "logs:DescribeLogGroups",
                "logs:DescribeLogStreams"
            ],
            "Resource": [
                "arn:aws:logs:us-east-1:123456789012:log-group:my-log-group:log-stream:my-log-stream*",
                "arn:aws:logs:us-east-1:123456789012:log-group:my-log-group:*",
                "arn:aws:logs:us-east-1:123456789012:log-group:*"
            ]
        }
    ]
}
```

------

## Controle os níveis de monitoramento do aplicativo
<a name="cloudwatch_levels"></a>

Você controla a geração de mensagens de log do aplicativo usando o *Nível de métricas de monitoramento* e o *Nível de registro em log de monitoramento* do aplicativo.

O nível das métricas de monitoramento do aplicativo controla a granularidade das mensagens de log. Os níveis de métricas de monitoramento são definidos da seguinte forma:
+ **Aplicativo**: as métricas têm como escopo o aplicativo todo.
+ **Tarefa**: as métricas têm como escopo cada tarefa. Para obter mais informações sobre as tarefas, consulte [Implemente a escalabilidade de aplicativos no Managed Service for Apache Flink](how-scaling.md).
+ **Operador**: as métricas têm como escopo cada operador. Para obter mais informações sobre os operadores, consulte [Transforme dados usando operadores no Managed Service for Apache Flink com a API DataStream](how-operators.md).
+ **Paralelismo**: as métricas têm como escopo o paralelismo de aplicativos. Você só pode definir esse nível de métrica usando o [ MonitoringConfigurationUpdate](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_MonitoringConfigurationUpdate.html)parâmetro da [ UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html)API. Você não pode definir esse nível de métricas usando o console. Para obter mais informações sobre paralelismo, consulte [Implemente a escalabilidade de aplicativos no Managed Service for Apache Flink](how-scaling.md).

O nível do registro em log de monitoramento do aplicativo controla a verbosidade do log do aplicativo. Os níveis do registro em log de monitoramento são definidos da seguinte forma:
+ **Erro** possíveis eventos catastróficos do aplicativo.
+ **Alerta**: situações potencialmente prejudiciais do aplicativo.
+ **Info**: eventos de falha informativos e transitórios do aplicativo. Recomendamos usar esse nível de log.
+ **Depuração**: eventos informativos detalhados que são mais úteis para depurar um aplicativo. *Observação*: use esse nível somente para fins de depuração temporária. 

## Aplique as práticas recomendadas de registro em log
<a name="cloudwatch_bestpractices"></a>

Recomendamos que seu aplicativo use o nível **Info** de registro em log. Recomendamos esse nível para garantir que você veja os erros do Apache Flink, que são registrados em log no nível **Info** e não no nível **Error**.

Recomendamos que você use o nível de **Debug** apenas temporariamente ao investigar problemas do aplicativo. Volte para o nível **Info** quando o problema for resolvido. Usar o nível **Debug** de registro em log afetará significativamente o desempenho do seu aplicativo.

O registro em log excessivo também pode afetar significativamente o desempenho do aplicativo. Recomendamos que você não grave log para cada registro processado, por exemplo. O registro excessivo pode causar gargalos graves no processamento de dados e causar contrapressão na leitura de dados das fontes.

## Realize a solução de problemas do registro em log
<a name="cloudwatch_troubleshooting"></a>

Se os registros do aplicativo não estiverem sendo gravados no fluxo de logs, verifique o seguinte: 
+ Se o perfil e as políticas do IAM do seu aplicativo estão corretos. Se a política do seu aplicativo precisa das seguintes permissões para acessar seu fluxo de logs:
  + `logs:PutLogEvents`
  + `logs:DescribeLogGroups`
  + `logs:DescribeLogStreams`

  Para obter mais informações, consulte [Adicione permissões para gravar no fluxo de CloudWatch registros](#enable_putlogevents).
+ Verifique se o seu aplicativo está sendo executado. Para verificar o status do seu aplicativo, visualize a página do seu aplicativo no console ou use as [ListApplications](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_ListApplications.html)ações [DescribeApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_DescribeApplication.html)ou.
+ Monitore CloudWatch métricas como `downtime` para diagnosticar outros problemas do aplicativo. Para obter informações sobre CloudWatch métricas de leitura, consulte[Métricas e dimensões no Managed Service for Apache Flink](metrics-dimensions.md).

## Use o CloudWatch Logs Insights
<a name="cloudwatch_next"></a>

Depois de habilitar o CloudWatch login no seu aplicativo, você pode usar o CloudWatch Logs Insights para analisar os registros do seu aplicativo. Para obter mais informações, consulte [Analise registros com o CloudWatch Logs Insights](cloudwatch-logs-reading.md).

# Analise registros com o CloudWatch Logs Insights
<a name="cloudwatch-logs-reading"></a>

Depois de adicionar uma opção de CloudWatch registro ao seu aplicativo, conforme descrito na seção anterior, você pode usar o CloudWatch Logs Insights para consultar seus fluxos de registros em busca de eventos ou erros específicos.

CloudWatch O Logs Insights permite que você pesquise e analise interativamente seus dados de registro no CloudWatch Logs. 

Para obter informações sobre como começar a usar o CloudWatch Logs Insights, consulte [Analisar dados de registro com o CloudWatch Logs Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html).

## Executar um exemplo de consulta
<a name="cloudwatch-logs-reading-run"></a>

Esta seção descreve como executar um exemplo de consulta do CloudWatch Logs Insights.

**Pré-requisitos**
+ Grupos de registros e fluxos de registros existentes configurados no CloudWatch Logs.
+ Registros existentes armazenados em CloudWatch Registros.

Se você usa serviços como AWS CloudTrail o Amazon Route 53 ou o Amazon VPC, provavelmente já configurou os registros desses serviços para CloudWatch acessar o Logs. Para mais informações sobre o envio de CloudWatch registros para o Logs, consulte [Introdução aos CloudWatch registros](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_GettingStarted.html).

As consultas no CloudWatch Logs Insights retornam um conjunto de campos de eventos de log ou o resultado de uma agregação matemática ou outra operação realizada em eventos de log. Esta seção demonstra uma consulta que retorna uma lista de eventos de log.

**Para executar uma consulta de amostra do CloudWatch Logs Insights**

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 ** Insights**.

   

1. O editor de consultas próximo do topo da tela contém uma consulta padrão que retorna os vinte eventos de log mais recentes. Acima do editor de consultas, selecione um grupo de logs para consulta.

   

   Quando você seleciona um grupo de CloudWatch registros, o Logs Insights detecta automaticamente os campos nos dados do grupo de registros e os exibe nos **campos descobertos** no painel direito. Ele também exibe um gráfico de barras de eventos de log neste grupo de logs com o passar do tempo. Esse gráfico de barras mostra a distribuição de eventos no grupo de logs correspondente à consulta e ao intervalo de tempo, e não apenas os eventos exibidos na tabela.

1. Selecione **Executar consulta**.

   Os resultados da consulta são exibidos. Neste exemplo, os resultados são 20 eventos de log mais recentes de qualquer tipo.

1. Para ver todos os campos de um dos eventos de log retornados, selecione a seta para a esquerda desse evento de logs.

Para obter mais informações sobre como executar e modificar consultas do CloudWatch Logs Insights, consulte [Executar e modificar uma consulta de amostra](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_AnalyzeLogData_RunSampleQuery.html).

## Analise as consultas de exemplo
<a name="cloudwatch-logs-reading-examples"></a>

Esta seção contém exemplos de consultas do CloudWatch Logs Insights para analisar os registros do aplicativo Managed Service for Apache Flink. Essas consultas fazem uma pesquisa entre vários exemplos de condições de erro e servem como modelos para escrever consultas que encontrem outras condições de erro. 

**nota**  
Substitua a região (*us-west-2*), o ID da conta (*012345678901*) e o nome do aplicativo (*YourApplication*) nos exemplos de consulta a seguir pela região do seu aplicativo e pelo ID da conta.

**Topics**
+ [Analise as operações: distribuição de tarefas](#cloudwatch-logs-reading-tm)
+ [Analise as operações: mudança no paralelismo](#cloudwatch-logs-reading-auto)
+ [Analise os erros: acesso negado](#cloudwatch-logs-reading-access)
+ [Analise os erros: fonte ou coletor não encontrado](#cloudwatch-logs-reading-con)
+ [Analise os erros: falhas relacionadas à tarefa do aplicativo](#cloudwatch-logs-reading-apps)

### Analise as operações: distribuição de tarefas
<a name="cloudwatch-logs-reading-tm"></a>

A consulta a seguir do CloudWatch Logs Insights retorna o número de tarefas que o Apache Flink Job Manager distribui entre os gerenciadores de tarefas. Você precisa definir o período de tempo da consulta para corresponder a uma execução de trabalho para que a consulta não retorne tarefas de trabalhos anteriores. Para obter mais informações sobre paralelismo, consulte [Implemente a escalabilidade de aplicativos](how-scaling.md). 

```
fields @timestamp, message
| filter message like /Deploying/
| parse message " to flink-taskmanager-*" as @tmid
| stats count(*) by @tmid
| sort @timestamp desc
| limit 2000
```

A consulta do CloudWatch Logs Insights a seguir retorna as subtarefas atribuídas a cada Gerenciador de tarefas. O número total de subtarefas é a soma do paralelismo de cada tarefa. O paralelismo de tarefas é derivado do paralelismo do operador e é igual ao paralelismo do aplicativo por padrão, a menos que você o altere no código especificando `setParallelism`. Para obter mais informações sobre como definir o paralelismo do operador, consulte [Definindo o paralelismo: nível do operador](https://nightlies.apache.org/flink/flink-docs-release-1.15/dev/parallel.html#operator-level) na [documentação do Apache Flink.](https://nightlies.apache.org/flink/flink-docs-release-1.15/)

```
fields @timestamp, @tmid, @subtask
| filter message like /Deploying/
| parse message "Deploying * to flink-taskmanager-*" as @subtask, @tmid
| sort @timestamp desc
| limit 2000
```

Para obter mais informações sobre a programação de tarefas, consulte [Trabalhos e programações](https://nightlies.apache.org/flink/flink-docs-release-1.15/internals/job_scheduling.html) na [documentação do Apache Flink](https://nightlies.apache.org/flink/flink-docs-release-1.15/).

### Analise as operações: mudança no paralelismo
<a name="cloudwatch-logs-reading-auto"></a>

A consulta a seguir do CloudWatch Logs Insights retorna alterações no paralelismo de um aplicativo (por exemplo, devido ao escalonamento automático). Essa consulta também retorna alterações manuais no paralelismo do aplicativo. Para obter mais informações sobre a escalabilidade automática, consulte [Use a escalabilidade automática no Managed Service for Apache Flink](how-scaling-auto.md).

```
fields @timestamp, @parallelism
| filter message like /property: parallelism.default, /
| parse message "default, *" as @parallelism
| sort @timestamp asc
```

### Analise os erros: acesso negado
<a name="cloudwatch-logs-reading-access"></a>

A consulta a seguir do CloudWatch Logs Insights retorna `Access Denied` registros.

```
fields @timestamp, @message, @messageType
| filter applicationARN like /arn:aws:kinesisanalyticsus-west-2:012345678901:application\/YourApplication/
| filter @message like /AccessDenied/
| sort @timestamp desc
```

### Analise os erros: fonte ou coletor não encontrado
<a name="cloudwatch-logs-reading-con"></a>

A consulta a seguir do CloudWatch Logs Insights retorna `ResourceNotFound` registros. `ResourceNotFound`os registros resultam se uma fonte ou coletor do Kinesis não for encontrada.

```
fields @timestamp,@message
| filter applicationARN like /arn:aws:kinesisanalyticsus-west-2:012345678901:application\/YourApplication/
| filter @message like /ResourceNotFoundException/
| sort @timestamp desc
```

### Analise os erros: falhas relacionadas à tarefa do aplicativo
<a name="cloudwatch-logs-reading-apps"></a>

A consulta a seguir do CloudWatch Logs Insights retorna os registros de falhas relacionados à tarefa de um aplicativo. Esses logs acontecem se o status de um aplicativo mudar de `RUNNING` para `RESTARTING`.

```
fields @timestamp,@message
| filter applicationARN like /arn:aws:kinesisanalyticsus-west-2:012345678901:application\/YourApplication/
| filter @message like /switched from RUNNING to RESTARTING/
| sort @timestamp desc
```

Para aplicativos que usam a versão 1.8.2 ou anterior do Apache Flink, as falhas relacionadas às tarefas resultarão na mudança do status do aplicativo de `RUNNING` para `FAILED`. Ao usar o Apache Flink 1.8.2 ou anterior, use a consulta a seguir para pesquisar falhas relacionadas à tarefas do aplicativo:

```
fields @timestamp,@message
| filter applicationARN like /arn:aws:kinesisanalyticsus-west-2:012345678901:application\/YourApplication/
| filter @message like /switched from RUNNING to FAILED/
| sort @timestamp desc
```

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

# Grave mensagens personalizadas no CloudWatch Logs
<a name="cloudwatch-logs-writing"></a>

Você pode gravar mensagens personalizadas no log do aplicativo Managed Service for Apache Flink. CloudWatch Você faz isso usando abiblioteca [https://logging.apache.org/log4j/](https://logging.apache.org/log4j/) do Apache ou abiblioteca [https://www.slf4j.org/](https://www.slf4j.org/).

**Topics**
+ [Gravar em CloudWatch registros usando o Log4J](#cloudwatch-logs-writing-log4j)
+ [Gravar em CloudWatch registros usando SLF4 J](#cloudwatch-logs-writing-slf4j)

## Gravar em CloudWatch registros usando o Log4J
<a name="cloudwatch-logs-writing-log4j"></a>

1. Adicione as seguintes dependências ao arquivo `pom.xml` do aplicativo:

   ```
   <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-api</artifactId>
       <version>2.6.1</version>
   </dependency>
   <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-core</artifactId>
       <version>2.6.1</version>
   </dependency>
   ```

1. Inclua o objeto da biblioteca:

   ```
   import org.apache.logging.log4j.Logger;
   ```

1. Instancie o objeto `Logger`, transmitindo sua classe de aplicativo:

   ```
   private static final Logger log = LogManager.getLogger.getLogger(YourApplicationClass.class);
   ```

1. Grave no log usando `log.info`. Um grande número de mensagens é gravado no log do aplicativo. Para facilitar a filtragem de suas mensagens personalizadas, use o nível de log `INFO` do aplicativo.

   ```
   log.info("This message will be written to the application's CloudWatch log");
   ```

O aplicativo grava um registro no log com uma mensagem semelhante à seguinte:

```
{
  "locationInformation": "com.amazonaws.services.managed-flink.StreamingJob.main(StreamingJob.java:95)", 
  "logger": "com.amazonaws.services.managed-flink.StreamingJob", 
  "message": "This message will be written to the application's CloudWatch log", 
  "threadName": "Flink-DispatcherRestEndpoint-thread-2", 
  "applicationARN": "arn:aws:kinesisanalyticsus-east-1:123456789012:application/test", 
  "applicationVersionId": "1", "messageSchemaVersion": "1", 
  "messageType": "INFO" 
}
```

## Gravar em CloudWatch registros usando SLF4 J
<a name="cloudwatch-logs-writing-slf4j"></a>

1. Adicione as seguintes dependências ao arquivo `pom.xml` do aplicativo:

   ```
   <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-log4j12</artifactId>
       <version>1.7.7</version>
       <scope>runtime</scope>
   </dependency>
   ```

1. Inclua os objetos da biblioteca:

   ```
   import org.slf4j.Logger;
   import org.slf4j.LoggerFactory;
   ```

1. Instancie o objeto `Logger`, transmitindo sua classe de aplicativo:

   ```
   private static final Logger log = LoggerFactory.getLogger(YourApplicationClass.class);
   ```

1. Grave no log usando `log.info`. Um grande número de mensagens é gravado no log do aplicativo. Para facilitar a filtragem de suas mensagens personalizadas, use o nível de log `INFO` do aplicativo.

   ```
   log.info("This message will be written to the application's CloudWatch log");
   ```

O aplicativo grava um registro no log com uma mensagem semelhante à seguinte:

```
{
  "locationInformation": "com.amazonaws.services.managed-flink.StreamingJob.main(StreamingJob.java:95)", 
  "logger": "com.amazonaws.services.managed-flink.StreamingJob", 
  "message": "This message will be written to the application's CloudWatch log", 
  "threadName": "Flink-DispatcherRestEndpoint-thread-2", 
  "applicationARN": "arn:aws:kinesisanalyticsus-east-1:123456789012:application/test", 
  "applicationVersionId": "1", "messageSchemaVersion": "1", 
  "messageType": "INFO" 
}
```

# Serviço gerenciado de log para chamadas da API Apache Flink com AWS CloudTrail
<a name="logging-using-cloudtrail"></a>

O Managed Service for Apache Flink é integrado com AWS CloudTrail, um serviço que fornece um registro das ações realizadas por um usuário, função ou AWS serviço no Managed Service for Apache Flink. CloudTrail captura todas as chamadas de API para o Managed Service for Apache Flink como eventos. As chamadas capturadas incluem as chamadas do console do Managed Service for Apache Flink e as chamadas de código para as operações de API do Managed Service for Apache Flink. Se você criar uma trilha, poderá habilitar a entrega contínua de CloudTrail eventos para um bucket do Amazon S3, incluindo eventos para o Managed Service for Apache Flink. Se você não configurar uma trilha, ainda poderá ver os eventos mais recentes no CloudTrail console no **Histórico de eventos**. Usando as informações coletadas por CloudTrail, você pode determinar a solicitação que foi feita ao Managed Service for Apache Flink, o endereço IP do qual a solicitação foi feita, quem fez a solicitação, quando ela foi feita e detalhes adicionais. 

Para saber mais sobre isso CloudTrail, consulte o [Guia AWS CloudTrail do usuário](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/).

## Informações do Managed Service for Apache Flink em CloudTrail
<a name="service-name-info-in-cloudtrail"></a>

CloudTrail é ativado em sua AWS conta quando você cria a conta. **Quando a atividade ocorre no Managed Service for Apache Flink, essa atividade é registrada em um CloudTrail evento junto com outros eventos de AWS serviço no histórico de eventos.** Você pode visualizar, pesquisar e baixar eventos recentes em sua AWS conta. Para obter mais informações, consulte [Visualização de eventos com histórico de CloudTrail eventos](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html). 

Para um registro contínuo dos eventos em sua AWS conta, incluindo eventos do Managed Service for Apache Flink, crie uma trilha. Uma *trilha* permite CloudTrail entregar arquivos de log para um bucket do Amazon S3. Por padrão, quando você cria uma trilha no console, a trilha se aplica a todas as AWS regiões. A trilha registra eventos de todas as regiões na AWS partição e entrega os arquivos de log ao bucket do Amazon S3 que você especificar. Além disso, você pode configurar outros AWS serviços para analisar e agir com base nos dados de eventos coletados nos CloudTrail registros. Para saber mais, consulte: 
+ [Visão Geral para Criar uma Trilha](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)
+ [CloudTrail Serviços e integrações compatíveis](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-aws-service-specific-topics.html#cloudtrail-aws-service-specific-topics-integrations)
+ [Configurando notificações do Amazon SNS para CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/getting_notifications_top_level.html)
+ [Recebendo arquivos de CloudTrail log de várias regiões](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html) e [recebendo arquivos de CloudTrail log de várias contas](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-receive-logs-from-multiple-accounts.html)

Todas as ações do Managed Service for Apache Flink são registradas CloudTrail e documentadas na referência da API [Managed Service for Apache](/managed-flink/latest/apiv2/Welcome.html) Flink. Por exemplo, chamadas para as ` [UpdateApplication](/managed-flink/latest/apiv2/API_UpdateApplication.html)` ações `[CreateApplication](/managed-flink/latest/apiv2/API_CreateApplication.html)` e geram entradas nos arquivos de CloudTrail log. 

Cada entrada de log ou evento contém informações sobre quem gerou a solicitação. As informações de identidade ajudam a determinar o seguinte: 
+ Se a solicitação foi feita com credenciais de usuário root ou AWS Identity and Access Management (IAM).
+ Se a solicitação foi feita com credenciais de segurança temporárias de um perfil ou de um usuário federado.
+ Se a solicitação foi feita por outro AWS serviço.

Para obter mais informações, consulte [Elemento userIdentity do CloudTrail ](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html).

## Entenda as entradas no arquivo de log do Managed Service for Apache Flink
<a name="understanding-service-name-entries"></a>

Uma trilha é uma configuração que permite a entrega de eventos como arquivos de log para um bucket do Amazon S3 que você especificar. CloudTrail os arquivos de log contêm uma ou mais entradas de log. Um evento representa uma única solicitação de qualquer fonte e inclui informações sobre a ação solicitada, a data e a hora da ação, os parâmetros da solicitação e assim por diante. CloudTrail os arquivos de log não são um rastreamento de pilha ordenado das chamadas públicas de API, portanto, eles não aparecem em nenhuma ordem específica. 

O exemplo a seguir mostra uma entrada de CloudTrail registro que demonstra as [DescribeApplication](/managed-flink/latest/apiv2/API_DescribeApplication.html)ações [AddApplicationCloudWatchLoggingOption](/managed-flink/latest/apiv2/API_AddApplicationCloudWatchLoggingOption.html)e.

```
{
    "Records": [
        {
            "eventVersion": "1.05",
            "userIdentity": {
                "type": "IAMUser",
                "principalId": "EX_PRINCIPAL_ID",
                "arn": "arn:aws:iam::012345678910:user/Alice",
                "accountId": "012345678910",
                "accessKeyId": "EXAMPLE_KEY_ID",
                "userName": "Alice"
            },
            "eventTime": "2019-03-07T01:19:47Z",
            "eventSource": "kinesisanlaytics.amazonaws.com",
            "eventName": "AddApplicationCloudWatchLoggingOption",
            "awsRegion": "us-east-1",
            "sourceIPAddress": "127.0.0.1",
            "userAgent": "aws-sdk-java/unknown-version Linux/x.xx",
            "requestParameters": {
                "applicationName": "cloudtrail-test",
                "currentApplicationVersionId": 1,
                "cloudWatchLoggingOption": {
                    "logStreamARN": "arn:aws:logs:us-east-1:012345678910:log-group:cloudtrail-test:log-stream:flink-cloudwatch"
                }
            },
            "responseElements": {
                "cloudWatchLoggingOptionDescriptions": [
                    {
                        "cloudWatchLoggingOptionId": "2.1",
                        "logStreamARN": "arn:aws:logs:us-east-1:012345678910:log-group:cloudtrail-test:log-stream:flink-cloudwatch"
                    }
                ],
                "applicationVersionId": 2,
                "applicationARN": "arn:aws:kinesisanalyticsus-east-1:012345678910:application/cloudtrail-test"
            },
            "requestID": "18dfb315-4077-11e9-afd3-67f7af21e34f",
            "eventID": "d3c9e467-db1d-4cab-a628-c21258385124",
            "eventType": "AwsApiCall",
            "apiVersion": "2018-05-23",
            "recipientAccountId": "012345678910"
        },
        {
            "eventVersion": "1.05",
            "userIdentity": {
                "type": "IAMUser",
                "principalId": "EX_PRINCIPAL_ID",
                "arn": "arn:aws:iam::012345678910:user/Alice",
                "accountId": "012345678910",
                "accessKeyId": "EXAMPLE_KEY_ID",
                "userName": "Alice"
            },
            "eventTime": "2019-03-12T02:40:48Z",
            "eventSource": "kinesisanlaytics.amazonaws.com",
            "eventName": "DescribeApplication",
            "awsRegion": "us-east-1",
            "sourceIPAddress": "127.0.0.1",
            "userAgent": "aws-sdk-java/unknown-version Linux/x.xx",
            "requestParameters": {
                "applicationName": "sample-app"
            },
            "responseElements": null,
            "requestID": "3e82dc3e-4470-11e9-9d01-e789c4e9a3ca",
            "eventID": "90ffe8e4-9e47-48c9-84e1-4f2d427d98a5",
            "eventType": "AwsApiCall",
            "apiVersion": "2018-05-23",
            "recipientAccountId": "012345678910"
        }
    ]
}
```