CloudWatch solution : charge de travail de Kafka sur Amazon EC2 - Amazon CloudWatch

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 de Kafka sur Amazon EC2

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 EC2 des instances. 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é, consultezCloudWatch solutions d'observabilité.

Prérequis

Cette solution est pertinente pour les conditions suivantes :

Avantages

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 gérera automatiquement les métriques des nouvelles EC2 instances de 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.

Coûts

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' EC2 hôtes.

    • Chaque hôte broker configuré pour la solution publie 33 métriques plus une métrique (disk_used_percent) pour laquelle le nombre de métriques pour chaque EC2 hôte dépend du nombre de chemins de 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 PutMetricDataune fois par minute pour chaque EC2 hôte. Cela signifie que l'PutMetricDataAPI sera appelée 30*24*60=43,200 dans un délai de 30 jours par mois pour chaque EC2 hôte.

Pour plus d'informations sur CloudWatch les tarifs, consultez Amazon 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.

  2. Dans la section Métriques, pour Nombre de métriques, entrez broker_metrics_count + producer_metrics_count + consumer_metrics_count. Calculez-les comme suit :

    • broker_metrics_count= (33 + nombre moyen de chemins de disque par EC2 hôte) * number_of_ec2_broker_hosts

    • producer_metrics_count = (3 * nombre _moyen_de_rubriques_par_hôte_producteur + 3) * nombre_d’hôtes_producteurs_ec2

    • consumer_metrics_count = (2 * nombre_moyen_de_rubriques_par_hôte_consommateur + 3) * nombre_d’hôtes_consommateurs_ec2

  3. Dans la APIssection, pour Nombre de demandes d'API, entrez43200 * number of EC2 instances configured for this solution.

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

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

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

CloudWatch configuration de l'agent pour cette solution

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, consultezCollectez des métriques, des journaux et des traces à l'aide de l' CloudWatchagent.

La configuration de l'agent dans cette solution collecte les métriques de base 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. Pour obtenir une liste de toutes les métriques JVM que vous pouvez collecter, consultez Collecte des métriques JVM. Pour obtenir la liste des EC2 indicateurs, consultezMétriques collectées par l' CloudWatchagent sur les instances Linux et macOS.

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 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 courtier, producteur ou consommateur, possède sa propre configuration d'agent qui permet de collecter les métriques Kafka ainsi que la JVM et les métriques sous-jacentes. EC2

Les étapes du déploiement de la solution sont décrites plus loin dans Déployer l’agent pour votre solution. 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 EC2 instances 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.

Les instructions suivantes décrivent la situation dans laquelle les rôles de producteur, de consommateur et de courtier sont déployés sur des EC2 instances distinctes, sans aucun chevauchement. Si vous exécutez plusieurs rôles Kafka sur les mêmes EC2 instances, consultez Configurer l’agent pour plusieurs rôles Kafka sur la même instance pour plus d'informations.

Configuration des agents pour les agents de broker Kafka

Utilisez la configuration d' CloudWatch agent suivante sur les EC2 instances où les agents Kafka Broker sont déployés. ClusterNameRemplacez-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-numberRemplacez-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) pour obtenir des informations sur la configuration de TLS ou de l’autorisation, le cas échéant.

Les EC2 métriques affichées dans cette configuration (configuration affiché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' CloudWatchagent sur les instances Windows Server.

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

Utilisez la configuration d' CloudWatch agent suivante sur les EC2 instances Amazon 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-numberRemplacez-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

Utilisez la configuration d' CloudWatch agent suivante sur les EC2 instances où les clients Kafka s'exécutent. ConsumerGroupNameRemplacez-le par le nom de l'application ou du groupe à utiliser pour regrouper ces mesures afin d'obtenir une vue unifiée. port-numberRemplacez-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

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 dansVérifiez que l' CloudWatch agent est en cours d'exécution.

Si vous exécutez déjà l' CloudWatch agent sur les EC2 hôtes 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.

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 EC2 instances. 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 EC2 instances 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 EC2 instances à 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 courtier, votre producteur et votre consommateur sont déployés sur la même EC2 instance ou sur des instances différentes. Par exemple, si le courtier, le producteur et les consommateurs Kafka sont déployés sur des instances distinctes sans chevauchement, vous devez répéter ces étapes trois fois avec les configurations d'agent appropriées pour les EC2 instances du courtier, du producteur et du consommateur.

Étape 1 : Assurez-vous que les EC2 instances cibles disposent des autorisations IAM requises

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 EC2 instance vers. CloudWatch Assurez-vous que le rôle IAM associé à l'instance est associé aux politiques Amazon SSMManaged InstanceCore IAM CloudWatchAgentServerPolicyet Amazon.

Étape 2 : enregistrer le fichier de configuration d' CloudWatch agent recommandé dans le magasin de paramètres de Systems Manager

Parameter Store simplifie l'installation de l' CloudWatch agent sur une EC2 instance 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/.

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

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

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

    2. 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 en conséquence pour faciliter leur identification. Cette valeur sera ensuite utilisée pour distribuer cette configuration à l'agent exécuté sur votre EC2 instance.

    3. Pour Niveau de paramètre, choisissez Standard.

    4. Pour Type, choisissez String (Chaîne).

    5. Pour Type de données, choisissez texte.

    6. 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, Configuration de l’agent pour les producteurs Kafka et Configuration de l’agent pour les consommateurs Kafka 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 EC2 instance, veillez à fusionner la configuration si nécessaire, comme décrit dans la section Configurer l’agent pour plusieurs rôles Kafka sur la même instance Sur la même instance

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

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 à l'aide de ce lien : https://console.aws.amazon.com/cloudformation/accueil ? #/ 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.

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

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

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

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

      2. Si vous déployez à grande échelle, vous pouvez spécifier le TagKeyet le correspondant TagValuepour cibler toutes les EC2 instances 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 TagKeyet 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 TagKeysparamètres InstanceIdset, InstanceIdsils seront prioritaires et les balises seront ignorées.

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

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 :

  1. Si le paramètre Systems Manager est supprimé, l’agent s’arrêtera.

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

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

Étape 4 : vérifiez que la configuration de l’agent est correcte

Vous pouvez vérifier si l' CloudWatch agent est installé en suivant les étapes décrites dansVérifiez que l' CloudWatch agent est en cours d'exécution. Si l' CloudWatch agent n'est pas installé et n'est pas en cours d'exécution, assurez-vous que tout est correctement configuré.

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

  2. Choisissez Métriques, Toutes les métriques.

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

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

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 de EC2 statistiques. Pour consulter EC2 les métriques, vous devez utiliser le tableau de bord EC2 automatique pour voir les EC2 métriques vendues et utiliser le tableau de bord de la EC2 console pour voir les EC2 métriques collectées par l' CloudWatch agent. Pour plus d'informations sur les tableaux de bord automatiques pour les AWS services, consultezAffichage d’un tableau de bord CloudWatch pour un seul service AWS.

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=\"G1 Young Generation\" en name=\"Parallel GC\" 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 ? #dashboards ? Modèle de tableau de bord = 2&referrer=os-catalog. ApacheKafkaOnEc

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

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

  4. 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 à l'aide de ce lien : https://console.aws.amazon.com/cloudformation/accueil ? #/ 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.

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

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

  4. Dans la section Paramètres, spécifiez le nom du tableau de bord sous le DashboardNameparamè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.

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

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

  7. Une fois que le statut de la pile est CREATE_COMPLETE, 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. 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_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=\"G1 Young Generation\" en name=\"Parallel GC\" 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

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

Les configurations individuelles des rôles Kafka répertoriées dans ne CloudWatch configuration de l'agent pour cette solution s'appliquent que lorsque les rôles de producteur, de consommateur et de courtier sont déployés sur des EC2 instances distinctes, sans aucun chevauchement. Si vous exécutez plusieurs rôles Kafka sur les mêmes EC2 instances Amazon, deux options s'offrent à vous :

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

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