

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Journalisation et surveillance dans Amazon Managed Service pour Apache Flink
<a name="monitoring-overview"></a>

La surveillance est essentielle pour assurer la fiabilité, la disponibilité et les performances de vos applications de service géré pour Apache Flink. Vous devez collecter des données de surveillance provenant de toutes les parties de votre AWS solution afin de pouvoir corriger plus facilement une défaillance multipoint, le cas échéant. 

Avant de commencer la surveillance du service géré pour Apache Flink, vous devez créer un plan de surveillance qui contient les réponses aux questions suivantes :
+ Quels sont les objectifs de la surveillance ?
+ Quelles sont les ressources à surveiller ?
+ À quelle fréquence les ressources doivent-elles être surveillées ?
+ Quels outils de surveillance utiliser ?
+ Qui exécute les tâches de supervision ?
+ Qui doit être informé en cas de problème ?

La prochaine étape consiste à établir une base pour les performances normales du service géré pour Apache Flink dans votre environnement. Pour cela, vous devez mesurer les performances à différents moments et sous différentes conditions de charge. Lorsque vous surveillez le service géré pour Apache Flink, vous pouvez stocker des données de surveillance historiques. Vous pouvez ainsi les comparer avec les données de performances actuelles, identifier des modèles de performances normales et des anomalies de performances, ainsi que concevoir des méthodes pour les résoudre.

**Topics**
+ [Service géré de connexion pour Apache Flink](logging.md)
+ [Surveillance dans le service géré pour Apache Flink](monitoring.md)
+ [Configurer la journalisation des applications dans le service géré pour Apache Flink](cloudwatch-logs.md)
+ [Analysez les journaux avec CloudWatch Logs Insights](cloudwatch-logs-reading.md)
+ [Métriques et dimensions dans le service géré pour Apache Flink](metrics-dimensions.md)
+ [Écrire des messages personnalisés dans CloudWatch Logs](cloudwatch-logs-writing.md)
+ [Service de gestion des journaux pour les appels d'API Apache Flink avec AWS CloudTrail](logging-using-cloudtrail.md)

# Service géré de connexion pour Apache Flink
<a name="logging"></a>

La journalisation est importante pour permettre aux applications de production de comprendre les erreurs et les défaillances. Cependant, le sous-système de journalisation doit collecter et transférer les entrées du journal vers les CloudWatch journaux. Bien qu'une certaine journalisation soit acceptable et souhaitable, une journalisation prolongée peut surcharger le service et entraîner un retard de l'application Flink. Enregistrer les exceptions et les avertissements est certainement une bonne idée. Mais vous ne pouvez pas générer de message journal pour chaque message traité par l’application Flink. Flink est optimisé pour une latence élevée et une faible latence, ce qui n’est pas le cas du sous-système de journalisation. S'il est vraiment nécessaire de générer une sortie de journal pour chaque message traité, utilisez un récepteur supplémentaire DataStream dans l'application Flink et un récepteur approprié pour envoyer les données à Amazon S3 ou CloudWatch. N’utilisez pas le système de journalisation Java à cette fin. De plus, le paramètre`Debug Monitoring Log Level` du service géré pour Apache Flink génère un trafic important, ce qui peut créer une contre-pression. Vous ne devez l’utiliser que lorsque vous étudiez activement les problèmes liés à l’application.

## Journaux de requêtes avec CloudWatch Logs Insights
<a name="logging-querying"></a>

CloudWatch Logs Insights est un puissant service permettant d'interroger les journaux à grande échelle. Les clients doivent tirer parti de ses capacités pour effectuer rapidement des recherches dans les journaux afin d’identifier et de limiter les erreurs lors d’événements opérationnels.

 La requête suivante recherche les exceptions dans tous les journaux du gestionnaire de tâches et les classe en fonction de l’heure à laquelle elles se sont produites.

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

Pour d’autres requêtes utiles, consultez la section [Exemples de requêtes](https://docs.aws.amazon.com/managed-flink/latest/java/cloudwatch-logs-reading.html#cloudwatch-logs-reading-examples).

# Surveillance dans le service géré pour Apache Flink
<a name="monitoring"></a>

Lorsque vous exécutez des applications de streaming en production, vous souhaitez exécuter l’application en continu et indéfiniment. Il est crucial de mettre en œuvre une surveillance et une alarme appropriées de tous les composants, et pas seulement de l’application Flink. Sinon, vous risquez de passer à côté des problèmes émergents dès le début et de ne vous rendre compte d’un événement opérationnel trop tard, quand il est beaucoup plus difficile de les atténuer. Les éléments généraux à surveiller incluent :
+ La source ingère-t-elle des données ?
+ Les données sont-elles lues depuis la source (du point de vue de la source) ?
+ L’application Flink reçoit-elle des données ?
+ L’application Flink parvient-elle à suivre le rythme ou prend-elle du retard ?
+ L’application Flink permet-elle de conserver les données dans le récepteur (du point de vue de l’application) ?
+ Le récepteur reçoit-il des données ?

Des métriques plus spécifiques doivent ensuite être prises en compte pour l’application Flink. Ce [CloudWatch tableau de bord](https://github.com/aws-samples/kda-metrics-dashboard) constitue un bon point de départ. Pour plus d’informations sur les métriques à surveiller pour les applications de production, consultez [Utiliser les CloudWatch alarmes avec Amazon Managed Service pour Apache Flink](monitoring-metrics-alarms.md). Ces métriques incluent :
+ **records\$1lag\$1max** et **millisbehindLatest** : si l’application consomme depuis Kinesis ou Kafka, ces métriques indiquent si l’application prend du retard et doit être redimensionnée afin de suivre le rythme de charge actuel. Il s’agit d’une bonne métrique générique facile à suivre pour tous les types d’applications. Mais elle ne peut être utilisée que pour une mise à l’échelle réactive, c’est-à-dire lorsque l’application a déjà pris du retard.
+ **CPUUtilization **heapMemoryUtilization****et — Ces mesures donnent une bonne indication de l'utilisation globale des ressources de l'application et peuvent être utilisées pour un dimensionnement proactif, sauf si l'application est liée. I/O 
+ **downtime** : un temps d’arrêt supérieur à zéro indique une défaillance de l’application. Si la valeur est supérieure à 0, l’application ne traite aucune donnée.
+ **lastCheckpointSize**et *lastCheckpointDuration*— Ces indicateurs surveillent la quantité de données stockées en état et le temps nécessaire pour passer un point de contrôle. Si les points de contrôle augmentent ou prennent du temps, l’application passe continuellement du temps à effectuer les points de contrôle et réduit le nombre de cycles de traitement réels. À certains moments, les points de contrôle peuvent devenir trop grands ou prendre tellement de temps qu’ils échouent. En plus de surveiller les valeurs absolues, les clients devraient également envisager de surveiller le taux de variation avec `RATE(lastCheckpointSize)` et `RATE(lastCheckpointDuration)`.
+ **numberOfFailedPoints de contrôle** : cette métrique compte le nombre de points de contrôle ayant échoué depuis le démarrage de l'application. Selon l’application, il peut être tolérable que les points de contrôle échouent de temps en temps. Mais si les points de contrôle échouent régulièrement, l’application est probablement malsaine et nécessite une attention accrue. Nous recommandons de surveiller `RATE(numberOfFailedCheckpoints)` pour être alerté en fonction de la pente et non en fonction des valeurs absolues.

# Configurer la journalisation des applications dans le service géré pour Apache Flink
<a name="cloudwatch-logs"></a>

En ajoutant une option de CloudWatch journalisation Amazon à votre application Managed Service for Apache Flink, vous pouvez surveiller les événements liés à l'application ou les problèmes de configuration.

Cette rubrique décrit comment configurer votre application pour écrire les événements de l'application dans un flux CloudWatch Logs. Une option de CloudWatch journalisation est un ensemble de paramètres et d'autorisations d'application que votre application utilise pour configurer la manière dont elle écrit les événements de l'application dans les CloudWatch journaux. Vous pouvez ajouter et configurer une option de CloudWatch journalisation en utilisant le AWS Management Console ou le AWS Command Line Interface (AWS CLI).

Notez ce qui suit à propos de l'ajout d'une option de CloudWatch journalisation à votre application :
+ Lorsque vous ajoutez une option de CloudWatch journalisation à l'aide de la console, Managed Service for Apache Flink crée le groupe de CloudWatch journaux et le flux de journaux pour vous et ajoute les autorisations dont votre application a besoin pour écrire dans le flux de journaux. 
+ Lorsque vous ajoutez une option de CloudWatch journalisation à l'aide de l'API, vous devez également créer le groupe de journaux et le flux de journaux de l'application, et ajouter les autorisations dont votre application a besoin pour écrire dans le flux de journaux.

## Configuration de la CloudWatch journalisation à l'aide de la console
<a name="cloudwatch-logs-console"></a>

Lorsque vous activez la CloudWatch journalisation pour votre application dans la console, un groupe de CloudWatch journaux et un flux de journaux sont créés pour vous. De plus, la politique d’autorisation de votre application est mise à jour avec les autorisations d’écriture dans le flux. 

Le service géré pour Apache Flink crée un groupe de journaux nommé selon la convention suivante, où *ApplicationName* est le nom de votre application.

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

Le service géré pour Apache Flink crée un flux de journaux dans le nouveau groupe de journaux avec le nom suivant.

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

Vous définissez le niveau des métriques de surveillance de l’application et le niveau du journal de surveillance à l’aide de la section **Niveau du journal de surveillance** de la page **Configurer l’application**. Pour obtenir des informations sur les journaux d’application, consultez [Contrôlez les niveaux de surveillance des applications](#cloudwatch_levels).

## Configuration de la CloudWatch journalisation à l'aide de la CLI
<a name="cloudwatch-logs-api"></a>

Pour ajouter une option de CloudWatch journalisation à l'aide du AWS CLI, vous devez effectuer les opérations suivantes : 
+ Créez un groupe de CloudWatch journaux et un flux de journaux.
+ Ajoutez une option de journalisation lorsque vous créez une application à l'aide de l'[CreateApplication](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html)action, ou ajoutez une option de journalisation à une application existante à l'aide de l'[AddApplicationCloudWatchLoggingOption](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_AddApplicationCloudWatchLoggingOption.html)action.
+ Ajoutez des autorisations à la politique de votre application pour écrire dans les journaux.

### Création d'un groupe de CloudWatch journaux et d'un flux de journaux
<a name="cloudwatch-logs-api-create"></a>

Vous créez un groupe de CloudWatch journaux et diffusez à l'aide de la console CloudWatch Logs ou de l'API. Pour plus d'informations sur la création d'un groupe de CloudWatch journaux et d'un flux de journaux, consultez la section [Utilisation des groupes de journaux et des flux de journaux](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html).

### Utiliser les options de CloudWatch journalisation des applications
<a name="adding_cloudwatch"></a>

Utilisez les actions d'API suivantes pour ajouter une option de CloudWatch journal à une application nouvelle ou existante ou pour modifier une option de journal pour une application existante. Pour obtenir des informations sur l’utilisation d’un fichier JSON comme entrée pour une action d’API, consultez [Exemple de code de service géré pour l'API Apache Flink](api-examples.md).

#### Ajouter une option de CloudWatch journalisation lors de la création d'une application
<a name="add_cloudwatch_create"></a>

L'exemple suivant montre comment utiliser l'`CreateApplication`action pour ajouter une option de CloudWatch journal lorsque vous créez une application. Dans l’exemple, remplacez *Amazon Resource Name (ARN) of the CloudWatch Log stream to add to the new application* avec vos propres informations. Pour plus d’informations sur cette action, consultez [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>"
	}]
}
```

#### Ajouter une option de CloudWatch journalisation à une application existante
<a name="add_to_existing_app"></a>

L'exemple suivant montre comment utiliser l'`AddApplicationCloudWatchLoggingOption`action pour ajouter une option de CloudWatch journalisation à une application existante. Dans l'exemple, remplacez chacune *user input placeholder* par vos propres informations. Pour plus d’informations sur cette action, consultez [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>
}
```

#### Mettre à jour une option de CloudWatch journal existante
<a name="update_existing"></a>

L'exemple suivant montre comment utiliser l'`UpdateApplication`action pour modifier une option de CloudWatch journal existante. Dans l'exemple, remplacez chacune *user input placeholder* par vos propres informations. Pour plus d’informations sur cette action, consultez [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>
}
```

#### Supprimer une option de CloudWatch journalisation d'une application
<a name="delete-log"></a>

L'exemple suivant montre comment utiliser l'`DeleteApplicationCloudWatchLoggingOption`action pour supprimer une option de CloudWatch journal existante. Dans l'exemple, remplacez chacune *user input placeholder* par vos propres informations. Pour plus d’informations sur cette action, consultez [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>
}
```

#### Définissez le niveau de journalisation de l'application
<a name="cloudwatch-level"></a>

Pour définir le niveau de journalisation de l’application, utilisez le paramètre [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) de l’action [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 le paramètre [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) de l’action [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). 

Pour obtenir des informations sur les journaux d’application, consultez [Contrôlez les niveaux de surveillance des applications](#cloudwatch_levels).

##### Définissez le niveau de journalisation de l'application lors de la création d'une application
<a name="cloudwatch-level-create"></a>

L’exemple de demande d’action [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) suivant définit le niveau du journalisation de l’application sur `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"
}
```

##### Mettre à jour le niveau de journalisation de l'application
<a name="cloudwatch-level-update"></a>

L’exemple de demande d’action [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) suivant définit le niveau du journalisation de l’application sur `INFO`.

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

### Ajouter des autorisations pour écrire dans le flux de CloudWatch log
<a name="enable_putlogevents"></a>

Le service géré pour Apache Flink a besoin d'autorisations pour y écrire des erreurs de configuration. CloudWatch Vous pouvez ajouter ces autorisations au rôle Gestion des identités et des accès AWS (IAM) assumé par Managed Service for Apache Flink.

Pour plus d’informations sur l’utilisation de rôle IAM avec le service géré pour Apache Flink, consultez [Gestion de l’identité et des accès dans le service géré Amazon pour Apache Flink](security-iam.md).

#### Politique d’approbation
<a name="enable_putlogevents_trust_policy"></a>

Pour autoriser le service géré pour Apache Flink à assumer un rôle IAM, vous pouvez attacher la politique d’approbation au rôle d’exécution du service.

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

****  

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

------

#### Politique d’autorisations
<a name="enable_putlogevents_permissions_policy"></a>

Pour autoriser une application à écrire les événements du journal CloudWatch depuis une ressource Managed Service for Apache Flink, vous pouvez utiliser la politique d'autorisation IAM suivante. Indiquez les noms de ressources Amazon (ARNs) corrects pour votre groupe de journaux et votre flux.

------
#### [ 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:*"
            ]
        }
    ]
}
```

------

## Contrôlez les niveaux de surveillance des applications
<a name="cloudwatch_levels"></a>

Vous contrôlez la génération des messages du journal de l’application à l’aide du *niveau de surveillance des métriques* et du *niveau de surveillance des journaux* de l’application.

Le niveau de surveillance des métriques de l’application contrôle la granularité des messages du journal. Les niveaux de surveillance des métriques sont définis comme suit :
+ **Application** : les métriques s’appliquent à l’ensemble de l’application.
+ **Tâche** : les mesures sont adaptées à chaque tâche. Pour obtenir des informations sur les tâches, consultez [Implémenter le dimensionnement des applications dans le service géré pour Apache Flink](how-scaling.md).
+ **Opérateur** : les métriques sont limitées à chaque opérateur. Pour obtenir des informations sur les opérateurs, consultez [Transformez les données à l'aide d'opérateurs dans Managed Service pour Apache Flink avec l'API DataStream](how-operators.md).
+ **Parallélisme** : les métriques sont limitées au parallélisme des applications. Vous ne pouvez définir ce niveau de métrique qu'à l'aide du [ MonitoringConfigurationUpdate](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_MonitoringConfigurationUpdate.html)paramètre de l'[ UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html)API. Vous ne pouvez pas définir ce niveau de métriques à l’aide de la console. Pour obtenir des informations sur le parallélisme, consultez [Implémenter le dimensionnement des applications dans le service géré pour Apache Flink](how-scaling.md).

Le niveau de surveillance des journaux de l’application contrôle la verbosité du journal de l’application. Les niveaux de surveillance des journaux sont définis comme suit :
+ **Erreur** : événements catastrophiques potentiels de l’application.
+ **Avertissement** : situations potentiellement dangereuses de l’application.
+ **Information** : événements de défaillance informatifs et temporaires de l’application. Nous vous recommandons d’utiliser ce niveau de journalisation.
+ **Débogage** : événements informatifs précis qui sont particulièrement utiles pour déboguer une application. *Remarque* : utilisez ce niveau uniquement à des fins de débogage temporaire. 

## Appliquer les meilleures pratiques de journalisation
<a name="cloudwatch_bestpractices"></a>

Nous recommandons que votre application utilise le niveau de journalisation **Information**. Nous recommandons ce niveau pour garantir que vous voyez les erreurs Apache Flink, qui sont journalisées au niveau **Information** plutôt qu’au niveau **Erreur**.

Nous vous recommandons de n’utiliser le niveau **Débogage** que temporairement lorsque vous étudiez les problèmes liés à l’application. Revenez au niveau **Information** lorsque le problème est résolu. L’utilisation du niveau de journalisation **Débogage** affectera de manière significative les performances de votre application.

Une journalisation excessive peut également avoir un impact significatif sur les performances de l’application. Nous vous recommandons de ne pas écrire d’entrée de journal pour chaque enregistrement traité, par exemple. Une journalisation excessive peut entraîner de graves blocages dans le traitement des données et entraîner une contre-pression lors de la lecture des données provenant des sources.

## Effectuer le dépannage de la journalisation
<a name="cloudwatch_troubleshooting"></a>

Si les journaux de l’application ne sont pas écrits dans le flux de journaux, vérifiez les points suivants : 
+ Vérifiez que le rôle et les politiques IAM de votre application sont corrects. La politique de votre application nécessite les autorisations suivantes pour accéder à votre flux de journaux :
  + `logs:PutLogEvents`
  + `logs:DescribeLogGroups`
  + `logs:DescribeLogStreams`

  Pour plus d’informations, consultez [Ajouter des autorisations pour écrire dans le flux de CloudWatch log](#enable_putlogevents).
+ Vérifiez que votre application est en cours d’exécution. Pour vérifier le statut de votre application, consultez la page de votre application dans la console ou utilisez les [ListApplications](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_ListApplications.html)actions [DescribeApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_DescribeApplication.html)ou.
+ Surveillez CloudWatch les métriques, par exemple `downtime` pour diagnostiquer d'autres problèmes liés aux applications. Pour plus d'informations sur CloudWatch les mesures de lecture, consultez[Métriques et dimensions dans le service géré pour Apache Flink](metrics-dimensions.md).

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

Après avoir activé la CloudWatch connexion à votre application, vous pouvez utiliser CloudWatch Logs Insights pour analyser les journaux de votre application. Pour de plus amples informations, veuillez consulter [Analysez les journaux avec CloudWatch Logs Insights](cloudwatch-logs-reading.md).

# Analysez les journaux avec CloudWatch Logs Insights
<a name="cloudwatch-logs-reading"></a>

Après avoir ajouté une option de CloudWatch journalisation à votre application, comme décrit dans la section précédente, vous pouvez utiliser CloudWatch Logs Insights pour interroger vos flux de journaux afin de détecter des événements ou des erreurs spécifiques.

CloudWatch Logs Insights vous permet de rechercher et d'analyser de manière interactive les données de vos CloudWatch journaux dans Logs. 

Pour plus d'informations sur la prise en main de CloudWatch Logs Insights, voir [Analyser les données des CloudWatch journaux avec Logs Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html).

## Exécution d'un exemple de requête
<a name="cloudwatch-logs-reading-run"></a>

Cette section décrit comment exécuter un exemple de requête CloudWatch Logs Insights.

**Conditions préalables**
+ Groupes de journaux et flux de journaux existants configurés dans CloudWatch Logs.
+ Journaux existants stockés dans CloudWatch Logs.

Si vous utilisez des services tels qu' AWS CloudTrail Amazon Route 53 ou Amazon VPC, vous avez probablement déjà configuré les journaux de ces services pour qu'ils soient accessibles dans Logs. CloudWatch Pour plus d'informations sur l'envoi de CloudWatch journaux à Logs, consultez [Getting Started with CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_GettingStarted.html).

Les requêtes dans CloudWatch Logs Insights renvoient soit un ensemble de champs provenant des événements du journal, soit le résultat d'une agrégation mathématique ou d'une autre opération effectuée sur les événements du journal. Cette section illustre une requête qui renvoie une liste d’événements du journal.

**Pour exécuter un exemple de requête CloudWatch Logs Insights**

1. Ouvrez la CloudWatch console à l'adresse [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Dans le panneau de navigation, choisissez **Insights**.

   

1. L’éditeur de requête en haut de l’écran contient une requête par défaut qui renvoie les 20 événements du journal les plus récents. Sélectionnez un groupe de journaux à interroger, au-dessus de l’éditeur de requête.

   

   Lorsque vous sélectionnez un groupe de CloudWatch journaux, Logs Insights détecte automatiquement les champs des données du groupe de journaux et les affiche dans la section **Champs découverts** dans le volet droit. Il affiche également un graphique à barres des événements de journaux dans ce groupe de journaux au fil du temps. Ce graphique à barres montre la distribution des événements dans le groupe de journaux correspondant à vos requête et plage de temps, pas seulement les événements affichés dans le tableau.

1. Choisissez **Exécuter la requête**.

   Les résultats de la requête s'affichent. Dans cet exemple, les résultats sont les 20 évènements de journaux les plus récents (tous types confondus).

1. Pour afficher tous les champs renvoyés de l’un des événements de journaux, choisissez la flèche à gauche de cet événement de journal.

Pour plus d'informations sur l'exécution et la modification CloudWatch des requêtes Logs Insights, voir [Exécuter et modifier un exemple de requête](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_AnalyzeLogData_RunSampleQuery.html).

## Passez en revue les exemples de requêtes
<a name="cloudwatch-logs-reading-examples"></a>

Cette section contient des exemples de requêtes CloudWatch Logs Insights pour analyser les journaux de l'application Managed Service for Apache Flink. Ces requêtes recherchent plusieurs exemples de conditions d’erreur et servent de modèles pour écrire des requêtes qui détectent d’autres conditions d’erreur. 

**Note**  
Remplacez la région (*us-west-2*), le numéro de compte (*012345678901*) et le nom de l'application (*YourApplication*) dans les exemples de requête suivants par la région de votre application et votre numéro de compte.

**Topics**
+ [Analyser les opérations : répartition des tâches](#cloudwatch-logs-reading-tm)
+ [Analyser les opérations : modification du parallélisme](#cloudwatch-logs-reading-auto)
+ [Analyser les erreurs : accès refusé](#cloudwatch-logs-reading-access)
+ [Analyser les erreurs : source ou récepteur introuvable](#cloudwatch-logs-reading-con)
+ [Analyser les erreurs : défaillances liées aux tâches de l'application](#cloudwatch-logs-reading-apps)

### Analyser les opérations : répartition des tâches
<a name="cloudwatch-logs-reading-tm"></a>

La requête CloudWatch Logs Insights suivante renvoie le nombre de tâches que le gestionnaire de tâches Apache Flink distribue entre les gestionnaires de tâches. Vous devez définir le délai de la requête pour qu’il corresponde à une tâche exécutée afin que la requête ne renvoie pas les tâches des tâches précédentes. Pour de plus amples informations sur le parallélisme, consultez [Mettre en œuvre le dimensionnement des applications](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
```

La requête CloudWatch Logs Insights suivante renvoie les sous-tâches assignées à chaque gestionnaire de tâches. Le nombre total de sous-tâches est la somme du parallélisme de chaque tâche. Le parallélisme des tâches est dérivé du parallélisme des opérateurs et est identique au parallélisme de l’application par défaut, sauf si vous le modifiez dans le code en spécifiant `setParallelism`. Pour plus d’informations sur la définition du parallélisme des opérateurs, consultez la section [Définition du parallélisme : niveau opérateur](https://nightlies.apache.org/flink/flink-docs-release-1.15/dev/parallel.html#operator-level) dans la [documentation d’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
```

Pour plus d’informations sur la planification des tâches, consultez la section [Tâches et planification](https://nightlies.apache.org/flink/flink-docs-release-1.15/internals/job_scheduling.html) dans la [documentation d’Apache Flink](https://nightlies.apache.org/flink/flink-docs-release-1.15/).

### Analyser les opérations : modification du parallélisme
<a name="cloudwatch-logs-reading-auto"></a>

La requête CloudWatch Logs Insights suivante renvoie les modifications apportées au parallélisme d'une application (par exemple, en raison du dimensionnement automatique). Cette requête renvoie également les modifications manuelles apportées au parallélisme de l’application. Pour plus d’informations sur la mise à l’échelle automatique, consultez [Utiliser le dimensionnement automatique dans Managed Service pour Apache Flink](how-scaling-auto.md).

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

### Analyser les erreurs : accès refusé
<a name="cloudwatch-logs-reading-access"></a>

La requête CloudWatch Logs Insights suivante renvoie `Access Denied` des journaux.

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

### Analyser les erreurs : source ou récepteur introuvable
<a name="cloudwatch-logs-reading-con"></a>

La requête CloudWatch Logs Insights suivante renvoie `ResourceNotFound` des journaux. `ResourceNotFound`enregistre le résultat si aucune source ou récepteur Kinesis n'est trouvé.

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

### Analyser les erreurs : défaillances liées aux tâches de l'application
<a name="cloudwatch-logs-reading-apps"></a>

La requête CloudWatch Logs Insights suivante renvoie les journaux d'échec liés aux tâches d'une application. Ces journaux sont générés lorsque le statut d’une application passe de `RUNNING` à `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
```

Pour les applications utilisant Apache Flink version 1.8.2 et antérieures, les échecs liés aux tâches entraîneront le passage de l’état de l’application de `RUNNING` à `FAILED`. Lorsque vous utilisez Apache Flink 1.8.2 et versions antérieures, utilisez la requête suivante pour rechercher les échecs liés aux tâches de l’application :

```
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étriques et dimensions dans le service géré pour Apache Flink
<a name="metrics-dimensions"></a>

Lorsque votre service géré pour Apache Flink traite une source de données, le service géré pour Apache Flink communique les mesures et dimensions suivantes à Amazon. CloudWatch

**Modifications des métriques de Flink 2.2**  
Flink 2.2 introduit des modifications des métriques susceptibles d'affecter votre surveillance et vos alarmes. Vérifiez les modifications suivantes avant de procéder à la mise à niveau :  
La `fullRestarts` métrique a été supprimée. Utilisez `numRestarts` à la place.
Les `downtime` métriques `uptime` et sont obsolètes et seront supprimées dans une future version. Migrez vers les nouvelles métriques spécifiques à l'État.
La `bytesRequestedPerFetch` métrique du connecteur Kinesis Data Streams 6.0.0 a été supprimée.

## Métriques d'application
<a name="metrics-dimensions-jobs"></a>


| Métrique | Unité | Description | Niveau | Notes d’utilisation | 
| --- | --- | --- | --- | --- | 
| backPressuredTimeMsPerSecond\$1 | Millisecondes | Durée (en millisecondes) pendant laquelle cette tâche ou cet opérateur subit une contre-pression par seconde. | Tâche, opérateur, parallélisme | \$1Disponible pour les applications de service géré pour Apache Flink exécutant la version 1.13 de Flink uniquement. Ces mesures peuvent être utiles pour identifier les goulots d’étranglement d’une application. | 
| busyTimeMsPerSecond\$1 | Millisecondes | Durée (en millisecondes) pendant laquelle cette tâche ou cet opérateur est occupé (ni inactif ni en train de subir une contre-pression) par seconde. Peut être NaN, si la valeur n’a pas pu être calculée. | Tâche, opérateur, parallélisme | \$1Disponible pour les applications de service géré pour Apache Flink exécutant la version 1.13 de Flink uniquement. Ces mesures peuvent être utiles pour identifier les goulots d’étranglement d’une application. | 
| cpuUtilization | Pourcentage | Pourcentage global d’utilisation du processus dans les gestionnaires de tâches. Par exemple, s’il existe cinq gestionnaires de tâches, le service géré pour Apache Flink publie cinq échantillons de cette métrique par intervalle de reporting. | Application | Vous pouvez utiliser cette métrique pour surveiller l’utilisation minimale, moyenne et maximale du processeur dans votre application. La CPUUtilization métrique prend uniquement en compte l'utilisation du processeur par le processus TaskManager JVM exécuté dans le conteneur.  | 
| containerCPUUtilization | Pourcentage | Pourcentage global d’utilisation du processeur dans les conteneurs du gestionnaire de tâches du cluster d’applications Flink. Par exemple, s'il existe cinq gestionnaires de tâches, il y a donc cinq TaskManager conteneurs et Managed Service for Apache Flink publie 2\$1 cinq échantillons de cette métrique par intervalle de rapport d'une minute. | Application | Calculé par conteneur comme suit : *Temps CPU total (en secondes) consommé par le conteneur\$1 100/ Limite du processeur du conteneur (en CPUs /secondes)* La `CPUUtilization` métrique prend uniquement en compte l'utilisation du processeur par le processus TaskManager JVM exécuté dans le conteneur. D’autres composants s’exécutent en dehors de JVM dans le même conteneur. La métrique `containerCPUUtilization` vous donne une image plus complète, y compris tous les processus en termes d’épuisement du processeur au niveau du conteneur et les échecs qui en résultent.  | 
| containerMemoryUtilization | Pourcentage | Pourcentage global d’utilisation de la mémoire dans les conteneurs du gestionnaire de tâches du cluster d’applications Flink. Par exemple, s'il existe cinq gestionnaires de tâches, il y a donc cinq TaskManager conteneurs et Managed Service for Apache Flink publie 2\$1 cinq échantillons de cette métrique par intervalle de rapport d'une minute. | Application | Calculé par conteneur comme suit : *Utilisation de la mémoire du conteneur (octets) x 100/limite de mémoire du conteneur selon les spécifications de déploiement du pod (en octets)* Les `ManagedMemoryUtilzations` métriques `HeapMemoryUtilization` et ne prennent en compte que des mesures de mémoire spécifiques, telles que l'utilisation de la mémoire par segment de mémoire de la TaskManager JVM ou la mémoire gérée (utilisation de la mémoire en dehors de la JVM pour des processus natifs tels que [RockSDB](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.) State Backend). La métrique `containerMemoryUtilization` vous donne une image plus complète en incluant la mémoire de travail, qui permet de mieux suivre l’épuisement total de la mémoire. Une fois épuisée, elle se retrouvera dans `Out of Memory Error` la TaskManager capsule.  | 
| containerDiskUtilization | Pourcentage | Pourcentage global d’utilisation du disque dans les conteneurs du gestionnaire de tâches du cluster d’applications Flink. Par exemple, s'il existe cinq gestionnaires de tâches, il y a donc cinq TaskManager conteneurs et Managed Service for Apache Flink publie 2\$1 cinq échantillons de cette métrique par intervalle de rapport d'une minute. | Application | Calculé par conteneur comme suit : *Utilisation du disque en octets\$1 100/limite de disque pour le conteneur en octets* Pour les conteneurs, cela représente l’utilisation du système de fichiers sur lequel le volume racine du conteneur est configuré.  | 
| currentInputWatermark | Millisecondes | Le dernier filigrane que cela application/operator/task/thread a reçu | Application, opérateur, tâche, parallélisme | Cet enregistrement n’est émis que pour les dimensions à deux entrées. Il s’agit de la valeur minimale des derniers filigranes reçus. | 
| currentOutputWatermark | Millisecondes | Le dernier filigrane que cela application/operator/task/thread a émis | Application, opérateur, tâche, parallélisme |  | 
| downtime[OBSOLÈTE] | Millisecondes | Pour les emplois actuellement en failing/recovering situation, le temps s'est écoulé pendant cette interruption. | Application | Cette métrique mesure le temps écoulé pendant l’échec ou la récupération d’une tâche. Cette métrique renvoie 0 pour les tâches en cours d’exécution et -1 pour les tâches terminées. Si cette métrique n’est pas égale à 0 ou -1, cela indique que la tâche Apache Flink de l’application n’a pas pu être exécuté. **Obsolète dans Flink 2.2.** Utilisez `restartingTime` `cancellingTime` and/or `failingTime` plutôt. | 
| failingTime | Millisecondes | Durée (en millisecondes) pendant laquelle l'application est restée en panne. Utilisez cette métrique pour surveiller les défaillances des applications et déclencher des alertes. | Application, flux | Disponible à partir de Flink 2.2. Remplace une partie de la métrique obsolète. downtime | 
| heapMemoryUtilization | Pourcentage | Utilisation globale de la mémoire de tas dans les gestionnaires de tâches. Par exemple, s’il existe cinq gestionnaires de tâches, le service géré pour Apache Flink publie cinq échantillons de cette métrique par intervalle de reporting. | Application | Vous pouvez utiliser cette métrique pour surveiller l’utilisation minimale, moyenne et maximale de l’utilisation de la mémoire de tas dans votre application. Le HeapMemoryUtilization seul prend en compte des métriques de mémoire spécifiques, telles que l'utilisation de la mémoire par segment de mémoire de la TaskManager JVM. | 
| idleTimeMsPerSecond\$1 | Millisecondes | Durée (en millisecondes) pendant laquelle cette tâche ou cet opérateur est inactif (n’a aucune donnée à traiter) par seconde. Le temps d’inactivité exclut le temps de contre-pression. Ainsi, si la tâche est contre-pressée, elle n’est pas inactive. | Tâche, opérateur, parallélisme | \$1Disponible pour les applications de service géré pour Apache Flink exécutant la version 1.13 de Flink uniquement. Ces mesures peuvent être utiles pour identifier les goulots d’étranglement d’une application. | 
| lastCheckpointSize | Octets | La taille totale du dernier point de contrôle | Application | Vous pouvez utiliser cette métrique pour déterminer l’utilisation du stockage des applications en cours d’exécution. Si la valeur de cette métrique augmente, cela peut indiquer un problème lié à votre application, tel qu’une fuite de mémoire ou un goulot d’étranglement. | 
| lastCheckpointDuration | Millisecondes | Le temps qu’il a fallu pour terminer le dernier point de contrôle | Application | Cette métrique mesure le temps nécessaire pour terminer le point de contrôle le plus récent. Si la valeur de cette métrique augmente, cela peut indiquer un problème lié à votre application, tel qu’une fuite de mémoire ou un goulot d’étranglement. Dans certains cas, vous pouvez résoudre ce problème en désactivant le point de contrôle. | 
| managedMemoryUsed\$1 | Octets | Quantité de mémoire gérée actuellement en cours d’utilisation. | Application, opérateur, tâche, parallélisme | \$1Disponible pour les applications de service géré pour Apache Flink exécutant la version 1.13 de Flink uniquement. Cela concerne la mémoire gérée par Flink en dehors du tas de Java. Elle est utilisée pour le backend d’état RocksDB et est également disponible pour les applications. | 
| managedMemoryTotal\$1 | Octets | Quantité totale de mémoire gérée. | Application, opérateur, tâche, parallélisme | \$1Disponible pour les applications de service géré pour Apache Flink exécutant la version 1.13 de Flink uniquement. Cela concerne la mémoire gérée par Flink en dehors du tas de Java. Elle est utilisée pour le backend d’état RocksDB et est également disponible pour les applications. La métrique `ManagedMemoryUtilzations` ne prend en compte que des mesures de mémoire spécifiques telles que la mémoire gérée (utilisation de la mémoire en dehors de JVM pour les processus natifs tels que [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 | Pourcentage | Dérivé par managedMemoryUsed/managedMemoryTotal | Application, opérateur, tâche, parallélisme | \$1Disponible pour les applications de service géré pour Apache Flink exécutant la version 1.13 de Flink uniquement. Cela concerne la mémoire gérée par Flink en dehors du tas de Java. Elle est utilisée pour le backend d’état RocksDB et est également disponible pour les applications. | 
| numberOfFailedCheckpoints | Nombre | Nombre de fois que le point de contrôle a échoué. | Application | Vous pouvez utiliser cette métrique pour surveiller l’état et la progression des applications. Les points de contrôle peuvent échouer en raison de problèmes d’application, tels que des problèmes de débit ou d’autorisation.  | 
| numRecordsIn\$1 | Nombre | Nombre total d’enregistrements reçus par cette application, cet opérateur ou cette tâche. | Application, opérateur, tâche, parallélisme | \$1Pour appliquer la statistique SUM sur une période donnée (seconde/minute) : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/metrics-dimensions.html) Le niveau de la métrique indique si cette métrique mesure le nombre total d’enregistrements reçus par l’ensemble de l’application, un opérateur spécifique ou une tâche spécifique. | 
| numRecordsInPerSecond\$1 | Nombre/seconde | Nombre total d’enregistrements reçus par cette application, cet opérateur ou cette tâche par seconde. | Application, opérateur, tâche, parallélisme | \$1Pour appliquer la statistique SUM sur une période donnée (seconde/minute) : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/metrics-dimensions.html) Le niveau de la métrique indique si cette métrique mesure le nombre total d’enregistrements reçus par l’ensemble de l’application, un opérateur spécifique ou une tâche spécifique par seconde. | 
| numRecordsOut\$1 | Nombre | Nombre total d’enregistrements émis par cette application, cet opérateur ou cette tâche. | Application, opérateur, tâche, parallélisme |  \$1Pour appliquer la statistique SUM sur une période donnée (seconde/minute) : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/metrics-dimensions.html) Le niveau de la métrique indique si cette métrique mesure le nombre total d’enregistrements émis par l’ensemble de l’application, un opérateur spécifique ou une tâche spécifique. | 
| numLateRecordsDropped\$1 | Nombre | Application, opérateur, tâche, parallélisme |  | \$1Pour appliquer la statistique SUM sur une période donnée (seconde/minute) : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/metrics-dimensions.html) Le nombre d’enregistrements que cet opérateur ou cette tâche a perdus en raison de son arrivée tardive. | 
| numRecordsOutPerSecond\$1 | Nombre/seconde | Nombre total d’enregistrements émis par cette application, cet opérateur ou cette tâche par seconde. | Application, opérateur, tâche, parallélisme |  \$1Pour appliquer la statistique SUM sur une période donnée (seconde/minute) : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/metrics-dimensions.html) Le niveau de la métrique indique si cette métrique mesure le nombre total d’enregistrements émis par l’ensemble de l’application, un opérateur spécifique ou une tâche spécifique par seconde. | 
| oldGenerationGCCount | Nombre | Le nombre total d’anciennes opérations de récupérateur de mémoire qui ont eu lieu dans tous les gestionnaires de tâches.  | Application |  | 
| oldGenerationGCTime | Millisecondes | Le temps total passé à effectuer d’anciennes opérations de récupérateur de mémoire.  | Application | Vous pouvez utiliser cette métrique pour surveiller la durée totale, moyenne et maximale de récupérateur de mémoire. | 
| threadsCount | Nombre | Nombre total de threads actifs utilisés par l’application.  | Application | Cette métrique mesure le nombre de threads utilisés par le code de l’application. Ce n’est pas la même chose que le parallélisme des applications. | 
| cancellingTime | Millisecondes | Durée (en millisecondes) pendant laquelle l'application est en état d'annulation. Utilisez cette métrique pour surveiller les opérations d'annulation d'applications. | Application, flux | Disponible à partir de Flink 2.2. Remplace une partie de la métrique obsolète. downtime | 
| restartingTime | Millisecondes | Temps (en millisecondes) passé par l'application au redémarrage. Utilisez cette métrique pour surveiller le comportement de redémarrage des applications. | Application, flux | Disponible à partir de Flink 2.2. Remplace une partie de la métrique obsolète. downtime | 
| runningTime | Millisecondes | Durée (en millisecondes) pendant laquelle l'application a été exécutée sans interruption. Remplace la métrique obsolète. uptime | Application, flux | Disponible à partir de Flink 2.2. À utiliser en remplacement direct de la métrique obsolète. uptime | 
| uptime[OBSOLÈTE] | Millisecondes | Durée pendant laquelle la tâche a été exécutée sans interruption. | Application | Vous pouvez utiliser cette métrique pour déterminer si une tâche s’exécute correctement. Cette métrique renvoie -1 pour les tâches terminées. **Obsolète dans Flink 2.2.** Utilisez `runningTime` à la place. | 
| jobmanagerFileDescriptorsMax | Nombre | Le nombre maximum de descripteurs de fichiers disponibles pour. JobManager | Application, flux, hôte | Utilisez cette métrique pour surveiller la capacité des descripteurs de fichiers. | 
| jobmanagerFileDescriptorsOpen | Nombre | Le nombre actuel de descripteurs de fichiers ouverts pour le JobManager. | Application, flux, hôte | Utilisez cette métrique pour surveiller l'utilisation des descripteurs de fichiers et détecter l'épuisement potentiel des ressources. | 
| taskmanagerFileDescriptorsMax | Nombre | Le nombre maximum de descripteurs de fichiers disponibles pour chacun TaskManager. | Application, flux, hôte, tm\$1id | Utilisez cette métrique pour surveiller la capacité des descripteurs de fichiers. | 
| taskmanagerFileDescriptorsOpen | Nombre | Le nombre actuel de descripteurs de fichiers ouverts pour chacun TaskManager d'entre eux. | Application, flux, hôte, tm\$1id | Utilisez cette métrique pour surveiller l'utilisation des descripteurs de fichiers et détecter l'épuisement potentiel des ressources. | 
| KPUs\$1 | Nombre | Le nombre total de personnes KPUs utilisées par l'application. | Application | \$1Cette métrique reçoit un échantillon par période de facturation (une heure). Pour visualiser le nombre de KPUs prolongations, utilisez MAX ou AVG sur une période d'au moins une (1) heure. Le nombre de KPU inclut les `orchestration` KPU. Pour plus d'informations, consultez la section [Tarification du service géré pour Apache Flink](https://aws.amazon.com/managed-service-apache-flink/pricing/). | 

**Guide de migration métrique de Flink 2.2**  
**Migration depuis FullRestarts :** La `fullRestarts` métrique a été supprimée dans Flink 2.2. Utilisez plutôt la `numRestarts` métrique. La `numRestarts` métrique fournit des fonctionnalités équivalentes et peut être utilisée en remplacement direct des CloudWatch alarmes sans nécessiter d'ajustement de seuil.  
**Migration depuis la disponibilité :** la `uptime` métrique est obsolète dans Flink 2.2 et sera supprimée dans une future version. Utilisez plutôt la `runningTime` métrique. La `runningTime` métrique fournit des fonctionnalités équivalentes et peut être utilisée en remplacement direct des CloudWatch alarmes sans nécessiter d'ajustement de seuil.  
**Migration après une interruption de service :** la `downtime` métrique est obsolète dans Flink 2.2 et sera supprimée dans une future version. En fonction de ce que vous souhaitez surveiller, utilisez une ou plusieurs des métriques suivantes :  
`restartingTime`: Surveillez le temps passé à redémarrer l'application
`cancellingTime`: Surveillez le temps passé à annuler l'application
`failingTime`: Surveillez le temps passé dans un état défaillant

## Métriques du connecteur Kinesis Data Streams
<a name="metrics-dimensions-stream"></a>

AWS émet tous les enregistrements pour Kinesis Data Streams, en plus des suivants :


| Métrique | Unité | Description | Niveau | Notes d’utilisation | 
| --- | --- | --- | --- | --- | 
| millisbehindLatest | Millisecondes | Le nombre de millisecondes où le consommateur est en retard par rapport au début du flux, qui indique le retard que subit le consommateur. | Application (pour Stream), Parallélisme (pour) ShardId | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/managed-flink/latest/java/metrics-dimensions.html)  | 

**Note**  
La `bytesRequestedPerFetch` métrique a été supprimée dans la version 6.0.0 AWS du connecteur Flink (la seule version de connecteur compatible avec Flink 2.2). La seule métrique du connecteur Kinesis Data Streams disponible dans Flink 2.2 est. `millisBehindLatest`

## Métriques du connecteur Amazon MSK
<a name="metrics-dimensions-msk"></a>

AWS émet tous les enregistrements pour Amazon MSK en plus des suivants :


| Métrique | Unité | Description | Niveau | Notes d’utilisation | 
| --- | --- | --- | --- | --- | 
| currentoffsets | N/A | Le décalage de lecture actuel du consommateur, pour chaque partition. La métrique d’une partition particulière peut être spécifiée par le nom de la rubrique et l’identifiant de la partition. | Application (pour le sujet), Parallélisme (pour) PartitionId |  | 
| commitsFailed | N/A | Le nombre total d’échecs de validation de décalage pour Kafka, si la validation de décalage et le point de contrôle sont activés.  | Application, opérateur, tâche, parallélisme | La réattribution des validations de décalage à Kafka n’est qu’un moyen de révéler les progrès réalisés par les consommateurs. Un échec de validation n’affecte donc pas l’intégrité des décalages de partition à points de contrôle de Flink. | 
| commitsSucceeded | N/A | Le nombre total de validations de décalage réussies dans Kafka, si la validation de décalage et les points de contrôle sont activés.  | Application, opérateur, tâche, parallélisme |  | 
| committedoffsets | N/A | Le dernier décalage correctement validé dans Kafka, pour chaque partition. La métrique d’une partition particulière peut être spécifiée par le nom de la rubrique et l’identifiant de la partition. | Application (pour le sujet), Parallélisme (pour) PartitionId |  | 
| records\$1lag\$1max | Nombre | Le décalage maximal en termes de nombre d’enregistrements pour chaque partition de cette fenêtre | Application, opérateur, tâche, parallélisme |  | 
| bytes\$1consumed\$1rate | Octets | Nombre moyen d’octets consommés par seconde pour une rubrique | Application, opérateur, tâche, parallélisme |  | 

## Métriques d'Apache Zeppelin
<a name="metrics-dimensions-zeppelin"></a>

Pour les blocs-notes Studio, AWS émet les mesures suivantes au niveau de l'application :`KPUs`,`cpuUtilization`, `heapMemoryUtilization` `oldGenerationGCTime``oldGenerationGCCount`, et. `threadCount` En outre, il émet les métriques indiquées dans le tableau suivant, également au niveau de l’application.


****  

| Métrique | Unité | Description | Nom Prometheus | 
| --- | --- | --- | --- | 
| zeppelinCpuUtilization | Pourcentage | Pourcentage global d’utilisation du processeur sur le serveur Apache Zeppelin. | process\$1cpu\$1usage | 
| zeppelinHeapMemoryUtilization | Pourcentage | Pourcentage global d’utilisation de la mémoire de tas pour le serveur Apache Zeppelin. | jvm\$1memory\$1used\$1bytes | 
| zeppelinThreadCount | Nombre | Le nombre total de threads actifs utilisés par le serveur Apache Zeppelin. | jvm\$1threads\$1live\$1threads | 
| zeppelinWaitingJobs | Nombre | Le nombre de tâches Apache Zeppelin en attente d’un thread. | jetty\$1threads\$1jobs | 
| zeppelinServerUptime | Secondes | Durée totale pendant laquelle le serveur a été opérationnel. | process\$1uptime\$1seconds | 

# Afficher les CloudWatch métriques
<a name="metrics-dimensions-viewing"></a>

Vous pouvez consulter CloudWatch les statistiques de votre application à l'aide de la CloudWatch console Amazon ou du AWS CLI.

**Pour afficher les métriques à l'aide de la CloudWatch console**

1. Ouvrez la CloudWatch console à l'adresse [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Dans le panneau de navigation, sélectionnez ‎**Metrics** (Métriques).

1. Dans le volet **CloudWatch Mesures par catégorie** du service géré pour Apache Flink, choisissez une catégorie de mesures.

1. Dans le volet supérieur, faites défiler l'écran pour afficher la liste complète des métriques.

**Pour consulter les statistiques à l'aide du AWS CLI**
+ À partir d’une invite de commande, utilisez la commande suivante :

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

# Définissez CloudWatch les niveaux de reporting des métriques
<a name="cloudwatch-logs-levels"></a>

Vous pouvez contrôler le niveau des métriques d’application créées par votre application. Le service géré pour Apache Flink prend en charge les niveaux de métriques suivants :
+ **Application :** l’application crée un rapport uniquement pour le plus haut niveau de métriques pour chaque application. Les métriques du service géré pour Apache Flink sont publiées par défaut au niveau de l’application.
+ **Tâche :** l’application crée un rapport pour les dimensions de métrique spécifiques à la tâche pour les métriques définies avec le niveau de rapport des métriques Tâche, telles que le nombre d’enregistrements entrants et sortants de l’application par seconde.
+ **Opérateur :** l’application crée un rapport pour les dimensions de métrique spécifiques à l’opérateur pour les métriques définies avec le niveau de rapport des métriques Opérateur, telles que les métriques pour chaque filtre ou opération cartographique.
+ **Parallélisme :** l’application crée un rapport pour les niveaux de métrique `Task` et `Operator` pour chaque thread d’exécution. Ce niveau de création de rapport n’est pas recommandé pour les applications avec un parallélisme supérieur à 64 en raison de coûts excessifs. 
**Note**  
Vous ne devez utiliser ce niveau de métrique que pour le dépannage en raison de la quantité de données métriques générées par le service. Vous ne pouvez définir ce niveau de métriques qu’à l’aide de l’interface CLI. Ce niveau de métrique n’est pas disponible dans la console.

Le niveau par défaut est **Application**. L’application fournit des statistiques au niveau actuel et à tous les niveaux supérieurs. Par exemple, si le niveau de création de rapport est défini sur **Opérateur**, l’application crée un rapport pour les métriques **Application**, **Tâche** et **Opérateur**.

Vous définissez le niveau de rapport CloudWatch des métriques en utilisant le `MonitoringConfiguration` paramètre de l'[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)action, ou le `MonitoringConfigurationUpdate` paramètre de l'[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)action. L'exemple de demande d'[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)action suivant définit le niveau de rapport CloudWatch des métriques sur **Task** :

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

Vous pouvez également configurer le niveau de journalisation à l’aide du paramètre `LogLevel` de l’action [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 du paramètre `LogLevelUpdate` de l’action [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). Vous pouvez utiliser les niveaux de journalisation suivants :
+ `ERROR` : enregistre les événements d’erreur potentiellement récupérables.
+ `WARN` : enregistre les événements d’avertissement susceptibles de provoquer une erreur.
+ `INFO` : enregistre les événements informatifs.
+ `DEBUG` : enregistre les événements de débogage généraux. 

Pour plus d’informations sur les niveaux de journalisation Log4j, consultez la section [Niveaux de journalisation personnalisés](https://logging.apache.org/log4j/2.x/manual/customloglevels.html) dans la documentation d’[Apache Log4j](https://logging.apache.org/log4j/2.x/).

# Utilisez des métriques personnalisées avec Amazon Managed Service pour Apache Flink
<a name="monitoring-metrics-custom"></a>

Le service géré pour Apache Flink expose 19 mesures CloudWatch, y compris des mesures relatives à l'utilisation des ressources et au débit. En outre, vous pouvez créer vos propres métriques pour suivre des données spécifiques à l’application, telles que le traitement des événements ou l’accès à des ressources externes.

**Topics**
+ [Comment ça marche](#monitoring-metrics-custom-howitworks)
+ [Afficher des exemples de création d'une classe de mappage](#monitoring-metrics-custom-examples)
+ [Afficher les métriques personnalisées](#monitoring-metrics-custom-examples-viewing)

## Comment ça marche
<a name="monitoring-metrics-custom-howitworks"></a>

Les métriques personnalisées du service géré pour Apache Flink utilisent le système de métrique Apache Flink. Les métriques Apache Flink ont les attributs suivants :
+ **Type :** le type d’une métrique décrit la manière dont elle mesure et crée des rapport sur les données. Les types de métriques Apache Flink disponibles incluent Nombre, Jauge, Histogramme et Mètre. Pour plus d’informations sur les types de métriques Apache Flink, consultez la section [Metric Types](https://nightlies.apache.org/flink/flink-docs-release-1.15/monitoring/metrics.html#metric-types).
**Note**  
AWS CloudWatch Metrics ne prend pas en charge le type de métrique Histogram Apache Flink. CloudWatch ne peut afficher que les métriques Apache Flink des types Count, Gauge et Meter.
+ **Portée :** la portée d'une métrique comprend son identifiant et un ensemble de paires clé-valeur qui indiquent comment la métrique sera signalée. CloudWatch L’identifiant d’une métrique se compose des éléments suivants :
  + Une portée système, qui indique le niveau auquel la métrique est signalée (par exemple, Opérateur).
  + Une portée utilisateur, qui définit des attributs tels que les variables utilisateur ou les noms de groupes de métriques. Ces attributs sont définis à l’aide de [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-).

  Pour plus d’informations sur la portée des métriques, consultez [Scope](https://nightlies.apache.org/flink/flink-docs-release-1.15/monitoring/metrics.html#scope).

Pour plus d’informations sur les métriques d’Apache Flink, consultez [Metrics](https://nightlies.apache.org/flink/flink-docs-release-1.15/monitoring/metrics.html) de la [documentation d’Apache Flink](https://nightlies.apache.org/flink/flink-docs-release-1.15/).

Pour créer une métrique personnalisée dans votre service géré pour Apache Flink, vous pouvez accéder au système de métrique Apache Flink à partir de n’importe quelle fonction utilisateur qui étend `RichFunction` en appelant [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--). Cette méthode renvoie un [MetricGroup](https://nightlies.apache.org/flink/flink-docs-release-1.15/api/java/org/apache/flink/metrics/MetricGroup.html)objet que vous pouvez utiliser pour créer et enregistrer des métriques personnalisées. Le service géré pour Apache Flink indique toutes les métriques créées avec la clé de groupe `KinesisAnalytics` to CloudWatch. Les métriques personnalisées que vous définissez présentent les caractéristiques suivantes :
+ Votre métrique personnalisée possède un nom de métrique et un nom de groupe. Ces noms doivent être composés de caractères alphanumériques conformément aux règles de dénomination de [Prometheus](https://prometheus.io/docs/instrumenting/writing_exporters/#naming).
+ Les attributs que vous définissez dans le champ d'application utilisateur (à l'exception du `KinesisAnalytics` groupe de mesures) sont publiés sous forme de CloudWatch dimensions.
+ Les métriques personnalisées sont publiées au niveau `Application` par défaut.
+ Les dimensions (Tâche/Opérateur/Parallélisme) sont ajoutées à la métrique en fonction du niveau de surveillance de l’application. Vous définissez le niveau de surveillance de l'application à l'aide du [MonitoringConfiguration](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_MonitoringConfiguration.html)paramètre de l'[CreateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_CreateApplication.html)action ou du [MonitoringConfigurationUpdate](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_MonitoringConfigurationUpdate.html)paramètre ou de l'[UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html)action.

## Afficher des exemples de création d'une classe de mappage
<a name="monitoring-metrics-custom-examples"></a>

Les exemples de code suivants montrent comment créer une classe de mappage qui crée et incrémente une métrique personnalisée, et comment implémenter la classe de mappage dans votre application en l'ajoutant à un `DataStream` objet.

### Métrique personnalisée du nombre d'enregistrements
<a name="monitoring-metrics-custom-examples-recordcount"></a>

L’exemple de code suivant montre comment créer une classe de mappage qui crée une métrique qui compte les enregistrements dans un flux de données (fonctionnalité identique à celle de la métrique `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;
        }
    }
```

Dans l’exemple précédent, la variable `valueToExpose` est incrémentée pour chaque enregistrement traité par l’application. 

Après avoir défini votre classe de mappage, vous créez un flux intégré à l’application qui implémente la carte :

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

Pour le code complet de cette application, consultez [Record Count Custom Metric Application](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/CustomMetrics/RecordCount).

### Métrique personnalisée du nombre de mots
<a name="monitoring-metrics-custom-examples-wordcount"></a>

L’exemple de code suivant montre comment créer une classe de mappage qui crée une métrique qui compte les mots dans un flux de données :

```
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));
                    }
                }
            }
        }
```

Dans l’exemple précédent, la variable `counter` est incrémentée pour chaque mot traité par l’application. 

Après avoir défini votre classe de mappage, vous créez un flux intégré à l’application qui implémente la carte :

```
// 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());
```

Pour le code complet de cette application, consultez [Word Count Custom Metric Application](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/CustomMetrics/WordCount).

## Afficher les métriques personnalisées
<a name="monitoring-metrics-custom-examples-viewing"></a>

Les métriques personnalisées pour votre application apparaissent dans la console CloudWatch Metrics du **AWS/KinesisAnalytics**tableau de bord, sous le groupe de métriques **Application**. 

# Utiliser les CloudWatch alarmes avec Amazon Managed Service pour Apache Flink
<a name="monitoring-metrics-alarms"></a>

À l'aide des alarmes CloudWatch métriques Amazon, vous observez une CloudWatch métrique sur une période que vous spécifiez. L’alarme réalise une ou plusieurs actions en fonction de la valeur de la métrique ou de l’expression par rapport à un seuil sur un certain nombre de périodes. Par exemple, l’alarme pourrait envoyer une notification à une rubrique Amazon Simple Notification Service (Amazon SNS). 

Pour plus d'informations sur les CloudWatch alarmes, consultez la section [Utilisation d'Amazon CloudWatch Alarms](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html).

## Passez en revue les alarmes recommandées
<a name="monitoring-metrics-alarms-recommended"></a>

Cette section contient les alarmes recommandées pour surveiller les applications de service géré pour Apache Flink.

Le tableau décrit les alarmes recommandées et comporte les colonnes suivantes :
+ **Expression métrique :** métrique ou expression métrique à tester par rapport au seuil.
+ **Statistique :** statistique utilisée pour vérifier la métrique, par exemple, **Moyenne**.
+ **Seuil :** l’utilisation de cette alarme vous oblige à déterminer un seuil qui définit la limite des performances attendues de l’application. Vous devez déterminer ce seuil en surveillant votre application dans des conditions normales.
+ **Description :** causes susceptibles de déclencher cette alarme et solutions possibles à ce problème.


| Expression de métrique | Statistique | Seuil | Description | 
| --- |--- |--- |--- |
| downtime> 0 | Moyenne | 0 |  Un temps d'arrêt supérieur à zéro indique que l'application a échoué. Si la valeur est supérieure à 0, l’application ne traite aucune donnée. Recommandé pour toutes les applications. La Downtime métrique mesure la durée d'une panne. Un temps d'arrêt supérieur à zéro indique que l'application a échoué. Pour le dépannage, voir[L'application est en train de redémarrer](troubleshooting-rt-restarts.md). | 
| RATE (numberOfFailedCheckpoints)> 0 | Moyenne | 0 | Cette métrique compte le nombre de points de contrôle échoués depuis le démarrage de l'application. Selon l’application, il peut être tolérable que les points de contrôle échouent de temps en temps. Mais si les points de contrôle échouent régulièrement, l’application est probablement malsaine et nécessite une attention accrue. Nous recommandons de surveiller le taux (numberOfFailedpoints de contrôle) pour émettre une alarme en fonction de la pente et non en fonction des valeurs absolues. Recommandé pour toutes les applications. Utilisez cette métrique pour surveiller l'état de santé des applications et la progression des points de contrôle. L'application enregistre les données d'état aux points de contrôle lorsqu'elles sont saines. Le point de contrôle peut échouer en raison de délais impartis si l'application ne progresse pas dans le traitement des données d'entrée. Pour le dépannage, voir[Le délai du point de contrôle est expiré](troubleshooting-chk-timeout.md). | 
| Operator.numRecordsOutPerSecond< seuil | Moyenne | Le nombre minimum d'enregistrements émis par l'application dans des conditions normales.  | Recommandé pour toutes les applications. Le fait de tomber en dessous de ce seuil peut indiquer que l'application ne progresse pas comme prévu en ce qui concerne les données d'entrée. Pour le dépannage, voir[Le débit est trop lent](troubleshooting-rt-throughput.md). | 
| records\$1lag\$1max\$1millisbehindLatest> seuil | Maximum | Latence maximale attendue dans des conditions normales. | Si l'application utilise Kinesis ou Kafka, ces indicateurs indiquent si l'application prend du retard et doit être redimensionnée afin de suivre le rythme de charge actuel. Il s’agit d’une bonne métrique générique facile à suivre pour tous les types d’applications. Mais elle ne peut être utilisée que pour une mise à l’échelle réactive, c’est-à-dire lorsque l’application a déjà pris du retard. Recommandé pour toutes les applications. Utilisez la records\$1lag\$1max métrique pour une source Kafka ou millisbehindLatest pour une source de flux Kinesis. Le fait de dépasser ce seuil peut indiquer que l'application ne réalise pas les progrès escomptés en ce qui concerne les données d'entrée. Pour le dépannage, voir[Le débit est trop lent](troubleshooting-rt-throughput.md). | 
| lastCheckpointDuration> seuil | Maximum | Durée maximale prévue du point de contrôle dans des conditions normales. | Surveille la quantité de données stockées dans l'état et le temps nécessaire pour passer un point de contrôle. Si les points de contrôle augmentent ou prennent du temps, l’application passe continuellement du temps à effectuer les points de contrôle et réduit le nombre de cycles de traitement réels. À certains moments, les points de contrôle peuvent devenir trop grands ou prendre tellement de temps qu’ils échouent. En plus de surveiller les valeurs absolues, les clients devraient également envisager de surveiller le taux de variation avec RATE(lastCheckpointSize) et RATE(lastCheckpointDuration). Si le taux augmente lastCheckpointDuration continuellement, le fait de dépasser ce seuil peut indiquer que l'application ne réalise pas les progrès escomptés en ce qui concerne les données d'entrée ou qu'il existe des problèmes de santé de l'application, tels qu'une contre-pression. Pour le dépannage, voir[Croissance illimitée de l'État](troubleshooting-rt-stateleaks.md). | 
| lastCheckpointSize> seuil | Maximum | Taille maximale prévue du point de contrôle dans des conditions normales. | Surveille la quantité de données stockées dans l'état et le temps nécessaire pour passer un point de contrôle. Si les points de contrôle augmentent ou prennent du temps, l’application passe continuellement du temps à effectuer les points de contrôle et réduit le nombre de cycles de traitement réels. À certains moments, les points de contrôle peuvent devenir trop grands ou prendre tellement de temps qu’ils échouent. En plus de surveiller les valeurs absolues, les clients devraient également envisager de surveiller le taux de variation avec RATE(lastCheckpointSize) et RATE(lastCheckpointDuration). Si le taux augmente lastCheckpointSize continuellement, le fait de dépasser ce seuil peut indiquer que l'application accumule des données d'état. Si les données d'état deviennent trop volumineuses, l'application peut manquer de mémoire lors de la restauration à partir d'un point de contrôle, ou la restauration à partir d'un point de contrôle peut prendre trop de temps. Pour le dépannage, voir[Croissance illimitée de l'État](troubleshooting-rt-stateleaks.md). | 
| heapMemoryUtilization> seuil | Maximum | Cela donne une bonne indication de l'utilisation globale des ressources de l'application et peut être utilisé pour un dimensionnement proactif, sauf si l'application est I/O liée. heapMemoryUtilizationTaille maximale attendue dans des conditions normales, avec une valeur recommandée de 90 %. | Vous pouvez utiliser cette métrique pour surveiller l'utilisation maximale de la mémoire par les gestionnaires de tâches au sein de l'application. Si l'application atteint ce seuil, vous devez allouer davantage de ressources. Pour ce faire, activez le dimensionnement automatique ou augmentez le parallélisme des applications. Pour plus d'informations sur l'augmentation des ressources, consultez[Mettre en œuvre le dimensionnement des applications](how-scaling.md). | 
| cpuUtilization> seuil | Maximum | Cela donne une bonne indication de l'utilisation globale des ressources de l'application et peut être utilisé pour un dimensionnement proactif, sauf si l'application est I/O liée. cpuUtilizationTaille maximale attendue dans des conditions normales, avec une valeur recommandée de 80 %. | Vous pouvez utiliser cette métrique pour surveiller l'utilisation maximale du processeur par les gestionnaires de tâches au sein de l'application. Si l'application atteint ce seuil, vous devez fournir davantage de ressources. Pour ce faire, activez le dimensionnement automatique ou augmentez le parallélisme des applications. Pour plus d'informations sur l'augmentation des ressources, consultez[Mettre en œuvre le dimensionnement des applications](how-scaling.md). | 
| threadsCount> seuil | Maximum | threadsCountTaille maximale attendue dans des conditions normales. | Vous pouvez utiliser cette métrique pour détecter les fuites de threads dans les gestionnaires de tâches de l'application. Si cette métrique atteint ce seuil, vérifiez le code de votre application pour détecter les threads créés sans les fermer. | 
| (oldGarbageCollectionTime \$1 100)/60\$1000 over 1 min period')> seuil | Maximum | oldGarbageCollectionTimeDurée maximale prévue. Nous vous recommandons de définir un seuil tel que le temps de collecte des déchets habituel soit de 60 % du seuil spécifié, mais le seuil correct pour votre application peut varier. | Si cette métrique augmente continuellement, cela peut indiquer une fuite de mémoire dans les gestionnaires de tâches de l'application. | 
| RATE(oldGarbageCollectionCount) > seuil | Maximum | Le maximum attendu oldGarbageCollectionCount dans des conditions normales. Le seuil correct pour votre candidature peut varier. | Si cette métrique augmente continuellement, cela peut indiquer une fuite de mémoire dans les gestionnaires de tâches de l'application. | 
| Operator.currentOutputWatermark - Operator.currentInputWatermark > seuil | Minimum | L'augmentation minimale du filigrane attendue dans des conditions normales. Le seuil correct pour votre candidature peut varier. | Si cette métrique augmente continuellement, cela peut indiquer que l'application traite des événements de plus en plus anciens ou qu'une sous-tâche en amont n'a pas envoyé de filigrane depuis de plus en plus longtemps. | 

# Écrire des messages personnalisés dans CloudWatch Logs
<a name="cloudwatch-logs-writing"></a>

Vous pouvez écrire des messages personnalisés dans le CloudWatch journal de votre application Managed Service for Apache Flink. Pour ce faire, utilisez la bibliothèque [https://logging.apache.org/log4j/](https://logging.apache.org/log4j/) d’Apache ou la bibliothèque [https://www.slf4j.org/](https://www.slf4j.org/).

**Topics**
+ [Écrire dans les CloudWatch journaux à l'aide de Log4J](#cloudwatch-logs-writing-log4j)
+ [Écrire dans les CloudWatch journaux en utilisant SLF4 J](#cloudwatch-logs-writing-slf4j)

## Écrire dans les CloudWatch journaux à l'aide de Log4J
<a name="cloudwatch-logs-writing-log4j"></a>

1. Ajoutez les dépendances suivantes au fichier de `pom.xml` votre application :

   ```
   <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. Incluez l’objet de la bibliothèque :

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

1. Instanciez l’objet `Logger` en lui transmettant votre classe d’application :

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

1. Écrivez dans le journal en utilisant `log.info`. Un grand nombre de messages sont écrits dans le journal de l’application. Pour faciliter le filtrage de vos messages personnalisés, utilisez le niveau du journal `INFO` de l’application.

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

L’application écrit un enregistrement dans le journal contenant un message similaire au message suivant :

```
{
  "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" 
}
```

## Écrire dans les CloudWatch journaux en utilisant SLF4 J
<a name="cloudwatch-logs-writing-slf4j"></a>

1. Ajoutez la dépendance suivante au fichier de `pom.xml` votre application :

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

1. Incluez les objets de la bibliothèque :

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

1. Instanciez l’objet `Logger` en lui transmettant votre classe d’application :

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

1. Écrivez dans le journal en utilisant `log.info`. Un grand nombre de messages sont écrits dans le journal de l’application. Pour faciliter le filtrage de vos messages personnalisés, utilisez le niveau du journal `INFO` de l’application.

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

L’application écrit un enregistrement dans le journal contenant un message similaire au message suivant :

```
{
  "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" 
}
```

# Service de gestion des journaux pour les appels d'API Apache Flink avec AWS CloudTrail
<a name="logging-using-cloudtrail"></a>

Le service géré pour Apache Flink est intégré à AWS CloudTrail un service qui fournit un enregistrement des actions entreprises par un utilisateur, un rôle ou un AWS service dans Managed Service for Apache Flink. CloudTrail capture tous les appels d'API pour Managed Service for Apache Flink sous forme d'événements. Les appels capturés incluent les appels à partir de la console du service géré pour Apache Flink et les appels de code vers les opérations d’API du service géré pour Apache Flink. Si vous créez un suivi, vous pouvez activer la diffusion continue d' CloudTrail événements vers un compartiment Amazon S3, y compris des événements pour le service géré pour Apache Flink. Si vous ne configurez pas de suivi, vous pouvez toujours consulter les événements les plus récents dans la CloudTrail console dans **Historique des événements**. À l'aide des informations collectées par CloudTrail, vous pouvez déterminer la demande qui a été faite au service géré pour Apache Flink, l'adresse IP à partir de laquelle la demande a été faite, qui a fait la demande, quand elle a été faite et des informations supplémentaires. 

Pour en savoir plus CloudTrail, consultez le [guide de AWS CloudTrail l'utilisateur](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/).

## Informations sur le service géré pour Apache Flink dans CloudTrail
<a name="service-name-info-in-cloudtrail"></a>

CloudTrail est activé sur votre AWS compte lorsque vous le créez. Lorsqu'une activité se produit dans Managed Service for Apache Flink, cette activité est enregistrée dans un CloudTrail événement avec d'autres événements de AWS service dans **l'historique** des événements. Vous pouvez consulter, rechercher et télécharger les événements récents dans votre AWS compte. Pour plus d'informations, consultez la section [Affichage des événements à l'aide de l'historique des CloudTrail événements](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html). 

Pour un enregistrement continu des événements de votre AWS compte, y compris des événements relatifs au service géré pour Apache Flink, créez une trace. Un *suivi* permet CloudTrail de fournir des fichiers journaux à un compartiment Amazon S3. Par défaut, lorsque vous créez un parcours dans la console, celui-ci s'applique à toutes les AWS régions. Le journal enregistre les événements de toutes les régions de la AWS partition et transmet les fichiers journaux au compartiment Amazon S3 que vous spécifiez. En outre, vous pouvez configurer d'autres AWS services pour analyser plus en détail les données d'événements collectées dans les CloudTrail journaux et agir en conséquence. Pour plus d’informations, consultez les ressources suivantes : 
+ [Vue d’ensemble de la création d’un journal d’activité](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)
+ [CloudTrail Services et intégrations pris en charge](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-aws-service-specific-topics.html#cloudtrail-aws-service-specific-topics-integrations)
+ [Configuration des notifications Amazon SNS pour CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/getting_notifications_top_level.html)
+ [Réception de fichiers CloudTrail journaux de plusieurs régions](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html) et [réception de fichiers CloudTrail journaux de plusieurs comptes](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-receive-logs-from-multiple-accounts.html)

Toutes les actions du service géré pour Apache Flink sont enregistrées CloudTrail et documentées dans la référence de l'[API du service géré pour Apache Flink](/managed-flink/latest/apiv2/Welcome.html). Par exemple, les appels aux ` [UpdateApplication](/managed-flink/latest/apiv2/API_UpdateApplication.html)` actions `[CreateApplication](/managed-flink/latest/apiv2/API_CreateApplication.html)` et génèrent des entrées dans les fichiers CloudTrail journaux. 

Chaque événement ou entrée de journal contient des informations sur la personne ayant initié la demande. Les informations relatives à l’identité permettent de déterminer les éléments suivants : 
+ Si la demande a été faite avec les informations d'identification de l'utilisateur root ou Gestion des identités et des accès AWS (IAM).
+ Si la demande a été effectuée avec les informations d’identification de sécurité temporaires d’un rôle ou d’un utilisateur fédéré.
+ Si la demande a été faite par un autre AWS service.

Pour plus d’informations, consultez la section [Élément userIdentity CloudTrail ](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html).

## Comprendre le service géré pour les entrées du fichier journal Apache Flink
<a name="understanding-service-name-entries"></a>

Un suivi est une configuration qui permet de transmettre des événements sous forme de fichiers journaux à un compartiment Amazon S3 que vous spécifiez. CloudTrail les fichiers journaux contiennent une ou plusieurs entrées de journal. Un événement représente une demande unique provenant de n'importe quelle source et inclut des informations sur l'action demandée, la date et l'heure de l'action, les paramètres de la demande, etc. CloudTrail les fichiers journaux ne constituent pas une trace ordonnée des appels d'API publics, ils n'apparaissent donc pas dans un ordre spécifique. 

L'exemple suivant montre une entrée de CloudTrail journal qui illustre les [DescribeApplication](/managed-flink/latest/apiv2/API_DescribeApplication.html)actions [AddApplicationCloudWatchLoggingOption](/managed-flink/latest/apiv2/API_AddApplicationCloudWatchLoggingOption.html)et.

```
{
    "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"
        }
    ]
}
```