

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.

# CloudWatch solution : charge de travail Kafka sur Amazon EC2
<a name="Solution-Kafka-On-EC2"></a>

Cette solution vous permet de configurer la collecte de out-of-the-box métriques à l'aide d' CloudWatch agents pour les charges de travail Kafka (courtiers, producteurs et consommateurs) exécutées sur des instances EC2. En outre, il vous aide à configurer un tableau de CloudWatch bord préconfiguré. Pour des informations générales sur toutes les solutions CloudWatch d'observabilité, consultez[CloudWatch solutions d'observabilité](Monitoring-Solutions.md).

**Topics**
+ [Exigences](#Solution-Kafka-On-EC2-Requirements)
+ [Avantages](#Solution-Kafka-On-EC2-Benefits)
+ [Coûts](#Solution-Kafka-On-EC2-Costs)
+ [CloudWatch configuration de l'agent pour cette solution](#Solution-Kafka-CloudWatch-Agent)
+ [Déployer l’agent pour votre solution](#Solution-Kafka-Agent-Deploy)
+ [Créer le tableau de bord de la solution Kafka](#Solution-Kafka-Dashboard)
+ [Configurer l’agent pour plusieurs rôles Kafka sur la même instance](#Kafka-Multiple-Roles)

## Exigences
<a name="Solution-Kafka-On-EC2-Requirements"></a>

Cette solution est pertinente pour les conditions suivantes :
+ Charge de travail : Kafka v0.8.2.x et versions ultérieures
+ Calcul : Amazon EC2
+ Prend en charge jusqu'à 500 instances EC2 pour toutes les charges de travail Kafka dans un même environnement Région AWS
+ Dernière version de l' CloudWatch agent
+ Agent SSM installé sur l’instance EC2
**Note**  
AWS Systems Manager (agent SSM) est préinstallé sur certaines [Amazon Machine Images (AMIs)](https://docs.aws.amazon.com/systems-manager/latest/userguide/ami-preinstalled-agent.html) fournies par des tiers AWS de confiance. Si l’agent n’est pas installé, vous pouvez l’installer manuellement à l’aide de la procédure correspondant à votre type de système d’exploitation.  
[Installation et désinstallation manuelles de l’agent SSM sur les instances EC2 pour Linux](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-linux.html)
[Installation et désinstallation manuelles de l’agent SSM sur les instances EC2 pour macOS](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-macos.html)
[Installation et désinstallation manuelles de l’agent SSM sur les instances EC2 pour Windows Server](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-windows.html)

## Avantages
<a name="Solution-Kafka-On-EC2-Benefits"></a>

La solution assure la surveillance des serveurs Kafka et fournit des informations précieuses pour les cas d’utilisation suivants :
+ Surveiller la santé du cluster Kafka via les métriques de réplication et de synchronisation.
+ Suivre les performances des agents via les échecs et les latences des requêtes ainsi que le trafic réseau.
+ Surveillez producer/consumer les erreurs, les latences et le retard des consommateurs.
+ Analyser les performances de la JVM sous-jacente pour les clusters Kafka.
+ Basculer entre plusieurs clusters Kafka, producteurs et consommateurs configurés via la solution sous le même compte.

Vous trouverez ci-dessous les principaux avantages de la solution :
+ Automatise la collecte de métriques pour Kafka et la machine virtuelle Java sous-jacente à l'aide de la configuration de l' CloudWatch agent, éliminant ainsi l'instrumentation manuelle.
+ Fournit un tableau de CloudWatch bord consolidé préconfiguré pour les métriques Kafka et JVM. Le tableau de bord traitera automatiquement les métriques des nouvelles instances EC2 Kafka configurées à l’aide de la solution, même si ces métriques n’existent pas lorsque vous créez le tableau de bord pour la première fois. Il vous permet également de regrouper les métriques en applications logiques pour faciliter la mise au point et la gestion.

L’image suivante est un exemple de tableau de bord pour cette solution.

![\[Kafka cluster dashboard showing metrics for partitions, producer/consumer performance, and broker status.\]](http://docs.aws.amazon.com/fr_fr/AmazonCloudWatch/latest/monitoring/images/KafkaDashboard.png)


## Coûts
<a name="Solution-Kafka-On-EC2-Costs"></a>

Cette solution crée et utilise des ressources dans votre compte. Les coûts d’utilisation standard vous sont facturés, y compris les éléments suivants :
+ Toutes les mesures collectées par l' CloudWatch agent sont facturées en tant que mesures personnalisées. Le nombre de métriques utilisées par cette solution dépend du nombre d’hôtes EC2.
  + Chaque hôte d’agent configuré pour la solution publie 33 métriques plus une métrique (`disk_used_percent`) pour laquelle le nombre de métriques pour chaque hôte EC2 dépend du nombre de chemins d’accès au disque pour cet hôte.
  + Chaque hôte producteur configuré pour la solution publie trois métriques avec la dimension `topic` et trois métriques sans la dimension `topic`. Pour les métriques avec la dimension `topic`, chaque rubrique compte comme une métrique distincte.
  + Chaque hôte consommateur configuré pour la solution publie deux métriques avec la dimension `topic` et trois métriques sans la dimension `topic`. Pour les métriques avec des dimensions de rubrique, chaque rubrique compte comme une métrique distincte.
+ Un tableau de bord personnalisé.
+ Opérations d'API demandées par l' CloudWatch agent pour publier les métriques. Avec la configuration par défaut de cette solution, l' CloudWatch agent appelle le **PutMetricData**une fois par minute pour chaque hôte EC2. Cela signifie que l'**PutMetricData**API sera appelée `30*24*60=43,200` dans un délai de 30 jours par mois pour chaque hôte EC2.

Pour plus d'informations sur CloudWatch les tarifs, consultez [Amazon CloudWatch Pricing](https://aws.amazon.com/cloudwatch/pricing/).

Le calculateur de prix peut vous aider à estimer les coûts mensuels approximatifs de l’utilisation de cette solution. 

**Pour utiliser le calculateur de prix afin d’estimer les coûts mensuels de votre solution**

1. Ouvrez le [calculateur CloudWatch de prix Amazon](https://calculator.aws/#/createCalculator/CloudWatch).

1. Dans la section **Métriques**, pour **Nombre de métriques**, entrez **broker\$1metrics\$1count \$1 producer\$1metrics\$1count \$1 consumer\$1metrics\$1count**. Calculez-les comme suit :
   + `broker_metrics_count` = (33 \$1 nombre moyen de chemins de disque par hôte EC2) \$1 number\$1of\$1ec2\$1broker\$1hosts 
   + `producer_metrics_count` = (3 \$1 nombre \$1moyen\$1de\$1rubriques\$1par\$1hôte\$1producteur \$1 3) \$1 nombre\$1d’hôtes\$1producteurs\$1ec2 
   + `consumer_metrics_count` = (2 \$1 nombre\$1moyen\$1de\$1rubriques\$1par\$1hôte\$1consommateur \$1 3) \$1 nombre\$1d’hôtes\$1consommateurs\$1ec2 

1. Dans la **APIs**section, pour **Nombre de demandes d'API**, entrez**43200 \$1 number of EC2 instances configured for this solution**.

   Par défaut, l' CloudWatch agent effectue une **PutMetricData**opération par minute pour chaque hôte EC2.

1. Dans la section **Tableaux de bord et alarmes**, pour **Nombre de tableaux de bord**, entrez **1**.

1. Vous pouvez voir vos coûts mensuels estimés en bas du calculateur de prix.

## CloudWatch configuration de l'agent pour cette solution
<a name="Solution-Kafka-CloudWatch-Agent"></a>

L' CloudWatch agent est un logiciel qui s'exécute de manière continue et autonome sur vos serveurs et dans des environnements conteneurisés. Il collecte des métriques, des journaux et des traces à partir de votre infrastructure et de vos applications et les envoie à CloudWatch X-Ray.

Pour plus d'informations sur l' CloudWatch agent, consultez[Collectez des métriques, des journaux et des traces à l'aide de l' CloudWatch agent](Install-CloudWatch-Agent.md).

La configuration de l’agent dans cette solution collecte les métriques fondamentales pour Kafka, JVM et EC2. L' CloudWatch agent peut être configuré pour collecter plus de métriques Kafka et JVM que ce que le tableau de bord affiche par défaut. Pour une liste de toutes les métriques Kafka que vous pouvez collecter, consultez [Collecte des métriques Kafka](CloudWatch-Agent-JMX-metrics.md#CloudWatch-Agent-Kafka-metrics). Pour obtenir une liste de toutes les métriques JVM que vous pouvez collecter, consultez [Collecte des métriques JVM](CloudWatch-Agent-JMX-metrics.md#CloudWatch-Agent-JVM-metrics). Pour obtenir une liste des métriques EC2, consultez [Métriques collectées par l' CloudWatch agent sur les instances Linux et macOS](metrics-collected-by-CloudWatch-agent.md#linux-metrics-enabled-by-CloudWatch-agent).

**Exposer les ports JMX pour les rôles d’agent Kafka, de producteur et de consommateur**

L' CloudWatch agent s'appuie sur JMX pour collecter les métriques relatives aux courtiers, producteurs et consommateurs de Kafka. Pour ce faire, vous devez exposer le port JMX sur vos serveurs et applications.

Pour les agents Kafka, vous devez utiliser la variable d’environnement `JMX_PORT` pour définir le port. Vous devrez redémarrer les agents après avoir défini cette variable d’environnement. Examinez les scripts de démarrage et les fichiers de configuration de votre application pour trouver le meilleur endroit où ajouter ces arguments.

Par exemple, pour les systèmes Linux et macOS, vous pouvez utiliser la commande suivante pour définir le port JMX. Veillez à spécifier un numéro de port inutilisé.

```
export JMX_PORT=port-number
```

Pour les producteurs et les consommateurs Kafka, les instructions relatives à l’exposition du port JMX dépendent du type de charge de travail que vous utilisez pour votre application JVM productrice ou consommatrice. Consultez la documentation de votre application pour trouver ces instructions.

En général, pour activer un port JMX à des fins de surveillance et de gestion, vous devez définir les propriétés système suivantes pour votre application JVM. L’exemple suivant configure JMX sans authentification. Si votre sécurité policies/requirements exige que vous activiez JMX avec authentification par mot de passe ou SSL pour l'accès à distance, reportez-vous à la [documentation JMX](https://docs.oracle.com/en/java/javase/17/management/monitoring-and-management-using-jmx-technology.html) pour définir la propriété requise.

```
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=port-number
-Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.ssl=false
```

Pour vérifier le port JMX, exécutez `ps aux | grep jmxremote.port`. Les résultats doivent montrer que le port JMX a été défini sur les processus JVM.

**Configuration de l’agent pour cette solution**

Les métriques collectées par l’agent sont définies dans la configuration de l’agent. La solution fournit des configurations d’agent pour collecter les métriques recommandées avec des dimensions appropriées pour le tableau de bord de la solution. Chaque rôle Kafka, tel que l’agent, le producteur ou le consommateur, possède sa propre configuration d’agent qui permet la collecte des métriques Kafka et des métriques JVM et EC2 sous-jacentes.

Les étapes du déploiement de la solution sont décrites plus loin dans [Déployer l’agent pour votre solution](#Solution-Kafka-Agent-Deploy). Les informations suivantes ont pour but de vous aider à comprendre comment personnaliser la configuration de l’agent en fonction de votre environnement.

Vous devez adapter certaines parties de la configuration de l’agent à votre environnement :
+ Le numéro de port JMX est le numéro de port que vous avez configuré dans la section précédente de cette documentation. Le numéro de port se trouve dans la ligne `endpoint` de la configuration.
+ `ClusterName` : ceci est utilisé comme dimension pour les métriques des agents collectées. Fournissez un nom significatif qui représente le regroupement de clusters pour les instances qui exécutent le courtier Kafka.
+ `ProcessGroupName` : ceci est utilisé comme dimension pour les métriques JVM collectées pour les agents. Indiquez la même valeur que pour `ClusterName`. Cela permet de visualiser les métriques JVM du même groupe des agents Kafka que les métriques des agents dans le tableau de bord de la solution.
+ `ProducerGroupName` : ceci est utilisé comme dimension pour les métriques de producteur collectées. Fournissez un nom significatif qui représente le groupe d’instances de producteurs. Pour cette valeur, vous pouvez spécifier votre application ou service de producteur que vous voulez utiliser pour une vue combinée des métriques de producteur dans le tableau de bord de la solution.
+ `ConsumerGroupName` : cette valeur est utilisée comme dimension pour les métriques de consommateurs collectées. Fournissez un nom significatif qui représente le groupe d’instances de consommateurs. Ce n’est pas la même chose que le concept de groupe de consommateurs dans Kafka. Il s’agit simplement d’une dimension de regroupement où vous pouvez spécifier votre application ou service de consommateur que vous voulez utiliser pour une vue combinée des métriques de consommateur dans le tableau de bord de la solution 

Par exemple, si vous avez deux clusters Kafka fonctionnant dans le même compte, l’un pour l’application `order-processing` et l’autre pour l’application `inventory-management`, vous devez définir les dimensions `ClusterName` et `ProcessGroupName` en conséquence dans la configuration de l’agent de l’instance de l’agent.
+ Pour les instances de l’agent du cluster `order-processing`, définissez `ClusterName=order-processing` et `ProcessGroupName=order-processing`.
+ Pour les instances de l’agent du cluster `inventory-management`, définissez `ClusterName=inventory-management` et `ProcessGroupName=inventory-management`. 
+ De même, définissez `ProducerGroupName` pour les instances de producteurs et `ConsumerGroupName` pour les instances de consommateurs en fonction de leurs applications respectives.

Lorsque vous aurez correctement défini les dimensions ci-dessus, le tableau de bord de la solution regroupera automatiquement les métriques en fonction des dimensions `ClusterName`, `ProducerGroupName` et `ConsumerGroupName`. Le tableau de bord comprendra des options déroulantes permettant de sélectionner et d’afficher les métriques pour des clusters et des groupes spécifiques, ce qui vous permettra de surveiller séparément les performances de chaque cluster et de chaque groupe.

Assurez-vous de déployer la configuration d’agent appropriée sur les instances EC2 appropriées. Chaque configuration sera stockée en tant que paramètre distinct dans le magasin de paramètres de SSM, comme détaillé plus loin dans [Étape 2 : enregistrer le fichier de configuration d' CloudWatch agent recommandé dans le magasin de paramètres de Systems Manager](#Solution-Kafka-Agent-Step2).

Les instructions suivantes décrivent la situation dans laquelle les rôles de producteur, de consommateur et d’agent sont déployés sur des instances EC2 distinctes, sans aucun chevauchement. Si vous utilisez plusieurs rôles Kafka sur les mêmes instances EC2, consultez [Configurer l’agent pour plusieurs rôles Kafka sur la même instance](#Kafka-Multiple-Roles) pour plus d’informations.

### Configuration des agents pour les agents de broker Kafka
<a name="Solution-Kafka-Agent-Broker"></a>

Utilisez la configuration d' CloudWatch agent suivante sur les instances EC2 sur lesquelles les agents Kafka Broker sont déployés. *ClusterName*Remplacez-le par le nom du cluster à utiliser pour regrouper ces métriques afin d'obtenir une vue unifiée. La valeur que vous spécifiez *ClusterName* est utilisée à la fois comme `ClusterName` dimension et comme `ProcessGroupName` dimension. *port-number*Remplacez-le par le port JMX de votre serveur Kafka. Si JMX a été activé avec une authentification par mot de passe ou SSL pour l’accès à distance, consultez [Collecte des métriques Java Management Extensions (JMX)](CloudWatch-Agent-JMX-metrics.md) pour obtenir des informations sur la configuration de TLS ou de l’autorisation, le cas échéant.

Les métriques EC2 présentées dans cette configuration (configuration indiquée en dehors du bloc JMX) ne fonctionnent que pour les instances Linux et macOS. Si vous utilisez des instances Windows, vous pouvez choisir d’omettre ces métriques dans la configuration. Pour plus d’informations sur les métriques collectées sur les instances Windows, consultez [Mesures collectées par l' CloudWatch agent sur les instances Windows Server](metrics-collected-by-CloudWatch-agent.md#windows-metrics-enabled-by-CloudWatch-agent).

```
{
  "metrics": {
    "namespace": "CWAgent",
    "append_dimensions": {
      "InstanceId": "${aws:InstanceId}"
    },
    "metrics_collected": {
      "jmx": [
        {
          "endpoint": "localhost:port-number",
          "kafka": {
            "measurement": [
              "kafka.request.time.avg",
              "kafka.request.failed",
              "kafka.request.count",
              "kafka.purgatory.size",
              "kafka.partition.under_replicated",
              "kafka.partition.offline",
              "kafka.network.io",
              "kafka.leader.election.rate",
              "kafka.isr.operation.count"
            ]
          },
          "append_dimensions": {
            "ClusterName": "ClusterName"
          }
        },
        {
          "endpoint": "localhost:port-number",
          "jvm": {
            "measurement": [
              "jvm.classes.loaded",
              "jvm.gc.collections.count",
              "jvm.gc.collections.elapsed",
              "jvm.memory.heap.committed",
              "jvm.memory.heap.max",
              "jvm.memory.heap.used",
              "jvm.memory.nonheap.committed",
              "jvm.memory.nonheap.max",
              "jvm.memory.nonheap.used",
              "jvm.threads.count"
            ]
          },
          "append_dimensions": {
            "ProcessGroupName": "ClusterName"
          }
        }
      ],
      "disk": {
        "measurement": [
          "used_percent"
        ]
      },
      "mem": {
        "measurement": [
          "used_percent"
        ]
      },
      "swap": {
        "measurement": [
          "used_percent"
        ]
      },
      "netstat": {
        "measurement": [
          "tcp_established",
          "tcp_time_wait"
        ]
      }
    }
  }
}
```

### Configuration de l’agent pour les producteurs Kafka
<a name="Solution-Kafka-Agent-Producer"></a>

Utilisez la configuration d' CloudWatch agent suivante sur les instances Amazon EC2 sur lesquelles les producteurs Kafka sont déployés. Remplacez-le *ProducerGroupName* par le nom de l'application ou du groupe que vous souhaitez utiliser pour regrouper vos métriques afin d'obtenir une vue unifiée. *port-number*Remplacez-le par le port JMX de votre application de production Kafka.

 La solution n’active pas les métriques JVM pour les producteurs Kafka car le tableau de bord de la solution n’affiche pas les métriques liées à la JVM pour les producteurs. Vous pouvez personnaliser la configuration de l’agent pour émettre également des métriques JVM, cependant, les métriques JVM liées aux producteurs ne sont pas visibles sur le tableau de bord de la solution.

```
{
  "metrics": {
    "namespace": "CWAgent",
    "append_dimensions": {
      "InstanceId": "${aws:InstanceId}"
    },
    "metrics_collected": {
      "jmx": [
        {
          "endpoint": "localhost:port-number",
          "kafka-producer": {
            "measurement": [
              "kafka.producer.request-rate",
              "kafka.producer.byte-rate",
              "kafka.producer.request-latency-avg",
              "kafka.producer.response-rate",
              "kafka.producer.record-error-rate",
              "kafka.producer.record-send-rate"
            ]
          },
          "append_dimensions": {
            "ProducerGroupName": "ProducerGroupName"
          }
        }
      ]
    }
  }
}
```

### Configuration de l’agent pour les consommateurs Kafka
<a name="Solution-Kafka-Agent-Consumer"></a>

Utilisez la configuration d' CloudWatch agent suivante sur les instances EC2 sur lesquelles les clients Kafka s'exécutent. *ConsumerGroupName*Remplacez-le par le nom de l'application ou du groupe à utiliser pour regrouper ces mesures afin d'obtenir une vue unifiée. *port-number*Remplacez-le par le port JMX de votre application Kafka destinée aux consommateurs.

La solution n’active pas les métriques JVM pour les consommateurs Kafka car le tableau de bord de la solution n’affiche pas les métriques liées à la JVM pour les consommateurs. Vous pouvez personnaliser la configuration de l’agent pour émettre également des métriques JVM, mais les métriques JVM liées au consommateur ne sont pas visibles sur le tableau de bord de la solution.

```
{
  "metrics": {
    "append_dimensions": {
      "InstanceId": "${aws:InstanceId}"
    },
    "metrics_collected": {
      "jmx": [
        {
          "endpoint": "localhost:port-number",
          "kafka-consumer": {
            "measurement": [
              "kafka.consumer.fetch-rate",
              "kafka.consumer.total.bytes-consumed-rate",
              "kafka.consumer.records-consumed-rate",
              "kafka.consumer.bytes-consumed-rate",
              "kafka.consumer.records-lag-max"
            ]
          },
          "append_dimensions": {
            "ConsumerGroupName": "ConsumerGroupName"
          }
        }
      ]
    }
  }
}
```

## Déployer l’agent pour votre solution
<a name="Solution-Kafka-Agent-Deploy"></a>

Il existe plusieurs approches pour installer l' CloudWatch agent, selon le cas d'utilisation. Nous vous recommandons d’utiliser Systems Manager pour cette solution. Il fournit une expérience de console et simplifie la gestion d'un parc de serveurs gérés au sein d'un seul AWS compte. Les instructions de cette section utilisent Systems Manager et sont destinées aux situations où l' CloudWatch agent n'est pas exécuté avec des configurations existantes. Vous pouvez vérifier si l' CloudWatch agent est en cours d'exécution en suivant les étapes décrites dans[Vérifiez que l' CloudWatch agent est en cours d'exécution](troubleshooting-CloudWatch-Agent.md#CloudWatch-Agent-troubleshooting-verify-running).

Si vous exécutez déjà l' CloudWatch agent sur les hôtes EC2 sur lesquels la charge de travail est déployée et que vous gérez les configurations de l'agent, vous pouvez ignorer les instructions de cette section et suivre votre mécanisme de déploiement existant pour mettre à jour la configuration. Veillez à fusionner la configuration de l’agent en fonction du rôle (agent, producteur ou consommateur) avec votre configuration d’agent existante, puis déployez la configuration fusionnée. Si vous utilisez Systems Manager pour stocker et gérer la configuration de l' CloudWatch agent, vous pouvez fusionner la configuration avec la valeur de paramètre existante. Pour plus d'informations, consultez [la section Gestion des fichiers de configuration des CloudWatch agents](https://docs.aws.amazon.com/prescriptive-guidance/latest/implementing-logging-monitoring-cloudwatch/create-store-cloudwatch-configurations.html).

**Note**  
L'utilisation de Systems Manager pour déployer les configurations d' CloudWatch agent suivantes remplacera ou remplacera toute configuration d' CloudWatch agent existante sur vos instances EC2. Vous pouvez modifier cette configuration pour l’adapter à votre environnement unique ou à votre cas d’utilisation. Les métriques définies dans cette solution sont le minimum requis pour le tableau de bord recommandé. 

Le processus de déploiement comprend les étapes suivantes :
+ Étape 1 : assurez-vous que les instances EC2 cibles disposent des autorisations IAM requises.
+ Étape 2 : stockez le fichier de configuration de l’agent recommandé dans le magasin de paramètres de Systems Manager.
+ Étape 3 : installez l' CloudWatch agent sur une ou plusieurs instances EC2 à l'aide d'une CloudFormation pile.
+ Étape 4 : vérifiez que l’installation de l’agent est configurée correctement.

Vous devez répéter ces étapes selon que votre agent, votre producteur et votre consommateur sont déployés sur la même instance EC2 ou sur des instances différentes. Par exemple, si l’agent Kafka, le producteur et les consommateurs sont déployés sur des instances séparées sans chevauchement, vous devez répéter ces étapes trois fois avec les configurations d’agent appropriées pour les instances EC2 de l’agent, du producteur et du consommateur.

### Étape 1 : assurez-vous que les instances EC2 cibles disposent des autorisations IAM requises.
<a name="Solution-Kafka-Agent-Step1"></a>

Vous devez autoriser Systems Manager à installer et configurer l' CloudWatch agent. Vous devez également autoriser l' CloudWatch agent à publier des données télémétriques depuis votre instance EC2 vers. CloudWatch Assurez-vous que le rôle IAM associé à l'instance est associé aux politiques **Amazon SSMManaged InstanceCore IAM **CloudWatchAgentServerPolicy**et Amazon**.
+ Une fois le rôle créé, attachez-le à vos instances EC2. Suivez les étapes de la section [Lancer une instance avec un rôle IAM](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#launch-instance-with-role) pour attacher un rôle lors du lancement d’une nouvelle instance EC2. Pour attacher un rôle à une instance EC2 existante, suivez les étapes de la section [Attacher un rôle IAM à une instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#attach-iam-role).

### Étape 2 : enregistrer le fichier de configuration d' CloudWatch agent recommandé dans le magasin de paramètres de Systems Manager
<a name="Solution-Kafka-Agent-Step2"></a>

Parameter Store simplifie l'installation de l' CloudWatch agent sur une instance EC2 en stockant et en gérant de manière sécurisée les paramètres de configuration, éliminant ainsi le besoin de valeurs codées en dur. Cela garantit un processus de déploiement plus sûr et plus flexible, permettant une gestion centralisée et des mises à jour plus faciles des configurations sur plusieurs instances.

Procédez comme suit pour enregistrer le fichier de configuration d' CloudWatch agent recommandé en tant que paramètre dans Parameter Store.

**Pour créer le fichier de configuration de CloudWatch l'agent en tant que paramètre**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le volet de navigation, sélectionnez **Gestion des applications**, **Magasin de paramètres**.

1. Suivez ces étapes pour créer un nouveau paramètre pour la configuration.

   1. Sélectionnez **Create parameter** (Créer un paramètre).

   1. Donnez un nom au paramètre qui stockera la configuration de votre CloudWatch agent, par exemple **AmazonCloudWatch-Kafka-Producer-Configuration** pour les producteurs, **AmazonCloudWatch-Kafka-Consumer-Configuration** les consommateurs ou **AmazonCloudWatch-Kafka-Broker-Configuration** les courtiers. Si vous avez plusieurs rôles Kafka sur un seul EC2, nommez les rôles en conséquence pour faciliter l’identification. Cette valeur sera utilisée ultérieurement pour distribuer cette configuration à l’agent s’exécutant sur votre instance EC2.

   1. Pour **Niveau de paramètre**, choisissez **Standard**. 

   1. Pour **Type**, choisissez **String** (Chaîne).

   1. Pour **Type de données**, choisissez **texte**.

   1. Dans le champ **Valeur**, collez le texte complet de la configuration de l' CloudWatch agent. Veillez à sélectionner le bloc JSON pour le rôle Kafka que cette instance héberge. Reportez-vous à la configuration fournie dans [Configuration des agents pour les agents de broker Kafka](#Solution-Kafka-Agent-Broker), [Configuration de l’agent pour les producteurs Kafka](#Solution-Kafka-Agent-Producer) et [Configuration de l’agent pour les consommateurs Kafka](#Solution-Kafka-Agent-Consumer) lorsque vous stockez la configuration pour l’agent, le producteur et le consommateur respectivement. Si vous exécutez plusieurs rôles Kafka sur la même instance EC2, assurez-vous de fusionner la configuration si nécessaire comme décrit dans [Configurer l’agent pour plusieurs rôles Kafka sur la même instance](#Kafka-Multiple-Roles) sur la même instance

   1. Sélectionnez **Create parameter** (Créer un paramètre). 

### Étape 3 : Installation de l' CloudWatch agent et application de la configuration à l'aide d'un CloudFormation modèle
<a name="Solution-Kafka-Agent-Step3"></a>

Vous pouvez l'utiliser AWS CloudFormation pour installer l'agent et le configurer de manière à utiliser la configuration d' CloudWatch agent que vous avez créée lors des étapes précédentes.

**Pour installer et configurer l' CloudWatch agent pour cette solution**

1. Ouvrez l'assistant de **création CloudFormation rapide d'une pile** en utilisant ce lien : [https://console.aws.amazon.com/cloudformation/accueil ? \$1/ stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw - agent-installation-template -1.0.0.json](https://console.aws.amazon.com/cloudformation/home?#/stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-1.0.0.json). 

1. Vérifiez que la région sélectionnée sur la console est la région où la charge de travail Kafka s’exécute.

1. Pour **Nom de la pile**, entrez un nom pour identifier cette pile, par exemple **CWAgentInstallationStack**.

1. Dans la section **Paramètres**, indiquez les éléments suivants :

   1. Pour **CloudWatchAgentConfigSSM**, entrez le nom du paramètre Systems Manager pour la configuration d'agent que vous avez créée précédemment, par exemple **AmazonCloudWatch-Kafka-Broker-Configuration** pour les courtiers, **AmazonCloudWatch-Kafka-Producer-Configuration** les producteurs et **AmazonCloudWatch-Kafka-Consumer-Configuration** les consommateurs.

   1. Pour sélectionner les instances cibles, vous avez deux options.

      1. Pour **InstanceIds**, spécifiez une liste séparée par IDs des virgules d'instances IDs où vous souhaitez installer l' CloudWatch agent avec cette configuration. Vous pouvez répertorier une seule instance ou plusieurs instances.

      1. Si vous déployez à grande échelle, vous pouvez spécifier le **TagKey**et le correspondant **TagValue**pour cibler toutes les instances EC2 avec cette balise et cette valeur. Si vous spécifiez un **TagKey**, vous devez spécifier un correspondant **TagValue**. (Pour un groupe Auto Scaling, spécifiez **aws:autoscaling:groupName** le **TagKey**et spécifiez le nom du groupe Auto Scaling **TagValue**à déployer sur toutes les instances du groupe Auto Scaling.)

         Si vous spécifiez à la fois les **TagKeys**paramètres **InstanceIds**et, **InstanceIds**ils seront prioritaires et les balises seront ignorées.

1. Examinez les paramètres, puis choisissez **Créer la pile**. 

Si vous voulez d’abord modifier le fichier modèle pour le personnaliser, choisissez l’option **Charger un fichier modèle** sous **Assistant de création de pile** pour charger le modèle modifié. Pour plus d'informations, consultez [Création d'une pile sur CloudFormation console](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html). Vous pouvez utiliser le lien suivant pour télécharger le modèle : [https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw- agent-installation-template -1.0.0.json](https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-1.0.0.json). 

**Note**  
Une fois cette étape terminée, ce paramètre Systems Manager sera associé aux CloudWatch agents exécutés dans les instances ciblées. Cela signifie que :  
Si le paramètre Systems Manager est supprimé, l’agent s’arrêtera.
Si le paramètre Systems Manager est modifié, les modifications de configuration s’appliqueront automatiquement à l’agent à la fréquence planifiée qui est de 30 jours par défaut.
Si vous voulez appliquer immédiatement les modifications apportées à ce paramètre Systems Manager, vous devez exécuter à nouveau cette étape. Pour plus d’informations sur les associations, consultez [Travailler avec des associations dans Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/state-manager-associations.html).

### Étape 4 : vérifiez que la configuration de l’agent est correcte
<a name="Solution-Kafka-Agent-Step4"></a>

Vous pouvez vérifier si l' CloudWatch agent est installé en suivant les étapes décrites dans[Vérifiez que l' CloudWatch agent est en cours d'exécution](troubleshooting-CloudWatch-Agent.md#CloudWatch-Agent-troubleshooting-verify-running). Si l' CloudWatch agent n'est pas installé et n'est pas en cours d'exécution, assurez-vous que tout est correctement configuré.
+ Assurez-vous d’avoir attaché un rôle avec les autorisations correctes pour l’instance EC2, comme décrit dans [Étape 1 : assurez-vous que les instances EC2 cibles disposent des autorisations IAM requises.](Solution-Tomcat-On-EC2.md#Solution-Tomcat-Agent-Step1).
+ Assurez-vous d’avoir correctement configuré le fichier JSON pour le paramètre Systems Manager. Suivez les étapes de [Résolution des problèmes liés à l'installation de CloudWatch l'agent avec CloudFormation](Install-CloudWatch-Agent-New-Instances-CloudFormation.md#CloudWatch-Agent-CloudFormation-troubleshooting).

Si tout est correctement configuré, vous devriez voir les métriques de Kafka publiées sur CloudWatch. Vous pouvez consulter la CloudWatch console pour vérifier qu'ils sont publiés.

**Pour vérifier que les métriques de Kafka sont publiées sur CloudWatch**

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

1. Choisissez **Métriques**, **Toutes les métriques**.

1. Assurez-vous d'avoir sélectionné la région dans laquelle vous avez déployé la solution, puis choisissez **Espaces de noms personnalisés**. **CWAgent**

1. Recherchez les métriques mentionnées dans la section de configuration de l’agent de ce document, telles que `kafka.partition.offline` pour les agents, `kafka.consumer.fetch.rate` pour les consommateurs ou `kafka.producer.request-rate` pour les producteurs. Si vous obtenez des résultats pour ces mesures, celles-ci sont publiées sur CloudWatch.

## Créer le tableau de bord de la solution Kafka
<a name="Solution-Kafka-Dashboard"></a>

Ce tableau de bord affiche les métriques nouvellement émises à la fois pour Kafka et pour la JVM sous-jacente. Ce tableau de bord fournit une vue des principaux contributeurs pour l’état de votre charge de travail Kafka, parmi les producteurs, les agents et les consommateurs. La vue des principaux contributeurs affiche les 10 premiers par widget de métrique. Cela vous permet d’identifier les valeurs aberrantes en un coup d’œil. 

Le tableau de bord de la solution n’affiche pas les métriques EC2. Pour consulter les métriques EC2, vous devez utiliser le tableau de bord automatique EC2 pour voir les métriques EC2 vendues et utiliser le tableau de bord de la console EC2 pour voir les métriques EC2 collectées par l'agent. CloudWatch Pour plus d'informations sur les tableaux de bord automatiques pour les AWS services, consultez[Afficher un CloudWatch tableau de bord pour un seul AWS service](CloudWatch_Automatic_Dashboards_Focus_Service.md).

Pour créer le tableau de bord, vous pouvez utiliser les options suivantes :
+ Utilisez CloudWatch la console pour créer le tableau de bord.
+ Utilisez AWS CloudFormation la console pour déployer le tableau de bord.
+ Téléchargez l' AWS CloudFormation infrastructure sous forme de code et intégrez-la dans le cadre de votre automatisation d'intégration continue (CI).

En utilisant la CloudWatch console pour créer un tableau de bord, vous pouvez prévisualiser le tableau de bord avant de le créer et de le débiter.

**Note**  
Le tableau de bord créé avec CloudFormation cette solution affiche les statistiques de la région dans laquelle la solution est déployée. Assurez-vous de créer la CloudFormation pile dans la région où vos métriques JVM et Kafka sont publiées.  
Si vous avez spécifié un espace de noms personnalisé autre que `CWAgent` dans la configuration de l' CloudWatch agent, vous devrez modifier le CloudFormation modèle du tableau de bord pour le `CWAgent` remplacer par l'espace de noms personnalisé que vous utilisez.

**Pour créer le tableau de bord via CloudWatch la console**
**Note**  
Les tableaux de bord de la solution affichent actuellement les métriques liées à la récupération de mémoire uniquement pour le récupérateur de mémoire G1, qui est le récupérateur par défaut pour les dernières versions de Java. Si vous utilisez un algorithme de récupération de mémoire différent, les widgets relatifs à la récupération de mémoire sont vides. Cependant, vous pouvez personnaliser ces widgets en modifiant le CloudFormation modèle de tableau de bord et en appliquant le type de collecte de déchets approprié à la dimension de nom des métriques relatives à la collecte de déchets. Par exemple, si vous utilisez la récupération de mémoire parallèle, changez le **name=\$1"G1 Young Generation\$1"** en **name=\$1"Parallel GC\$1"** de la métrique de comptage de la récupération de mémoire `jvm.gc.collections.count`.

1. Ouvrez la CloudWatch console **Create Dashboard** en utilisant ce lien : [ https://console.aws.amazon.com/cloudwatch/home ? \$1dashboards ? Modèle de tableau de bord = 2&referrer=os-catalog. ApacheKafkaOnEc](https://console.aws.amazon.com/cloudwatch/home?#dashboards?dashboardTemplate=ApacheKafkaOnEc2&referrer=os-catalog) 

1. Vérifiez que la région sélectionnée sur la console est la région où la charge de travail Kafka s’exécute.

1. Saisissez le nom du tableau de bord, puis choisissez **Créer le tableau de bord**.

   Pour différencier facilement ce tableau de bord de tableaux de bord similaires dans d’autres régions, nous vous recommandons d’inclure le nom de la région dans le nom du tableau de bord, par exemple **KafkaDashboard-us-east-1**.

1. Prévisualisez le tableau de bord et cliquez sur **Enregistrer** pour créer le tableau de bord.

**Pour créer le tableau de bord via CloudFormation**

1. Ouvrez l'assistant de **création CloudFormation rapide d'une pile** en utilisant ce lien : [https://console.aws.amazon.com/cloudformation/accueil ? \$1/ stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/Kafka\$1EC2/CloudWatch/CFN/v1.0.0/dashboard -template-1.0.0.json](https://console.aws.amazon.com/cloudformation/home?#/stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/Kafka_EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json). 

1. Vérifiez que la région sélectionnée sur la console est la région où la charge de travail Kafka s’exécute.

1. Pour **Nom de la pile**, entrez un nom pour identifier cette pile, par exemple **KafkaDashboardStack**.

1. Dans la section **Paramètres**, spécifiez le nom du tableau de bord sous le **DashboardName**paramètre.

   Pour différencier facilement ce tableau de bord de tableaux de bord similaires dans d’autres régions, nous vous recommandons d’inclure le nom de la région dans le nom du tableau de bord, par exemple **KafkaDashboard-us-east-1**.

1. Validez les capacités d’accès pour les transformateurs sous **Capacités et transformateurs**. Notez que CloudFormation cela n'ajoute aucune ressource IAM.

1. Examinez les paramètres, puis choisissez **Créer la pile**. 

1. Une fois que le statut de la pile est **CREATE\$1COMPLETE**, sélectionnez l’onglet **Ressources** sous la pile créée, puis cliquez sur le lien sous **ID physique** pour accéder au tableau de bord. Vous pouvez également accéder au tableau de bord dans la CloudWatch console en choisissant **Tableaux** de bord dans le volet de navigation gauche de la console et en recherchant le nom du tableau de bord sous **Tableaux de bord personnalisés**.

Si vous voulez modifier le fichier modèle pour l’adapter à vos besoins, vous pouvez utiliser l’option **Charger un fichier modèle** sous **Assistant de création de pile** pour charger le modèle modifié. Pour plus d'informations, consultez [Création d'une pile sur CloudFormation console](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html). Vous pouvez utiliser ce lien pour télécharger le modèle : [https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/Kafka\$1EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json](https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/Kafka_EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json). 

**Note**  
Les tableaux de bord de la solution affichent actuellement les métriques liées à la récupération de mémoire uniquement pour le récupérateur de mémoire G1, qui est le récupérateur par défaut pour les dernières versions de Java. Si vous utilisez un algorithme de récupération de mémoire différent, les widgets relatifs à la récupération de mémoire sont vides. Cependant, vous pouvez personnaliser ces widgets en modifiant le CloudFormation modèle de tableau de bord et en appliquant le type de collecte de déchets approprié à la dimension de nom des métriques relatives à la collecte de déchets. Par exemple, si vous utilisez la récupération de mémoire parallèle, changez le **name=\$1"G1 Young Generation\$1"** en **name=\$1"Parallel GC\$1"** de la métrique de comptage de la récupération de mémoire `jvm.gc.collections.count`. 

### Démarrer avec le tableau de bord Kafka
<a name="Solution-Kafka-Dashboard-GetStarted"></a>

Voici quelques tâches que vous pouvez essayer avec le nouveau tableau de bord Kafka. Ces tâches vous permettent de valider que le tableau de bord fonctionne correctement et vous offrent une certaine expérience pratique en l’utilisant pour surveiller un cluster Kafka. Au fur et à mesure de vos essais, vous vous familiariserez avec la navigation dans le tableau de bord et l’interprétation des métriques visualisées.

**Utilisation des listes déroulantes**

Le tableau de bord fournit des listes déroulantes en haut que vous pouvez utiliser pour filtrer et sélectionner le cluster Kafka spécifique, le producteur et les groupes de consommateurs que vous voulez surveiller.
+ Pour afficher les métriques d’un cluster Kafka spécifique, sélectionnez le nom de ce cluster dans la liste déroulante **Cluster Kafka**. 
+ Pour afficher les métriques d’un groupe de producteurs Kafka spécifique, sélectionnez le nom de ce groupe de producteurs dans la liste déroulante **Producteur Kafka**. 
+ Pour afficher les métriques d’un groupe de consommateurs Kafka spécifique, sélectionnez le nom de ce groupe de consommateurs dans la liste déroulante **Groupe de consommateurs Kafka**. 

**Vérifier l’état du cluster**

Dans la section **Vue d’ensemble du cluster**, trouvez les widgets **Partitions sous-répliquées** et **Répliques synchronisées**. Dans l’idéal, ces valeurs devraient être égales à zéro ou à un petit nombre. Une valeur élevée pour l’une de ces métriques pourrait indiquer des problèmes avec le cluster Kafka qui doivent être examinés. 

**Examiner les performances des agents**

Dans la section **Agents**, trouvez les widgets **Requêtes de récupération échouées** et **Requêtes de producteur échouées**. Ceux-ci indiquent le nombre de requêtes ayant échoué pour les opérations de récupération (fetch) et de production (produce), respectivement. Des taux d’échec élevés peuvent indiquer des problèmes avec les agents ou la connectivité réseau qui nécessitent une enquête plus approfondie.

**Surveiller les performances des producteurs**

Dans la section **Présentation du groupe de producteurs**, recherchez les widgets **Taux de demande moyen**, **Latence moyenne des demandes** et ** Send/Error Taux d'enregistrement moyen**. Ils vous donneront un aperçu des performances des producteurs du groupe sélectionné. Vous pouvez également effectuer une analyse approfondie pour afficher les métriques de producteurs et de rubriques spécifiques dans la section **Producteurs**.

**Surveiller le retard des consommateurs**

Dans la section **Vue d’ensemble du groupe de consommateurs**, vous trouverez le widget **Retard des consommateurs**. Il indique le retard pris par les consommateurs dans le traitement des messages provenant des derniers décalages dans les partitions auxquelles ils sont abonnés. Idéalement, le retard des consommateurs devrait être faible ou nul. Un retard élevé peut indiquer que les consommateurs ne sont pas en mesure de suivre le rythme de production des données, ce qui peut entraîner des pertes de données ou des retards de traitement. Vous pouvez également effectuer une analyse descendante pour afficher les métriques pour des consommateurs et des rubriques spécifiques dans la section **Consommateurs**.

## Configurer l’agent pour plusieurs rôles Kafka sur la même instance
<a name="Kafka-Multiple-Roles"></a>

Les configurations individuelles pour les rôles Kafka répertoriés dans [CloudWatch configuration de l'agent pour cette solution](#Solution-Kafka-CloudWatch-Agent) s’appliquent uniquement lorsque les rôles de producteur, de consommateur et d’agent sont déployés sur des instances EC2 distinctes, sans aucun chevauchement. Si vous exécutez plusieurs rôles Kafka sur les mêmes instances Amazon EC2, vous avez deux options :
+ Créer un fichier de configuration d’agent unique qui répertorie et configure toutes les métriques pour tous les rôles Kafka déployés sur cette instance. Si vous comptez utiliser Systems Manager pour gérer la configuration des agents, il s’agit de l’option à privilégier.

  Si vous choisissez cette option et que les multiples rôles Kafka font partie du même processus JVM, vous devez spécifier le même point de terminaison pour chaque rôle Kafka dans la configuration de l’agent. Si les multiples rôles Kafka font partie de différents processus JVM, le point de terminaison pour chaque rôle peut être différent en fonction du port JMX défini pour ce processus.
+ Créer des fichiers de configuration d’agent distincts pour chaque rôle Kafka et configurer l’agent pour qu’il applique les deux fichiers de configuration. Pour obtenir des instructions sur l’application de plusieurs fichiers de configuration, consultez [Création de plusieurs fichiers de configuration d' CloudWatch agents](create-cloudwatch-agent-configuration-file.md#CloudWatch-Agent-multiple-config-files).

L'exemple suivant montre une configuration d' CloudWatch agent dans laquelle les rôles producteur et consommateur sont exécutés sur une instance dans le cadre du même processus JVM. Dans ce cas, le numéro de port doit être le même dans les parties producteur et consommateur de la configuration ci-dessous. Si au contraire les deux rôles s’exécutent dans le cadre de processus JVM différents, vous pouvez spécifier des numéros de port différents pour chacun, en fonction du port JMX de chaque processus JVM individuel.

```
{
  "metrics": {
    "namespace": "CWAgent",
    "append_dimensions": {
      "InstanceId": "${aws:InstanceId}"
    },
    "metrics_collected": {
      "jmx": [
        {
          "endpoint": "localhost:port-number",
          "kafka-producer": {
            "measurement": [
              "kafka.producer.request-rate",
              "kafka.producer.byte-rate",
              "kafka.producer.request-latency-avg",
              "kafka.producer.response-rate",
              "kafka.producer.record-error-rate",
              "kafka.producer.record-send-rate"
            ]
          },
          "append_dimensions": {
            "ProducerGroupName": "ProducerGroupName"
          }
        },
        {
          "endpoint": "localhost:port-number",
          "kafka-consumer": {
            "measurement": [
              "kafka.consumer.fetch-rate",
              "kafka.consumer.total.bytes-consumed-rate",
              "kafka.consumer.records-consumed-rate",
              "kafka.consumer.bytes-consumed-rate",
              "kafka.consumer.records-lag-max"
            ]
          },
          "append_dimensions": {
            "ConsumerGroupName": "ConsumerGroupName"
          }
        }
      ]
    }
  }
}
```