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é.
Rubriques
Prérequis
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 EC2 instances pour toutes les charges de travail Kafka dans un même environnement Région AWS
-
Dernière version de l' CloudWatch agent
-
SSMagent installé sur l'EC2instance
Note
AWS Systems Manager (SSMagent) est préinstallé sur certaines Amazon Machine Images (AMIs) fournies par des tiers AWS de confiance. Si l'agent n'est pas installé, vous pouvez l'installer manuellement en suivant la procédure correspondant à votre type de système d'exploitation.
Avantages
La solution assure la surveillance des serveurs Kafka, fournissant des informations précieuses pour les cas d'utilisation suivants :
-
Surveillez l'état du cluster Kafka via des métriques de réplication et de synchronisation.
-
Suivez les performances des courtiers en fonction des échecs des demandes et des latences, ainsi que du trafic réseau.
-
Surveillez les erreurs des producteurs/consommateurs, les latences et les retards des consommateurs.
-
Analysez les JVM performances sous-jacentes des clusters Kafka.
-
Basculez entre plusieurs clusters, producteurs et consommateurs Kafka configurés via la solution sous le même compte.
Voici les principaux avantages de cette solution :
-
Automatise la collecte des métriques pour Kafka et le sous-jacent à l'JVMaide de la configuration de l' CloudWatch agent, éliminant ainsi l'instrumentation manuelle.
-
Fournit un tableau de CloudWatch bord consolidé préconfiguré pour Kafka et JVM les métriques. 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 dans des applications logiques pour faciliter la concentration et la gestion.
L'image suivante est un exemple du tableau de bord de cette solution.
Coûts
Cette solution crée et utilise les ressources de votre compte. L'utilisation standard vous est facturée, y compris les frais 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'EC2hô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
topic
dimension et trois métriques sans latopic
dimension. Pour les métriques associées à cettetopic
dimension, chaque rubrique est considérée comme une métrique distincte.Chaque hôte client configuré pour la solution publie deux métriques avec des
topic
dimensions et trois métriques sanstopic
dimensions. Pour les métriques comportant des dimensions thématiques, chaque rubrique est considérée comme une métrique distincte.
Un tableau de bord personnalisé.
APIopérations 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 qu'ils PutMetricDataAPIseront appelés
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 liés à l'utilisation de cette solution.
Pour utiliser le calculateur de prix pour estimer les coûts mensuels de votre solution
-
Ouvrez le calculateur CloudWatch de prix Amazon
. -
Dans la section Mesures, pour Nombre de mesures, 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_hostsproducer_metrics_count
= (3 * nombre_de_moyen_topics_par_producteur_hôte + 3) * nombre_de_ec2_producteur_hostsconsumer_metrics_count
= (2 * nombre moyen de sujets par hôte de consommation + 3) * nombre_de_ec2_consumer_hosts
-
Dans la APIssection, pour Nombre de API demandes, entrez
43200 * 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.
Dans la section Tableaux de bord et alarmes, pour Nombre de tableaux de bord, entrez.
1
-
Vous pouvez consulter vos coûts estimés mensuels au 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 avec l' CloudWatch agent.
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 Kafka et de JVM métriques que ce que le tableau de bord affiche par défaut. Pour obtenir la liste des EC2 indicateurs, consultezMétriques collectées par l' CloudWatchagent sur les instances Linux et macOS.
Exposez JMX les ports correspondant aux rôles de courtier, de producteur et de consommateur de Kafka
L' CloudWatch agent s'appuie sur JMX la collecte des métriques relatives aux courtiers, producteurs et consommateurs de Kafka. Pour que cela soit possible, vous devez exposer le JMX port sur vos serveurs et applications.
Pour les courtiers Kafka, vous devez utiliser la variable d'JMX_PORT
environnement pour définir le port. Vous devrez redémarrer les courtiers après avoir défini cette variable d'environnement. Passez en revue les scripts de démarrage et les fichiers de configuration de votre application afin de trouver le meilleur endroit pour ajouter ces arguments.
Par exemple, pour les systèmes Linux et macOS, vous pouvez utiliser la commande suivante pour définir le JMX port. Assurez-vous de spécifier un numéro de port non utilisé.
export JMX_PORT=
port-number
Pour les producteurs et les consommateurs de Kafka, les instructions pour exposer le JMX port dépendent du type de charge de travail que vous utilisez pour votre JVM application de production ou de consommateur. Consultez la documentation de votre application pour trouver ces instructions.
En général, pour activer un JMX port à des fins de surveillance et de gestion, vous devez définir les propriétés système suivantes pour votre JVM application. L'exemple suivant définit le mode non authentifiéJMX. Si vos politiques/exigences de sécurité vous obligent à activer l'authentification JMX par mot de passe ou SSL à accéder à distance, reportez-vous à la JMXdocumentation
-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 JMX port, exécutezps aux | grep jmxremote.port
. Les résultats devraient montrer que le JMX port a été défini sur les JVM processus.
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'agents permettant de collecter les métriques recommandées avec des dimensions adaptées au tableau de bord de la solution. Chaque rôle Kafka, qu'il s'agisse d'un courtier, d'un producteur ou d'un consommateur, possède sa propre configuration d'agent qui permet de collecter les métriques, sous-jacentes JVM et EC2 métriques de Kafka.
Les étapes de déploiement de la solution sont décrites plus loin dansDéployez l'agent correspondant à votre solution. Les informations suivantes ont pour but de vous aider à comprendre comment personnaliser la configuration de l'agent pour votre environnement.
Vous devez personnaliser certaines parties de la configuration d'agent suivante pour votre environnement :
Le numéro de JMX port 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
endpoint
ligne de configuration.ClusterName
— Ceci est utilisé comme dimension pour les métriques collectées par les courtiers. 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 JVM métriques collectées pour les courtiers. Indiquez la même valeur que celle que vous avez indiquéeClusterName
. Cela permet de visualiser les JVM métriques du même groupe de courtiers Kafka que les métriques des courtiers dans le tableau de bord de la solution.ProducerGroupName
— Ceci est utilisé comme dimension pour les métriques collectées par les producteurs. Fournissez un nom significatif qui représente le groupe d'instances du producteur. Pour cette valeur, vous pouvez spécifier l'application ou le service de production que vous souhaitez utiliser pour une vue combinée des indicateurs des producteurs dans le tableau de bord de la solution.ConsumerGroupName
— Ceci est utilisé comme dimension pour les indicateurs de consommation collectés. Fournissez un nom significatif qui représente le groupe d'instances de consommateurs. Ce n'est pas le même que le concept de groupe de consommateurs dans Kafka. Il s'agit simplement d'une dimension de regroupement dans laquelle vous pouvez spécifier l'application ou le service client que vous souhaitez utiliser pour obtenir une vue combinée des indicateurs de consommation dans le tableau de bord de la solution.
Par exemple, si deux clusters Kafka s'exécutent dans le même compte, l'un pour l'order-processing
application et l'autre pour l'inventory-management
application, vous devez définir les ProcessGroupName
dimensions ClusterName
et en conséquence dans la configuration de l'agent de l'instance de courtier.
-
Pour les instances de
order-processing
cluster broker, définissezClusterName=order-processing
etProcessGroupName=order-processing
. -
Pour les instances de
inventory-management
cluster broker, définissezClusterName=inventory-management
etProcessGroupName=inventory-management
. -
De même, définissez les instances
ProducerGroupName
pour le producteur etConsumerGroupName
pour les instances du consommateur en fonction de leurs applications respectives.
Lorsque vous définissez correctement les dimensions ci-dessus, le tableau de bord de la solution regroupe automatiquement les mesures en fonction des ConsumerGroupName
dimensions ClusterName
ProducerGroupName
, et. Le tableau de bord inclura 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 les performances des clusters et des groupes séparément.
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 SSM de paramètres, 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 de l'agent pour les agents Kafka Broker
Utilisez la configuration d' CloudWatch agent suivante sur les EC2 instances où les agents Kafka Broker sont déployés. Remplacez ClusterName
avec le nom du cluster à utiliser pour regrouper ces métriques afin d'obtenir une vue unifiée. La valeur que vous spécifiez pour ClusterName
est utilisée à la fois comme ClusterName
dimension et comme ProcessGroupName
dimension. Remplacez port-number
avec le JMX port de votre serveur Kafka.
Les EC2 métriques affichées dans cette configuration (configuration affichée en dehors du JMX bloc) ne fonctionnent que pour les instances Linux et macOS. Si vous utilisez des instances Windows, vous pouvez choisir d'omettre ces mesures dans la configuration. Pour plus d'informations sur les métriques collectées sur les instances Windows, consultezMesures collectées par l' CloudWatch agent 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 de Kafka
Utilisez la configuration d' CloudWatch agent suivante sur les EC2 instances Amazon sur lesquelles les producteurs Kafka sont déployés. Remplacez ProducerGroupName
avec le nom de l'application ou du groupe que vous souhaitez utiliser pour regrouper vos métriques afin d'obtenir une vue unifiée. Remplacez port-number
avec le JMX port de votre application Kafka Producer.
La solution n'active pas JVM les métriques pour les producteurs de Kafka car le tableau de bord de la solution n'affiche pas JVM les métriques relatives JVM aux producteurs. Vous pouvez également personnaliser la configuration de l'agent pour émettre JVM des métriques, mais JVM les métriques relatives 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 utilisateurs de Kafka
Utilisez la configuration d' CloudWatch agent suivante sur les EC2 instances où les clients Kafka s'exécutent. Remplacez ConsumerGroupName
avec le nom de l'application ou du groupe à utiliser pour regrouper ces métriques afin d'obtenir une vue unifiée. Remplacez port-number
avec le JMX port de votre application Kafka destinée aux consommateurs.
La solution n'active pas JVM les métriques pour les consommateurs de Kafka car le tableau de bord de la solution n'affiche pas JVM les métriques relatives JVM aux consommateurs. Vous pouvez également personnaliser la configuration de l'agent pour émettre JVM des métriques, mais JVM les métriques relatives 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éployez l'agent correspondant à votre solution
Il existe plusieurs approches pour installer l' CloudWatch agent, selon le cas d'utilisation. Nous 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. Assurez-vous de fusionner la configuration de l'agent en fonction du rôle (courtier, producteur ou consommateur) avec votre configuration d'agent existante, puis de déployer 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 en fonction de votre environnement ou de votre cas d'utilisation unique. Les métriques définies dans cette solution sont les valeurs minimales requises 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 IAM autorisations requises.
Étape 2 : Stockez le fichier de configuration d'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 AWS CloudFormation pile.
Étape 4 : Vérifiez que la configuration de l'agent est correctement configurée.
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 IAM autorisations 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 les mazonSSMManaged InstanceCore IAM politiques CloudWatchAgentServerPolicyet A sont attachées au IAM rôle attaché à l'instance.
-
Pour créer un rôle, consultez Créez IAM des rôles à utiliser avec l' CloudWatch agent sur les EC2 instances Amazon.
-
Une fois le rôle créé, attachez-le à vos EC2 instances. Suivez les étapes décrites dans Lancer une instance avec un IAM rôle pour attacher un rôle lors du lancement d'une nouvelle EC2 instance. Pour associer un rôle à une EC2 instance existante, suivez les étapes décrites dans Attacher un IAM rôle à une instance.
É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 simplifiées 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
Ouvrez la AWS Systems Manager console à l'adresse https://console.aws.amazon.com/systems-manager/
. Dans le volet de navigation, choisissez Application Management, Parameter Store.
Procédez comme suit pour créer un nouveau paramètre pour la configuration.
-
Sélectionnez Create parameter (Créer un paramètre).
-
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 ouAmazonCloudWatch-Kafka-Broker-Configuration
les courtiers. Si vous avez plusieurs rôles Kafka sur un seulEC2, 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. -
Pour le niveau des paramètres, sélectionnez Standard.
-
Pour Type, choisissez String (Chaîne).
Pour Type de données, sélectionnez le texte.
-
Dans le champ Valeur, collez le texte complet de la configuration de l' CloudWatch agent. Assurez-vous de sélectionner le JSON bloc correspondant au rôle Kafka que cette instance héberge. Reportez-vous à la configuration fournie dans Configuration de l'agent pour les agents Kafka Broker et Configuration de l'agent pour les utilisateurs de Kafka lors du stockage de la configuration pour le courtier, le producteur et le consommateur respectivement. Configuration de l'agent pour les producteurs de Kafka 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
-
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 AWS 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
-
Ouvrez l'assistant de création AWS CloudFormation rapide d'une pile à l'aide de ce lien : https://console.aws.amazon.com/cloudformation/accueil ? #/ stacks/quickcreate?templateURL=https://aws-observability-solutions.s3.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw - agent-installation-template -1.0.0.json
. -
Vérifiez que la région sélectionnée sur la console est la région dans laquelle la charge de travail Kafka est exécutée.
-
Pour Nom de la pile, entrez un nom pour identifier cette pile, tel que
CWAgentInstallationStack
. -
Dans la section Paramètres, spécifiez les éléments suivants :
-
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 etAmazonCloudWatch-Kafka-Consumer-Configuration
les consommateurs. -
Pour sélectionner les instances cibles, deux options s'offrent à vous.
-
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 ou plusieurs instances.
-
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 TagKeyà 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.
-
-
-
Vérifiez les paramètres, puis choisissez Create stack.
Si vous souhaitez d'abord modifier le fichier modèle pour le personnaliser, choisissez l'option Télécharger un fichier modèle sous Create Stack Wizard pour télécharger le modèle modifié. Pour plus d'informations, consultez la section Création d'une pile sur AWS CloudFormation console. Vous pouvez utiliser le lien suivant pour télécharger le modèle : https://aws-observability-solutions.s3.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ête.
-
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 souhaitez appliquer immédiatement les modifications à ce paramètre de Systems Manager, vous devez exécuter cette étape à nouveau. Pour plus d'informations sur les associations, consultez la section Utilisation des associations dans Systems Manager.
Étape 4 : vérifier que la configuration de l'agent est correctement configurée
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é.
-
Assurez-vous d'avoir attaché un rôle avec les autorisations appropriées pour l'EC2instance, comme décrit dansÉtape 1 : Assurez-vous que les EC2 instances cibles disposent des IAM autorisations requises.
-
Assurez-vous d'avoir correctement configuré le paramètre JSON for the Systems Manager. Suivez les étapes de Résolution des problèmes liés à l'installation de CloudWatch l'agent avec AWS CloudFormation.
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
Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/
. Choisissez Métriques, Toutes les métriques.
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
Recherchez les métriques mentionnées dans la section de configuration des agents de ce document, par exemple
kafka.partition.offline
pour les courtiers,kafka.consumer.fetch.rate
les consommateurs oukafka.producer.request-rate
les producteurs. Si vous obtenez des résultats pour ces mesures, celles-ci sont publiées sur CloudWatch.
Création du tableau de bord de la solution Kafka
Ce tableau de bord affiche les nouvelles métriques émises à la fois pour Kafka et pour le sous-jacentJVM. Ce tableau de bord fournit une vue des principaux contributeurs sur l'état de votre charge de travail Kafka, quels que soient les producteurs, les courtiers et les consommateurs. La vue des meilleurs contributeurs affiche les 10 meilleurs widgets par 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, consultezAfficher un CloudWatch tableau de bord pour une personne AWS web.
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 AWS CloudFormation cette solution affiche les statistiques de la région dans laquelle la solution est déployée. Assurez-vous de créer la AWS CloudFormation pile dans la région où vos indicateurs JVM et ceux de Kafka sont publiés.
Si vous avez spécifié un espace de noms personnalisé autre que CWAgent
dans la configuration de l' CloudWatch agent, vous devrez modifier le AWS 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
-
Ouvrez la CloudWatch console Create Dashboard en utilisant ce lien : https://console.aws.amazon.com/cloudwatch/home ? #dashboards ? dashboardTemplate= ApacheKafkaOnEc 2&referrer=os-catalog
. -
Vérifiez que la région sélectionnée sur la console est la région dans laquelle la charge de travail Kafka est exécutée.
-
Entrez le nom du tableau de bord, puis choisissez Créer un tableau de bord.
Pour différencier facilement ce tableau de bord des 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
. -
Prévisualisez le tableau de bord et choisissez Enregistrer pour créer le tableau de bord.
Pour créer le tableau de bord via AWS CloudFormation
-
Ouvrez l'assistant de création AWS CloudFormation rapide d'une pile à l'aide de ce lien : https://console.aws.amazon.com/cloudformation/accueil ? #/ stacks/quickcreate?templateURL=https://aws-observability-solutions.s3.amazonaws.com/Kafka_EC2/CloudWatch/CFN/v1.0.0/dashboard -template-1.0.0.json
. -
Vérifiez que la région sélectionnée sur la console est la région dans laquelle le workload Kafka est exécuté.
-
Pour Nom de la pile, entrez un nom pour identifier cette pile, tel que
KafkaDashboardStack
. -
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 des 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
. -
Reconnaissez les capacités d'accès pour les transformations sous Capacités et transformations. Notez que CloudFormation cela n'ajoute aucune IAM ressource.
-
Vérifiez les paramètres, puis choisissez Create stack.
-
Une fois que le statut de la pile est CREATE_ COMPLETE, choisissez l'onglet Ressources sous la pile créée, puis cliquez sur le lien sous Identifiant 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 souhaitez modifier le fichier modèle pour le personnaliser à quelque fin que ce soit, vous pouvez utiliser l'option Télécharger un fichier modèle sous Create Stack Wizard pour télécharger le modèle modifié. Pour plus d'informations, consultez la section Création d'une pile sur AWS CloudFormation console. Vous pouvez utiliser ce lien pour télécharger le modèle : https://aws-observability-solutions.s3.amazonaws.com/Kafka_EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json
Commencez 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 vérifier que le tableau de bord fonctionne correctement et vous fournissent une expérience pratique de son utilisation pour surveiller un cluster Kafka. En les essayant, vous vous familiariserez avec la navigation dans le tableau de bord et l'interprétation des indicateurs visualisés.
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, les groupes de producteurs et de consommateurs spécifiques que vous souhaitez surveiller.
Pour afficher les métriques d'un cluster Kafka spécifique, sélectionnez le nom de ce cluster dans la liste déroulante Kafka Cluster.
Pour afficher les statistiques d'un groupe de producteurs Kafka spécifique, sélectionnez le nom de ce groupe de producteurs dans la liste déroulante Kafka Producer.
Pour afficher les statistiques d'un groupe de consommateurs Kafka spécifique, sélectionnez le nom de ce groupe de consommateurs dans la liste déroulante Kafka Consumer Group.
Vérifier l'état du cluster
Dans la section Présentation du cluster, recherchez les widgets Partitions Under Replicated et In-Sync Replicas. Il devrait idéalement s'agir de zéro ou d'un petit nombre. Une valeur élevée pour l'une de ces métriques peut indiquer des problèmes avec le cluster Kafka nécessitant une enquête.
Étudier les performances des courtiers
Dans la section Brokers, recherchez les widgets Failed Fetch Requests et Failed Producer Requests. Ils indiquent le nombre de demandes ayant échoué pour les opérations d'extraction et de production, respectivement. Des taux d'échec élevés peuvent indiquer des problèmes liés aux courtiers ou à la connectivité réseau nécessitant une enquête plus approfondie.
Surveillez 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 Taux moyen d'envoi/d'erreur d'enregistrement. Ils vous donneront un aperçu des performances des producteurs du groupe sélectionné. Vous pouvez également accéder aux statistiques relatives à des producteurs et à des sujets spécifiques dans la section Producteurs.
Surveillez le retard des consommateurs
Dans la section Vue d'ensemble des groupes de consommateurs, recherchez le widget Consumer Lag. Cela montre à quel point les consommateurs sont en retard dans le traitement des messages provenant des derniers décalages dans les partitions auxquelles ils sont abonnés. Idéalement, le délai de consommation devrait être faible ou nul. Un retard important 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 consulter les statistiques relatives à des consommateurs et à des sujets 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éez 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 préférée.
Si vous choisissez cette option et que les multiples rôles Kafka font partie du même JVM processus, 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 JVM processus différents, le point de terminaison de chaque rôle peut être différent en fonction du JMX port défini pour ce processus.
Créez des fichiers de configuration d'agent distincts pour chaque rôle Kafka et configurez l'agent pour appliquer les deux fichiers de configuration. Pour obtenir des instructions sur l'application de plusieurs fichiers de configuration, consultezPlusieurs fichiers CloudWatch de configuration d'agents.
L'exemple suivant montre une configuration d' CloudWatch agent dans laquelle les rôles producteur et consommateur sont exécutés sur une seule instance dans le cadre du même JVM processus. 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 étaient exécutés dans le cadre de JVM processus différents, vous pourriez spécifier des numéros de port différents pour chacun, en fonction du JMX port de chaque JVM processus 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
" } } ] } } }