CloudWatch Lösung: Kafka-Workload auf Amazon EC2 - Amazon CloudWatch

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

CloudWatch Lösung: Kafka-Workload auf Amazon EC2

Mit dieser Lösung können Sie die Erfassung von out-of-the-box Metriken mithilfe von CloudWatch Agenten für Kafka-Workloads (Broker, Produzenten und Verbraucher) konfigurieren, die auf Instances ausgeführt werden. EC2 Darüber hinaus hilft sie Ihnen bei der Einrichtung eines vorkonfigurierten CloudWatch Dashboards. Allgemeine Informationen zu allen CloudWatch Observability-Lösungen finden Sie unter. CloudWatch Observability-Lösungen

Voraussetzungen

Diese Lösung ist für die folgenden Bedingungen relevant:

Vorteile

Die Lösung ermöglicht die Überwachung von Kafka-Servern und bietet wertvolle Erkenntnisse für die folgenden Anwendungsfälle:

  • Überwachen Sie den Zustand des Kafka-Clusters mithilfe von Replikations- und Synchronisierungsmetriken.

  • Verfolgen Sie die Leistung des Brokers anhand von Anforderungsausfällen und Latenzen sowie dem Netzwerkverkehr.

  • Überwachen Sie Fehler, Latenzen und Verzögerungen von Herstellern und Verbrauchern.

  • Analysieren Sie die zugrunde liegende JVM Leistung für Kafka-Cluster.

  • Wechseln Sie zwischen mehreren Kafka-Clustern, Produzenten und Verbrauchern, die über die Lösung unter demselben Konto konfiguriert wurden.

Im Folgenden sind die wichtigsten Vorteile der Lösung aufgeführt:

  • Automatisiert die Erfassung von Metriken für Kafka und die zugrunde liegenden Komponenten JVM mithilfe der CloudWatch Agentenkonfiguration, sodass die manuelle Instrumentierung entfällt.

  • Bietet ein vorkonfiguriertes, konsolidiertes CloudWatch Dashboard für Kafka und Metriken. JVM Das Dashboard verarbeitet automatisch Metriken von neuen EC2 Kafka-Instanzen, die mit der Lösung konfiguriert wurden, auch wenn diese Metriken bei der ersten Erstellung des Dashboards noch nicht vorhanden waren. Es ermöglicht Ihnen auch, die Metriken zur einfacheren Fokussierung und Verwaltung in logische Anwendungen zu gruppieren.

Die folgende Abbildung zeigt ein Beispiel für das Dashboard für diese Lösung.

Kafka Cluster dashboard showing metrics like partitions, request times, and failure rates.

Kosten

Diese Lösung erstellt und verwendet Ressourcen in Ihrem Konto. Ihnen wird die Standardnutzung in Rechnung gestellt, einschließlich der folgenden Kosten:

  • Alle vom CloudWatch Agenten gesammelten Metriken werden als benutzerdefinierte Metriken berechnet. Die Anzahl der von dieser Lösung verwendeten Metriken hängt von der Anzahl der EC2 Hosts ab.

    • Jeder für die Lösung konfigurierte Broker-Host veröffentlicht 33 Metriken plus eine Metrik (disk_used_percent), wobei die Anzahl der Metriken für jeden EC2 Host von der Anzahl der Festplattenpfade für diesen Host abhängt.

    • Jeder für die Lösung konfigurierte Producer-Host veröffentlicht drei Metriken mit der topic Dimension und drei Metriken ohne die topic Dimension. Bei den Metriken mit der topic Dimension zählt jedes Thema als separate Metrik.

    • Jeder für die Lösung konfigurierte Consumer-Host veröffentlicht zwei Metriken mit topic Dimensionen und drei Metriken ohne topic Dimensionen. Bei den Metriken mit Themendimensionen zählt jedes Thema als separate Metrik.

  • Ein benutzerdefiniertes Dashboard.

  • APIOperationen, die vom CloudWatch Agenten zur Veröffentlichung der Metriken angefordert wurden. Bei der Standardkonfiguration für diese Lösung ruft der CloudWatch Agent das PutMetricDataeinmal pro Minute für jeden EC2 Host auf. Das bedeutet, PutMetricDataAPIdass der innerhalb eines 30-Tage-Monats für jeden EC2 Host aufgerufen 30*24*60=43,200 wird.

Weitere Informationen zur CloudWatch Preisgestaltung finden Sie unter CloudWatch Amazon-Preise.

Mit dem Preisrechner können Sie die ungefähren monatlichen Kosten für die Nutzung dieser Lösung abschätzen.

Um den Preisrechner zur Schätzung Ihrer monatlichen Lösungskosten zu verwenden
  1. Öffnen Sie den CloudWatch Amazon-Preisrechner.

  2. Geben Sie im Abschnitt Metriken für Anzahl der Metriken den Wert einbroker_metrics_count + producer_metrics_count + consumer_metrics_count. Berechnen Sie diese wie folgt:

    • broker_metrics_count= (33 + durchschnittliche Anzahl von Festplattenpfaden pro EC2 Host) * number_of_ec2_broker_hosts

    • producer_metrics_count= (3 * durchschnittliche Anzahl der Themen pro Herstellerhost + 3) * Anzahl der EC2_Producer_Hosts

    • consumer_metrics_count= (2 * durchschnittliche Anzahl der Themen pro Verbraucherhost + 3) * Anzahl_der_EC2_Consumer_Hosts

  3. APIsGeben Sie im Abschnitt für Anzahl der Anfragen einAPI. 43200 * number of EC2 instances configured for this solution

    Standardmäßig führt der CloudWatch Agent für jeden EC2 Host eine PutMetricDataOperation pro Minute aus.

  4. Geben Sie im Abschnitt Dashboards und Alarme für Anzahl der Dashboards den Wert ein. 1

  5. Ihre geschätzten monatlichen Kosten finden Sie unten im Preisrechner.

CloudWatch Agentenkonfiguration für diese Lösung

Der CloudWatch Agent ist eine Software, die kontinuierlich und autonom auf Ihren Servern und in containerisierten Umgebungen ausgeführt wird. Es sammelt Metriken, Logs und Traces aus Ihrer Infrastruktur und Ihren Anwendungen und sendet sie an CloudWatch X-Ray.

Weitere Informationen über den CloudWatch Agenten finden Sie unterErfassen Sie mit dem CloudWatch Agenten Metriken, Logs und Traces.

Die Agentenkonfiguration in dieser Lösung erfasst die grundlegenden Metriken für KafkaJVM, und. EC2 Der CloudWatch Agent kann so konfiguriert werden, dass er standardmäßig mehr Kafka und JVM Metriken sammelt, als das Dashboard anzeigt. Eine Liste der EC2 Metriken finden Sie unterVom CloudWatch Agenten auf Linux- und macOS-Instances gesammelte Metriken.

Stellen Sie JMX Ports für die Rollen Broker, Producer und Consumer von Kafka zur Verfügung

Der CloudWatch Makler stützt sich daraufJMX, die Kennzahlen zu den Maklern, Produzenten und Verbrauchern von Kafka zu sammeln. Um dies zu ermöglichen, müssen Sie den JMX Port auf Ihren Servern und Anwendungen verfügbar machen.

Bei Kafka-Brokern müssen Sie die JMX_PORT Umgebungsvariable verwenden, um den Port festzulegen. Sie müssen die Broker neu starten, nachdem Sie diese Umgebungsvariable festgelegt haben. Sehen Sie sich die Startskripts und Konfigurationsdateien Ihrer Anwendung an, um den besten Ort für das Hinzufügen dieser Argumente zu finden.

Für Linux- und macOS-Systeme können Sie beispielsweise den folgenden Befehl verwenden, um den JMX Port festzulegen. Achten Sie darauf, eine ungenutzte Portnummer anzugeben.

export JMX_PORT=port-number

Für Kafka-Produzenten und -Anwender hängen die Anweisungen zur Bereitstellung des JMX Ports vom Workload-Typ ab, den Sie für Ihre Producer- oder JVM Consumer-Anwendung verwenden. Diese Anweisungen finden Sie in der Dokumentation zu Ihrer Anwendung.

Um einen JMX Port für die Überwachung und Verwaltung zu aktivieren, müssen Sie im Allgemeinen die folgenden Systemeigenschaften für Ihre JVM Anwendung festlegen. Im folgenden Beispiel wird „Nicht authentifiziertJMX“ eingerichtet. Wenn Ihre Sicherheitsrichtlinien/Anforderungen eine Aktivierung JMX mit Kennwortauthentifizierung oder SSL für den Fernzugriff erfordern, finden Sie in der JMXDokumentation nach, um die erforderliche Eigenschaft festzulegen.

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

Führen Sie den Befehl aus, um den JMX Port zu überprüfen. ps aux | grep jmxremote.port Die Ergebnisse sollten zeigen, dass der JMX Port für die JVM Prozesse festgelegt wurde.

Agentenkonfiguration für diese Lösung

Die vom Agenten gesammelten Metriken sind in der Agentenkonfiguration definiert. Die Lösung bietet Agentenkonfigurationen zur Erfassung der empfohlenen Metriken mit geeigneten Dimensionen für das Dashboard der Lösung. Jede Kafka-Rolle, z. B. Makler, Produzent oder Verbraucher, verfügt über eine eigene Agentenkonfiguration, die die Erfassung von Kafka-Metriken JVM und EC2 zugrunde liegenden Metriken ermöglicht.

Die Schritte zur Bereitstellung der Lösung werden weiter unten in beschrieben. Stellen Sie den Agenten für Ihre Lösung bereit Die folgenden Informationen sollen Ihnen helfen zu verstehen, wie Sie die Agentenkonfiguration an Ihre Umgebung anpassen können.

Sie müssen einige Teile der folgenden Agentenkonfiguration an Ihre Umgebung anpassen:

  • Die JMX Portnummer ist die Portnummer, die Sie im vorherigen Abschnitt dieser Dokumentation konfiguriert haben. Die Portnummer steht in der endpoint Zeile in der Konfiguration.

  • ClusterName— Dies wird als Dimension für die gesammelten Broker-Metriken verwendet. Geben Sie einen aussagekräftigen Namen ein, der die Cluster-Gruppierung für die Instances darstellt, auf denen der Kafka-Broker ausgeführt wird.

  • ProcessGroupName— Dies wird als Dimension für JVM Metriken verwendet, die für Broker gesammelt wurden. Geben Sie den gleichen Wert an, den Sie angebenClusterName. Auf diese Weise können die JVM Metriken derselben Kafka-Broker-Gruppe wie die Broker-Metriken im Lösungs-Dashboard angezeigt werden.

  • ProducerGroupName— Dies wird als Dimension für die gesammelten Herstellermetriken verwendet. Geben Sie einen aussagekräftigen Namen ein, der für die Gruppe der Producer-Instances steht. Für diesen Wert können Sie Ihre Producer-Anwendung oder Ihren Producer-Dienst angeben, den Sie für eine kombinierte Ansicht der Producer-Metriken im Lösungs-Dashboard verwenden möchten.

  • ConsumerGroupName— Dies wird als Dimension für die gesammelten Verbraucherkennzahlen verwendet. Geben Sie einen aussagekräftigen Namen an, der die Gruppe der Verbraucherinstanzen repräsentiert. Dies entspricht nicht dem Konzept der Verbrauchergruppen in Kafka. Dies ist nur eine Gruppierungsdimension, in der Sie Ihre Verbraucheranwendung oder Ihren Dienst angeben können, den Sie für eine kombinierte Ansicht der Verbrauchermetriken im Lösungs-Dashboard verwenden möchten

Wenn Sie beispielsweise zwei Kafka-Cluster auf demselben Konto ausführen, einen für die order-processing Anwendung und einen für die inventory-management Anwendung, sollten Sie die ProcessGroupName Dimensionen ClusterName und in der Agentenkonfiguration der Broker-Instance entsprechend festlegen.

  • Legen Sie für die order-processing Cluster-Broker-Instanzen ClusterName=order-processing und ProcessGroupName=order-processing fest.

  • Legen Sie für die inventory-management Cluster-Broker-Instanzen den Wert ClusterName=inventory-management und festProcessGroupName=inventory-management.

  • Legen Sie in ähnlicher Weise die ProducerGroupName für Producer-Instances und ConsumerGroupName für Consumer-Instances auf der Grundlage ihrer jeweiligen Anwendungen fest.

Wenn Sie die oben genannten Dimensionen korrekt festgelegt haben, gruppiert das Lösungs-Dashboard die Metriken automatisch auf der Grundlage der ConsumerGroupName Dimensionen ClusterNameProducerGroupName, und. Das Dashboard wird Drop-down-Optionen enthalten, mit denen Sie Metriken für bestimmte Cluster und Gruppen auswählen und anzeigen können, sodass Sie die Leistung einzelner Cluster und Gruppen separat überwachen können.

Stellen Sie sicher, dass Sie die entsprechende Agentenkonfiguration auf den richtigen EC2 Instanzen bereitstellen. Jede Konfiguration wird als separater Parameter im SSM Parameterspeicher gespeichert, wie weiter unten beschriebenSchritt 2: Speichern Sie die empfohlene CloudWatch Agentenkonfigurationsdatei im Systems Manager Parameter Store.

Die folgenden Anweisungen beschreiben die Situation, in der die Rollen Producer, Consumer und Broker auf separaten EC2 Instanzen bereitgestellt werden, ohne dass es zu Überschneidungen kommt. Wenn Sie mehrere Kafka-Rollen auf denselben EC2 Instanzen ausführen, finden Sie Konfigurieren Sie den Agenten für mehrere Kafka-Rollen auf derselben Instanz weitere Informationen unter.

Agentenkonfiguration für Kafka-Broker-Agenten

Verwenden Sie die folgende CloudWatch Agentenkonfiguration für EC2 Instanzen, in denen Kafka-Broker-Agenten eingesetzt werden. Ersetzen ClusterName mit dem Namen des Clusters, der verwendet werden soll, um diese Metriken für eine einheitliche Ansicht zu gruppieren. Der Wert, den Sie angeben für ClusterName wird sowohl als ClusterName Dimension als auch als ProcessGroupName Dimension verwendet. Ersetzen port-number mit dem JMX Port Ihres Kafka-Servers.

Die in dieser Konfiguration angezeigten EC2 Metriken (Konfiguration, die außerhalb des JMX Blocks angezeigt wird) funktionieren nur für Linux- und macOS-Instanzen. Wenn Sie Windows-Instanzen verwenden, können Sie diese Metriken in der Konfiguration weglassen. Informationen zu Messwerten, die auf Windows-Instanzen erfasst wurden, finden Sie unterVom CloudWatch Agenten auf Windows Server-Instanzen gesammelte Metriken.

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

Agentenkonfiguration für Kafka-Produzenten

Verwenden Sie die folgende CloudWatch Agentenkonfiguration auf EC2 Amazon-Instances, in denen Kafka-Produzenten eingesetzt werden. Ersetzen ProducerGroupName mit dem Namen der Anwendung oder Gruppe, die Sie verwenden möchten, um Ihre Metriken für eine einheitliche Ansicht zu gruppieren. Ersetzen port-number mit dem JMX Port Ihrer Kafka-Producer-Anwendung.

Die Lösung aktiviert keine JVM Metriken für Kafka-Produzenten, da das Lösungs-Dashboard keine JVM Metriken anzeigt, die sich auf Kafka-Produzenten beziehenJVM. Sie können die Agentenkonfiguration so anpassen, dass auch JVM Metriken ausgegeben werden. JVM Metriken, die sich auf Produzenten beziehen, sind jedoch im Lösungs-Dashboard nicht sichtbar.

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

Agentenkonfiguration für Kafka-Verbraucher

Verwenden Sie die folgende CloudWatch Agentenkonfiguration für EC2 Instanzen, auf denen Kafka-Consumer ausgeführt werden. Ersetzen ConsumerGroupName mit dem Namen der Anwendung oder Gruppe, die verwendet werden soll, um diese Metriken für eine einheitliche Ansicht zu gruppieren. Ersetzen port-number mit dem JMX Port Ihrer Kafka-Consumer-Anwendung.

Die Lösung aktiviert keine JVM Kennzahlen für Kafka-Verbraucher, da das Lösungs-Dashboard keine JVM Kennzahlen JVM für Verbraucher anzeigt. Sie können die Agentenkonfiguration so anpassen, dass auch JVM Metriken ausgegeben werden. JVM Metriken, die sich auf den Verbraucher beziehen, sind jedoch im Lösungs-Dashboard nicht sichtbar.

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

Stellen Sie den Agenten für Ihre Lösung bereit

Je nach Anwendungsfall gibt es mehrere Ansätze für die Installation des CloudWatch Agenten. Wir empfehlen die Verwendung von Systems Manager für diese Lösung. Es bietet eine Konsolenerfahrung und erleichtert die Verwaltung einer Flotte verwalteter Server innerhalb eines einzigen AWS Kontos. Die Anweisungen in diesem Abschnitt verwenden Systems Manager und sind für den Fall vorgesehen, dass der CloudWatch Agent nicht mit vorhandenen Konfigurationen ausgeführt wird. Sie können überprüfen, ob der CloudWatch Agent ausgeführt wird, indem Sie die Schritte unter befolgenStellen Sie sicher, dass der CloudWatch Agent läuft.

Wenn Sie den CloudWatch Agenten bereits auf den EC2 Hosts ausführen, auf denen der Workload bereitgestellt wird, und die Agentenkonfigurationen verwalten, können Sie die Anweisungen in diesem Abschnitt überspringen und Ihren vorhandenen Bereitstellungsmechanismus verwenden, um die Konfiguration zu aktualisieren. Stellen Sie sicher, dass Sie die Agentenkonfiguration entsprechend der Rolle (Broker, Producer oder Consumer) mit Ihrer vorhandenen Agentenkonfiguration zusammenführen und dann die zusammengeführte Konfiguration bereitstellen. Wenn Sie Systems Manager verwenden, um die Konfiguration für den CloudWatch Agenten zu speichern und zu verwalten, können Sie die Konfiguration mit dem vorhandenen Parameterwert zusammenführen. Weitere Informationen finden Sie unter CloudWatch Agent-Konfigurationsdateien verwalten.

Anmerkung

Wenn Sie Systems Manager zur Bereitstellung der folgenden CloudWatch Agentenkonfigurationen verwenden, werden alle vorhandenen CloudWatch Agentenkonfigurationen auf Ihren EC2 Instanzen ersetzt oder überschrieben. Sie können diese Konfiguration an Ihre individuelle Umgebung oder Ihren Anwendungsfall anpassen. Die in dieser Lösung definierten Metriken sind die Mindestwerte, die für das empfohlene Dashboard erforderlich sind.

Der Bereitstellungsprozess umfasst die folgenden Schritte:

  • Schritt 1: Stellen Sie sicher, dass die EC2 Zielinstanzen über die erforderlichen IAM Berechtigungen verfügen.

  • Schritt 2: Speichern Sie die empfohlene Agentenkonfigurationsdatei im Systems Manager Parameter Store.

  • Schritt 3: Installieren Sie den CloudWatch Agenten mithilfe eines AWS CloudFormation Stacks auf einer oder mehreren EC2 Instanzen.

  • Schritt 4: Stellen Sie sicher, dass das Agenten-Setup richtig konfiguriert ist.

Sie müssen diese Schritte je nachdem wiederholen, ob Ihr Broker, Producer und Consumer auf derselben EC2 Instance oder auf unterschiedlichen Instances bereitgestellt werden. Wenn beispielsweise der Kafka-Broker, Producer und Consumer auf separaten Instances ohne Überschneidung bereitgestellt werden, müssen Sie diese Schritte dreimal mit den entsprechenden Agentenkonfigurationen für Broker-, Producer- und EC2 Consumer-Instances wiederholen.

Schritt 1: Stellen Sie sicher, dass die EC2 Ziel-Instances über die erforderlichen IAM Berechtigungen verfügen

Sie müssen Systems Manager die Erlaubnis erteilen, den CloudWatch Agenten zu installieren und zu konfigurieren. Sie müssen dem CloudWatch Agenten auch die Erlaubnis erteilen, Telemetriedaten von Ihrer EC2 Instanz an zu CloudWatch veröffentlichen. Stellen Sie sicher, dass der IAM Rolle, die der Instanz zugewiesen ist, die mazonSSMManaged InstanceCore IAM Richtlinien CloudWatchAgentServerPolicyund A angehängt sind.

Schritt 2: Speichern Sie die empfohlene CloudWatch Agentenkonfigurationsdatei im Systems Manager Parameter Store

Parameter Store vereinfacht die Installation des CloudWatch Agenten auf einer EC2 Instanz, indem Konfigurationsparameter sicher gespeichert und verwaltet werden, sodass keine hartcodierten Werte erforderlich sind. Dies gewährleistet einen sichereren und flexibleren Bereitstellungsprozess, ermöglicht eine zentrale Verwaltung und einfachere Aktualisierungen von Konfigurationen über mehrere Instanzen hinweg.

Gehen Sie wie folgt vor, um die empfohlene CloudWatch Agentenkonfigurationsdatei als Parameter im Parameter Store zu speichern.

Um die CloudWatch Agenten-Konfigurationsdatei als Parameter zu erstellen
  1. Öffnen Sie die AWS Systems Manager Konsole unter https://console.aws.amazon.com/systems-manager/.

  2. Wählen Sie im Navigationsbereich Application Management, Parameter Store aus.

  3. Gehen Sie wie folgt vor, um einen neuen Parameter für die Konfiguration zu erstellen.

    1. Wählen Sie Create parameter (Parameter erstellen) aus.

    2. Geben Sie einen Namen für den Parameter ein, in dem Ihre CloudWatch Agentenkonfiguration gespeichert wird, z. B. AmazonCloudWatch-Kafka-Producer-Configuration AmazonCloudWatch-Kafka-Consumer-Configuration für Produzenten, Verbraucher oder AmazonCloudWatch-Kafka-Broker-Configuration Makler. Wenn Sie mehrere Kafka-Rollen in einer einzigen habenEC2, benennen Sie die Rollen zur leichteren Identifizierung entsprechend. Dieser Wert wird später verwendet, um diese Konfiguration an den Agenten zu verteilen, der auf Ihrer EC2 Instanz ausgeführt wird.

    3. Wählen Sie für Parameter-Stufe die Option Standard aus.

    4. Wählen Sie unter Type (Typ) die Option String (Zeichenfolge) aus.

    5. Wählen Sie als Datentyp Text aus.

    6. Fügen Sie in das Feld Wert den vollständigen Text der CloudWatch Agentenkonfiguration ein. Achten Sie darauf, den JSON Block für die Kafka-Rolle auszuwählen, die diese Instanz hostet. Beachten Sie die unter, und bereitgestellte Konfiguration Agentenkonfiguration für Kafka-Broker-AgentenAgentenkonfiguration für Kafka-Produzenten, Agentenkonfiguration für Kafka-Verbraucher wenn Sie die Konfiguration für Broker, Producer und Consumer speichern. Wenn Sie mehrere Kafka-Rollen auf derselben EC2 Instanz ausführen, stellen Sie sicher, dass Sie die Konfiguration bei Bedarf zusammenführen, wie unter Konfigurieren Sie den Agenten für mehrere Kafka-Rollen auf derselben Instanz Auf derselben Instanz beschrieben

    7. Wählen Sie Create parameter (Parameter erstellen) aus.

Schritt 3: Installieren Sie den CloudWatch Agenten und wenden Sie die Konfiguration mithilfe einer Vorlage an AWS CloudFormation

Sie können AWS CloudFormation damit den Agenten installieren und ihn so konfigurieren, dass er die CloudWatch Agentenkonfiguration verwendet, die Sie in den vorherigen Schritten erstellt haben.

Um den CloudWatch Agenten für diese Lösung zu installieren und zu konfigurieren
  1. Öffnen Sie den AWS CloudFormation Quick Create Stack Wizard über diesen Link: https://console.aws.amazon.com/cloudformation/Home? #/ stacks/quickcreate?templateURL=https://aws-observability-solutions.s3.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw agent-installation-template -1.0.0.json.

  2. Stellen Sie sicher, dass die ausgewählte Region auf der Konsole die Region ist, in der der Kafka-Workload ausgeführt wird.

  3. Geben Sie unter Stackname einen Namen ein, um diesen Stack zu identifizieren, z. B. CWAgentInstallationStack

  4. Geben Sie im Abschnitt Parameter Folgendes an:

    1. Geben Sie für CloudWatchAgentConfigSSMden Namen des Systems Manager Manager-Parameters für die Agentenkonfiguration ein, die Sie zuvor erstellt haben, z. B. AmazonCloudWatch-Kafka-Broker-Configuration AmazonCloudWatch-Kafka-Producer-Configuration für Makler, Produzenten und AmazonCloudWatch-Kafka-Consumer-Configuration Verbraucher.

    2. Um die Zielinstanzen auszuwählen, haben Sie zwei Möglichkeiten.

      1. Geben Sie für InstanceIdseine durch Kommas getrennte Liste der Instanzen eine Liste der Instanzen IDs an, auf IDs denen Sie den CloudWatch Agenten mit dieser Konfiguration installieren möchten. Sie können eine einzelne Instanz oder mehrere Instanzen auflisten.

      2. Wenn Sie die Bereitstellung in großem Umfang durchführen, können Sie die TagKeyund die entsprechenden Optionen angeben TagValue, sodass alle EC2 Instanzen mit diesem Tag und Wert als Ziel ausgewählt werden. Wenn Sie eine angeben TagKey, müssen Sie eine entsprechende angeben TagValue. (Geben Sie für eine Auto Scaling Scaling-Gruppe aws:autoscaling:groupName für die TagKeyund den Namen der Auto Scaling Scaling-Gruppe an, die TagKeyauf allen Instances innerhalb der Auto Scaling Scaling-Gruppe bereitgestellt werden soll.)

        Wenn Sie InstanceIdssowohl die als auch die TagKeysParameter angeben, haben die InstanceIdsVorrang und die Tags werden ignoriert.

  5. Überprüfen Sie die Einstellungen und wählen Sie dann Stapel erstellen.

Wenn Sie die Vorlagendatei zunächst bearbeiten möchten, um sie anzupassen, wählen Sie unter Assistent zum Erstellen von Stacks die Option Vorlagendatei hochladen, um die bearbeitete Vorlage hochzuladen. Weitere Informationen finden Sie unter Einen Stack auf der AWS CloudFormation Konsole erstellen. Sie können den folgenden Link verwenden, um die Vorlage herunterzuladen: https://aws-observability-solutions.s3.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw- agent-installation-template -1.0.0.json.

Anmerkung

Nach Abschluss dieses Schritts wird dieser Systems Manager Manager-Parameter den CloudWatch Agenten zugeordnet, die in den Zielinstanzen ausgeführt werden. Dies bedeutet, dass:

  1. Wenn der Systems Manager Manager-Parameter gelöscht wird, wird der Agent gestoppt.

  2. Wenn der Systems Manager Manager-Parameter bearbeitet wird, werden die Konfigurationsänderungen automatisch in der geplanten Häufigkeit, die standardmäßig 30 Tage beträgt, für den Agenten übernommen.

  3. Wenn Sie Änderungen an diesem Systems Manager Manager-Parameter sofort anwenden möchten, müssen Sie diesen Schritt erneut ausführen. Weitere Informationen zu Zuordnungen finden Sie unter Arbeiten mit Zuordnungen in Systems Manager.

Schritt 4: Stellen Sie sicher, dass das Agenten-Setup richtig konfiguriert ist

Sie können überprüfen, ob der CloudWatch Agent installiert ist, indem Sie die Schritte unter befolgenStellen Sie sicher, dass der CloudWatch Agent läuft. Wenn der CloudWatch Agent nicht installiert ist und nicht ausgeführt wird, stellen Sie sicher, dass Sie alles richtig eingerichtet haben.

Wenn alles korrekt eingerichtet ist, sollten Sie sehen, wie die Kafka-Metriken veröffentlicht werden. CloudWatch Sie können in der CloudWatch Konsole nachsehen, ob sie veröffentlicht wurden.

Um zu überprüfen, ob Kafka-Metriken veröffentlicht werden CloudWatch
  1. Öffnen Sie die CloudWatch Konsole unter. https://console.aws.amazon.com/cloudwatch/

  2. Wählen Sie Metriken, Alle Metriken aus.

  3. Vergewissern Sie sich, dass Sie die Region ausgewählt haben, in der Sie die Lösung bereitgestellt haben, und wählen Sie Benutzerdefinierte Namespaces, aus. CWAgent

  4. Suchen Sie nach den Metriken, die im Abschnitt zur Agentenkonfiguration dieses Dokuments aufgeführt sind, z. kafka.partition.offline B. nach Maklern, kafka.consumer.fetch.rate Verbrauchern oder kafka.producer.request-rate Herstellern. Wenn Sie Ergebnisse für diese Metriken sehen, werden die Metriken unter veröffentlicht CloudWatch.

Erstellen Sie das Kafka-Lösungs-Dashboard

In diesem Dashboard werden die neu ausgegebenen Metriken sowohl für Kafka als auch für den Basiswert angezeigt. JVM Dieses Dashboard bietet eine Übersicht der wichtigsten Mitwirkenden über den Status Ihrer Kafka-Workload, unabhängig von Herstellern, Maklern und Verbrauchern. In der Ansicht mit den meisten Mitwirkenden werden die 10 wichtigsten Widgets pro Metrik angezeigt. So können Sie Ausreißer auf einen Blick erkennen.

Das Lösungs-Dashboard zeigt keine EC2 Metriken an. Um EC2 Metriken anzuzeigen, müssen Sie das EC2 automatische Dashboard verwenden, um die EC2 Verkaufsmetriken zu sehen, und das EC2 Konsolen-Dashboard verwenden, um die vom CloudWatch Agenten gesammelten EC2 Metriken zu sehen. Weitere Informationen zu automatischen Dashboards für AWS Dienste finden Sie unter. Ein CloudWatch Dashboard für ein einzelnes anzeigen AWS Service nicht zulässig

Um das Dashboard zu erstellen, können Sie die folgenden Optionen verwenden:

  • Verwenden Sie die CloudWatch Konsole, um das Dashboard zu erstellen.

  • Verwenden Sie die AWS CloudFormation Konsole, um das Dashboard bereitzustellen.

  • Laden Sie die AWS CloudFormation Infrastruktur als Code herunter und integrieren Sie sie als Teil Ihrer Continuous Integration (CI) -Automatisierung.

Wenn Sie die CloudWatch Konsole zum Erstellen eines Dashboards verwenden, können Sie eine Vorschau des Dashboards anzeigen, bevor Sie es erstellen und bezahlen.

Anmerkung

Das AWS CloudFormation in dieser Lösung erstellte Dashboard zeigt Metriken aus der Region an, in der die Lösung bereitgestellt wird. Stellen Sie sicher, dass Sie den AWS CloudFormation Stack in der Region erstellen, in der Ihre JVM und Kafka-Metriken veröffentlicht werden.

Wenn Sie einen anderen benutzerdefinierten Namespace als CWAgent in der CloudWatch Agentenkonfiguration angegeben haben, müssen Sie die AWS CloudFormation Vorlage für das Dashboard so ändern, dass sie durch den von Ihnen verwendeten benutzerdefinierten Namespace CWAgent ersetzt wird.

Um das Dashboard über die Konsole zu erstellen CloudWatch
  1. Öffnen Sie die CloudWatch Konsole Create Dashboard über diesen Link: https://console.aws.amazon.com/cloudwatch/Home? #dashboards? dashboardTemplate= ApacheKafkaOnEc 2&referrer=os-Katalog.

  2. Stellen Sie sicher, dass es sich bei der ausgewählten Region auf der Konsole um die Region handelt, in der der Kafka-Workload ausgeführt wird.

  3. Geben Sie den Namen des Dashboards ein und wählen Sie dann Create Dashboard aus.

    Um dieses Dashboard leicht von ähnlichen Dashboards in anderen Regionen zu unterscheiden, empfehlen wir, den Namen der Region in den Namen des Dashboards aufzunehmen, z. B. KafkaDashboard-us-east-1

  4. Zeigen Sie eine Vorschau des Dashboards an und wählen Sie Speichern, um das Dashboard zu erstellen.

Um das Dashboard zu erstellen, verwenden Sie AWS CloudFormation
  1. Öffnen Sie den Assistenten AWS CloudFormation zum schnellen Erstellen von Stacks über diesen Link: https://console.aws.amazon.com/cloudformation/Home? #/ stacks/quickcreate?templateURL=https://aws-observability-solutions.s3.amazonaws.com/Kafka_EC2/CloudWatch/CFN/v1.0.0/dashboard -template-1.0.0.json.

  2. Stellen Sie sicher, dass die ausgewählte Region auf der Konsole die Region ist, in der der Kafka-Workload ausgeführt wird.

  3. Geben Sie unter Stackname einen Namen ein, um diesen Stack zu identifizieren, z. B. KafkaDashboardStack

  4. Geben Sie im Abschnitt Parameter den Namen des Dashboards unter dem DashboardNameParameter an.

    Um dieses Dashboard leicht von ähnlichen Dashboards in anderen Regionen zu unterscheiden, empfehlen wir, den Namen der Region in den Namen des Dashboards aufzunehmen, z. B. KafkaDashboard-us-east-1

  5. Bestätigen Sie die Zugriffsmöglichkeiten für Transformationen unter Funktionen und Transformationen. Beachten Sie, dass CloudFormation dadurch keine Ressourcen hinzugefügt werden. IAM

  6. Überprüfe die Einstellungen und wähle dann Stapel erstellen.

  7. Wenn der Stack-Status CREATE_ lautetCOMPLETE, wählen Sie unter dem erstellten Stack die Registerkarte Ressourcen und dann den Link unter Physikalische ID, um zum Dashboard zu gelangen. Sie können auch in der CloudWatch Konsole auf das Dashboard zugreifen, indem Sie im linken Navigationsbereich der Konsole Dashboards auswählen und den Namen des Dashboards unter Benutzerdefinierte Dashboards suchen.

Wenn Sie die Vorlagendatei bearbeiten möchten, um sie für einen beliebigen Zweck anzupassen, können Sie die bearbeitete Vorlage mithilfe der Option Vorlagendatei hochladen unter dem Assistenten zum Erstellen von Stacks hochladen. Weitere Informationen finden Sie unter Einen Stack auf der AWS CloudFormation Konsole erstellen. Sie können diesen Link verwenden, um die Vorlage herunterzuladen: https://aws-observability-solutions.s3.amazonaws.com/Kafka_EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json.

Beginnen Sie mit dem Kafka-Dashboard

Hier sind ein paar Aufgaben, die Sie mit dem neuen Kafka-Dashboard ausprobieren können. Mit diesen Aufgaben können Sie überprüfen, ob das Dashboard ordnungsgemäß funktioniert, und Sie erhalten praktische Erfahrungen mit der Überwachung eines Kafka-Clusters. Wenn Sie diese ausprobieren, werden Sie sich mit der Navigation im Dashboard und der Interpretation der visualisierten Metriken vertraut machen.

Verwenden Sie die Drop-down-Listen

Das Dashboard bietet oben Dropdownlisten, mit denen Sie die spezifischen Kafka-Cluster-, Producer- und Consumer-Gruppen, die Sie überwachen möchten, filtern und auswählen können.

  • Um Metriken für einen bestimmten Kafka-Cluster anzuzeigen, wählen Sie diesen Clusternamen in der Dropdownliste Kafka-Cluster aus.

  • Um Metriken für eine bestimmte Kafka-Producer-Gruppe anzuzeigen, wählen Sie den Namen der Produzentengruppe in der Dropdownliste Kafka Producer aus.

  • Um Metriken für eine bestimmte Kafka-Verbrauchergruppe anzuzeigen, wählen Sie den Namen dieser Verbrauchergruppe in der Dropdownliste Kafka-Verbrauchergruppe aus.

Überprüfen Sie den Zustand des Clusters

Suchen Sie im Abschnitt Cluster-Übersicht nach den Widgets Partitionen unter replizierten und Synchronisierten Replikaten. Diese sollten idealerweise Null oder eine kleine Zahl sein. Ein großer Wert für eine dieser Metriken könnte auf Probleme mit dem Kafka-Cluster hinweisen, die untersucht werden müssen.

Untersuchen Sie die Leistung des Bro

Suchen Sie im Abschnitt Brokers nach den Widgets Fehlgeschlagene Abrufanforderungen und Fehlgeschlagene Produzentenanfragen. Diese zeigen die Anzahl der fehlgeschlagenen Anfragen für Abruf- bzw. Produktionsvorgänge an. Hohe Ausfallraten könnten auf Probleme mit den Brokern oder der Netzwerkkonnektivität hinweisen, die weitere Untersuchungen erfordern.

Überwachen Sie die Leistung der Hersteller

Suchen Sie im Abschnitt „Übersicht über die Produzentengruppe“ nach den Widgets „Durchschnittliche Anforderungsrate“, „Durchschnittliche Anforderungslatenz“ und „Durchschnittliche Übertragungs-/Fehlerrate von Datensätzen“. Diese geben dir einen Überblick darüber, wie die Produzenten in der ausgewählten Gruppe abschneiden. Im Bereich Produzenten kannst du dir auch detaillierte Statistiken zu bestimmten Produzenten und Themen ansehen.

Überwachen Sie den Rückstand der Verbraucher

Suchen Sie im Bereich Consumer Group Overview nach dem Widget Consumer Lag. Dies zeigt, wie weit die Verbraucher bei der Verarbeitung von Nachrichten aus den neuesten Offsets in den Partitionen, die sie abonniert haben, im Rückstand sind. Im Idealfall sollte die Verzögerung bei den Verbrauchern gering oder gleich Null sein. Ein großer Rückstand bei den Verbrauchern könnte darauf hindeuten, dass die Verbraucher nicht in der Lage sind, mit der Geschwindigkeit der Datenproduktion Schritt zu halten, was zu Datenverlusten oder Verzögerungen bei der Verarbeitung führen könnte. Im Bereich Verbraucher können Sie sich auch detaillierte Informationen zu bestimmten Verbrauchern und Themen ansehen.

Konfigurieren Sie den Agenten für mehrere Kafka-Rollen auf derselben Instanz

Die einzelnen Konfigurationen für Kafka-Rollen, die unter aufgeführt sind, CloudWatch Agentenkonfiguration für diese Lösung gelten nur, wenn die Rollen Producer, Consumer und Broker auf separaten EC2 Instanzen bereitgestellt werden, ohne dass es zu Überschneidungen kommt. Wenn Sie mehrere Kafka-Rollen auf denselben EC2 Amazon-Instances ausführen, haben Sie zwei Möglichkeiten:

  • Erstellen Sie eine einzelne Agent-Konfigurationsdatei, in der alle Metriken für alle auf dieser Instance bereitgestellten Kafka-Rollen aufgeführt und konfiguriert sind. Wenn Sie Systems Manager zur Verwaltung der Agentenkonfiguration verwenden möchten, ist dies die bevorzugte Option.

    Wenn Sie diese Option wählen und die verschiedenen Kafka-Rollen Teil desselben JVM Prozesses sind, müssen Sie in der Agentenkonfiguration für jede Kafka-Rolle denselben Endpunkt angeben. Wenn die mehreren Kafka-Rollen Teil verschiedener JVM Prozesse sind, kann der Endpunkt für jede Rolle je nach dem für diesen Prozess festgelegten JMX Port unterschiedlich sein.

  • Erstellen Sie separate Agentenkonfigurationsdateien für jede Kafka-Rolle und konfigurieren Sie den Agenten so, dass er beide Konfigurationsdateien anwendet. Anweisungen zum Anwenden mehrerer Konfigurationsdateien finden Sie unterMehrere CloudWatch Agenten-Konfigurationsdateien.

Das folgende Beispiel zeigt eine CloudWatch Agentenkonfiguration, bei der die Rollen Producer und Consumer auf einer Instanz als Teil desselben JVM Prozesses ausgeführt werden. In diesem Fall muss die Portnummer sowohl im Producer- als auch im Consumer-Bereich der folgenden Konfiguration identisch sein. Wenn die beiden Rollen stattdessen als Teil verschiedener JVM Prozesse ausgeführt würden, könnten Sie je nach Port jedes einzelnen JVM Prozesses unterschiedliche JMX Portnummern für jede Rolle angeben.

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