Engineering

Überwachen von Kafka mit Elasticsearch, Kibana und Beats

Unseren ersten Post zur Überwachung von Kafka mit Filebeat gab es 2016. Seit der Version 6.5 unterstützt das Beats-Team ein Kafka-Modul. Dieses Modul automatisiert einen Großteil der Arbeit, die mit dem Überwachen von Kafka-Clustern verbunden ist.

In diesem Blogpost soll es um das Erfassen von Logdaten und Metriken mit den Kafka-Modulen in Filebeat und Metricbeat gehen. Wir werden diese Daten in einen auf dem Elasticsearch Service gehosteten Cluster ingestieren und uns die von den Beats-Modulen bereitgestellten Kibana-Dashboards ansehen.

Dieser Blogpost basiert auf der Version 7.1 des Elastic Stack. Eine Beispielumgebung gibt es bei GitHub.

Warum Module?

Wer schon einmal mit komplexen Logstash-Grok-Filtern gearbeitet hat, wird schnell schätzen lernen, wie einfach die Einrichtung der Logdatenerfassung mit einem Filebeat-Modul ist. Die Nutzung von Modulen in einer Monitoring-Konfiguration hat aber auch noch weitere Vorteile:

  • einfachere Konfiguration der Erfassung von Logdaten und Metriken
  • Elastic Common Schema ermöglicht die Standardisierung von Dokumenten
  • zweckmäßige Indexvorlagen zur Bereitstellung optimaler Felddatentypen
  • angemessene Größenanpassung für Indizes; Beats nutzen zur Gewährleistung vernünftiger Shard-Größen für Beats-Indizes die Rollover-API

Eine vollständige Liste der unterstützten Module finden Sie in der Filebeat-Dokumentation und in der Metricbeat-Dokumentation.

Einführung in die Umgebung

Unser Beispiel-Setup besteht aus einem Kafka-Cluster mit den drei Knoten „kafka0“, „kafka1“ und „kafka2“. Auf jedem Knoten werden Kafka 2.1.1 sowie zur Knotenüberwachung Filebeat und Metricbeat ausgeführt. Die Beats werden per Cloud-ID so konfiguriert, dass sie Daten an unseren Elasticsearch Service-Cluster senden. Die Kafka-Module in Filebeat und Metricbeat erstellen Dashboards in Kibana für die Visualisierung der Daten. Ein kleiner Hinweis: Wenn Sie sich ansehen möchten, wie dies in Ihrem eigenen Cluster funktioniert, können Sie den Elasticsearch Service mit all seinen Funktionen 14 Tage lang kostenlos ausprobieren.

Einrichten der Beats

Als Nächstes konfigurieren Sie die Beats und starten sie dann.

Installieren und Aktivieren der Beats-Dienste

Zur Installation von Filebeat und Metricbeat folgen wir der Anleitung in „Erste Schritte“. Da wir mit Ubuntu arbeiten, installieren wir die Beats über das APT-Repository.

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
sudo apt-get update
sudo apt-get install filebeat metricbeat
systemctl enable filebeat.service
systemctl enable metricbeat.service

Konfigurieren der Cloud-ID unseres Elasticsearch Service-Deployments

Kopieren Sie die Cloud-ID aus der Elastic Cloud-Konsole und nutzen Sie sie zum Konfigurieren des Outputs für Filebeat und Metricbeat.

Kopieren und Konfigurieren der Cloud-ID

CLOUD_ID=Kafka_Monitoring:ZXVyb3BlLXdlc...
CLOUD_AUTH=elastic:password
filebeat export config -E cloud.id=${CLOUD_ID} -E cloud.auth=${CLOUD_AUTH} > /etc/filebeat/filebeat.yml
metricbeat export config -E cloud.id=${CLOUD_ID} -E cloud.auth=${CLOUD_AUTH} > /etc/metricbeat/metricbeat.yml

Aktivieren des Kafka- und des Systemmoduls in Filebeat und Metricbeat

Als Nächstes müssen wir das Kafka-Modul und das Systemmodul für beide Beats aktivieren.

filebeat modules enable kafka system
metricbeat modules enable kafka system

Anschließend können wir die Beats-Einrichtung starten. Dabei werden die von den Modulen verwendeten Indexvorlagen und Kibana-Dashboards konfiguriert.

filebeat setup -e --modules kafka,system
metricbeat setup -e --modules kafka,system

Die Beats sind startbereit

Nachdem alles konfiguriert wurde, können wir jetzt Filebeat und Metricbeat starten.

systemctl start metricbeat.service
systemctl start filebeat.service

Erkunden der Monitoring-Daten

Im Standard-Logging-Dashboard wird Folgendes angezeigt:

  • zuletzt vom Kafka-Cluster gefundene Ausnahmen, gruppiert nach Ausnahmeklasse und unter Angabe aller Details zur Ausnahme
  • ein Überblick über den Logdurchsatz nach Ebene unter Angabe aller Details zum Log

Standardmäßiges Logging-Dashboard mit Monitoring-Daten

    Filebeat ingestiert Daten unter Berücksichtigung des Elastic Common Schema, sodass wir bis hinunter auf die Host-Ebene filtern können.

    Liniendiagramm zur Darstellung der Stacktraces nach Klasse

    Das von Metricbeat bereitgestellte Dashboard zeigt den aktuellen Status der Themen innerhalb des Kafka-Clusters. Über ein Drop-down-Menü kann die Dashboard-Anzeige auf ein einzelnes Thema eingeschränkt werden.

    Von Metricbeat erstelltes Dashboard mit einem Überblick über den Kafka-Cluster

    Die Visualisierung von „Consumer Lag“ und „Offset“ zeigen, ob Verbraucher bei bestimmten Themen ins Hintertreffen geraten. Den partitionsspezifischen Offset-Angaben kann entnommen werden, ob eine bestimmte Partition zurückbleibt.

    In der standardmäßigen Metricbeat-Konfiguration werden die beiden Datensätze „kafka.partition“ und „kafka.consumergroup“ erfasst. Diese Datensätze geben Einblick in den Zustand des jeweiligen Kafka-Clusters und seiner Verbraucher.

    Der Datensatz „kafka.partition“ enthält alle Einzelheiten über den Zustand der Partitionen im Cluster. Diese Daten können eingesetzt werden, um

    • Dashboards zur Visualisierung der Zuordnung zwischen Partitionen und Cluster-Knoten zu erstellen,
    • auf Partitionen hinzuweisen, die nicht synchron laufen,
    • die Partitionszuweisung im Laufe der Zeit zu verfolgen und
    • Partitions-Offset-Grenzwerte über einen bestimmten Zeitraum hinweg zu visualisieren.

    Unten sehen Sie ein vollständiges „kafka.partition“-Dokument.

    Vollständiges „kafka.partition“-Dokument mit allen Einzelheiten zu den Partitionen im Cluster

    Der Datensatz „kafka.consumergroup“ erfasst den Zustand eines einzelnen Verbrauchers. Diese Daten können genutzt werden, um darzustellen, aus welchen Partitionen der Verbraucher liest und wie es mit den aktuellen Offsets dieses Verbrauchers aussieht.

    „kafka.consumergroup“-Dokument mit Anzeige des Zustands eines einzelnen Verbrauchers

    Fazit

    Das Filebeat- und das Metricbeat-Modul bieten eine einfache Methode für das Einrichten der Überwachung eines Kafka-Clusters. Generell lässt sich sagen, dass Beats-Module die Konfiguration der Erfassung von Logdaten und Metriken vereinfachen. Viele Module stellen Beispiel-Dashboards für die Nutzung dieser Daten bereit. Filebeat und Metricbeat richten auch Elasticsearch-Indizes für optimale Performance ein. Sie können Filebeat und Metricbeat herunterladen und noch heute damit beginnen, Ihre Logdaten und Metriken an den Elasticsearch Service oder Ihren lokalen Elasticsearch-Cluster zu senden.