

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.

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