Integration · Apache Kafka

Apache Kafka Monitoring: Broker, Partitionen und Consumer Lag

Sehen Sie Consumer Lag pro Gruppe und Partition, den Zustand von Brokern und Replikation sowie die Services hinter jedem Topic. Obseria erfasst Kafka-Metriken per OpenTelemetry und verknüpft sie mit Traces.
Obseria Apps und Funktionen: Observability, APM, Infrastruktur und Integrationen
Obseria Home-Dashboard mit Service-Zustand, offenen Problemen, SLO-Erfüllung und Ingestion
Obseria Trace-Explorer mit Span-Liste und Span-Attributen
Überblick

Warum Apache Kafka mit Obseria überwachen

Consumer Lag mit Kontext

Lag pro Consumer Group, Topic und Partition, in TopoGraph mit dem konsumierenden Service verknüpft. So sehen Sie, wer zurückfällt und warum.

Replikation auf einen Blick

In-Sync-Replikas, unterreplizierte und Offline-Partitionen pro Broker zeigen Risiken, bevor ein Brokerausfall zu Datenverlust führt.

Nachrichten Ende-zu-Ende tracen

OpenTelemetry-Kontext in Kafka-Headern verbindet Producer- und Consumer-Spans. Ein langsamer Checkout zeigt das Topic, auf das er gewartet hat.

Abdeckung

Kafka-Komponenten, die Obseria überwacht

  • Broker. Anzahl der Broker, Request-Latenz und JMX-Metriken wie UnderReplicatedPartitions und ActiveControllerCount.
  • Topics und Partitionen. Partitionen pro Topic, aktuelle und älteste Offsets, Replikas und In-Sync-Replikas pro Partition.
  • Consumer Groups. Mitglieder, committete Offsets und Lag pro Gruppe, Topic und Partition sowie summiert pro Topic.
  • Producer und Consumer. Client-Spans und -Metriken aus dem OpenTelemetry Java Agent und anderen SDKs mit Kafka-Instrumentierung.
  • Kafka Connect und Streams. JVM- und JMX-Metriken von Connect-Workern und Streams-Anwendungen über den Obseria Agent oder Java Agent.
  • Managed Kafka. Amazon MSK und andere Managed-Cluster über den kafka_metrics-Receiver und agentenlose Cloud-Integrationen.
Auf einen Blick

Die Apache Kafka-Kennzahlen, auf die es ankommt

Obseria erfasst diese Werte automatisch und zeigt sie in fertigen Dashboards und Alerts.

Rückstand bei der Verarbeitung

Zeigt, wie weit Ihre verarbeitenden Anwendungen hinter den eingehenden Daten liegen, ein direkter Hinweis auf verzögerte Bestellungen.

  • kafka.consumer_group.lag
  • kafka.consumer_group.lag_sum

Aktivität der Verarbeitung

Zeigt, wie viele verarbeitende Instanzen aktiv sind und ob sie zügig durch die eingehenden Daten vorankommen.

  • kafka.consumer_group.members
  • kafka.consumer_group.offset

Sicherheit der Daten

Macht sichtbar, ob alle Daten sicher auf mehrere Server kopiert sind, damit beim Ausfall eines Servers nichts verloren geht.

  • kafka.partition.replicas_in_sync
  • UnderReplicatedPartitions

Cluster-Zustand und Wachstum

Zeigt, wie viele Server online sind, ob der Cluster sauber koordiniert wird und wie stark die Datenmenge wächst.

  • kafka.partition.current_offset
  • kafka.brokers
  • kafka.topic.partitions
  • ActiveControllerCount
Alle 10 Metriken im Detail anzeigen
MetrikEinheitAussage
kafka.consumer_group.lag1Nachrichten, die eine Consumer Group auf einer Partition hinter dem neuesten Offset liegt.
kafka.consumer_group.lag_sum1Gesamter Lag einer Consumer Group über alle Partitionen eines Topics.
kafka.consumer_group.members{members}Aktive Mitglieder pro Gruppe; Einbrüche deuten auf Abstürze oder Rebalances.
kafka.consumer_group.offset1Committeter Offset pro Partition; flach bei wachsendem Lag heißt: Consumer hängt.
kafka.partition.current_offset1Neuester Offset pro Partition, Basis für den Producer-Durchsatz pro Topic.
kafka.partition.replicas_in_sync{replicas}In-Sync-Replikas pro Partition; weniger als der Replikationsfaktor ist ein Risiko.
kafka.brokers{brokers}Anzahl der Broker im Cluster aus Sicht des Clients.
kafka.topic.partitions{partitions}Partitionen pro Topic, die die Parallelität der Consumer begrenzen.
UnderReplicatedPartitions{partitions}JMX-Gauge (kafka.server:type=ReplicaManager) für Partitionen mit fehlenden Replikas; sollte 0 sein.
ActiveControllerCount1JMX-Gauge (kafka.controller:type=KafkaController); genau ein Broker sollte 1 melden.
Einrichtung

Apache Kafka-Monitoring in wenigen Minuten einrichten

  1. Schritt 1

    Collector mit den Brokern verbinden

    Ergänzen Sie den kafka_metrics-Receiver mit Ihren Bootstrap-Brokern und aktivieren Sie die Scraper brokers, topics und consumers.

  2. Schritt 2

    Broker-JMX-Metriken ergänzen

    Installieren Sie den Obseria Agent auf den Broker-Hosts oder binden Sie den OpenTelemetry Java Agent ein, um JVM- und Kafka-JMX-Metriken zu erfassen.

  3. Schritt 3

    Producer und Consumer instrumentieren

    Nutzen Sie OpenTelemetry SDKs oder den Java Agent in Ihren Services, damit Spans den Trace-Kontext über Kafka-Header weitergeben.

Beispielkonfiguration · YAML
receivers:
  kafka_metrics:
    cluster_alias: kafka-prod
    brokers: ["kafka-0:9092", "kafka-1:9092", "kafka-2:9092"]
    protocol_version: 3.0.0
    scrapers: [brokers, topics, consumers]
    collection_interval: 30s
exporters:
  otlphttp:
    endpoint: ${env:OBSERIA_OTLP_ENDPOINT}
    headers:
      Authorization: "Bearer ${env:OBSERIA_TOKEN}"
service:
  pipelines:
    metrics:
      receivers: [kafka_metrics]
      exporters: [otlphttp]

Sofort einsatzbereit

Dashboards, Alerts und SLOs, die bereitstehen, sobald die ersten Daten ankommen.

  • Consumer Lag nach Gruppe, Topic und Partition
  • Übersicht über Broker und Replikation
  • Topic-Durchsatz aus Partition-Offsets
  • Alert: Consumer Lag wächst seit 10 Minuten
  • Alert: unterreplizierte oder Offline-Partitionen über 0
Leitfaden

Apache Kafka-Monitoring: Darauf kommt es an

Warum Kafka Monitoring wichtig ist

Apache Kafka steht zwischen den Services, die Events erzeugen, und denen, die darauf reagieren. Läuft Kafka gesund, bemerkt es niemand. Verliert ein Broker seine Replikas oder fällt eine Consumer Group zurück, werden Bestellungen verspätet verarbeitet, Betrugsprüfungen verpassen ihr Zeitfenster und Dashboards zeigen veraltete Daten. Da Producer weiterhin erfolgreich schreiben, während Consumer hinterherhinken, zeigen sich diese Probleme selten als Fehler. Kafka Monitoring muss sie deshalb als Zahlen sichtbar machen: Lag, Replikationszustand und Durchsatz.

Obseria erfasst Kafka-Metriken mit dem OpenTelemetry Collector und dem Obseria Agent, verknüpft jede Consumer Group mit dem Service, der sie betreibt, und verfolgt Nachrichten per Trace vom Producer bis zum Consumer.

Die Kafka-Metriken, auf die es ankommt

Consumer Lag

Kafka Consumer Lag ist die Differenz zwischen dem neuesten Offset einer Partition und dem Offset, den eine Consumer Group committet hat. kafka.consumer_group.lag zeigt ihn pro Partition, kafka.consumer_group.lag_sum pro Topic. Der absolute Wert allein täuscht: 50.000 Nachrichten sind für einen Service Sekunden, für einen anderen Stunden Arbeit. Beobachten Sie den Trend und alarmieren Sie, wenn der Lag über mehrere Minuten stetig wächst.

Zustand von Brokern und Replikation

Jeder Broker stellt JMX-Metriken bereit. UnderReplicatedPartitions sollte auf jedem Broker 0 sein, OfflinePartitionsCount auf dem Controller ebenfalls, und genau ein Broker sollte ActiveControllerCount mit 1 melden. Aus Client-Sicht zeigt der Vergleich von kafka.partition.replicas_in_sync mit kafka.partition.replicas, welche Partitionen gefährdet sind.

Durchsatz und Partitionen

Die Rate von kafka.partition.current_offset ist die Schreibrate pro Partition. Ungleiche Raten innerhalb eines Topics deuten auf einen ungünstig verteilten Message Key. kafka.topic.partitions begrenzt, wie viele Consumer einer Gruppe parallel arbeiten können.

Typische Kafka-Probleme und wie Sie sie erkennen

  • Hängender Consumer: Der committete Offset bleibt flach, während der Lag wächst. Häufig eine fehlerhafte Nachricht oder ein blockierter Downstream-Aufruf; der Consumer-Span im Trace zeigt, was es ist.
  • Rebalance-Stürme: kafka.consumer_group.members ändert sich ständig, und der Lag springt nach jeder Änderung. Typische Ursachen sind Verarbeitungszeiten über max.poll.interval.ms oder häufige Pod-Neustarts.
  • Hot Partitions: Eine Partition trägt den Großteil des Traffics, ihr Consumer hängt hinterher, während andere Leerlauf haben.
  • Replikation hinkt hinterher: Unterreplizierte Partitionen, die sich nach einem Broker-Neustart nicht erholen, deuten auf Platten- oder Netzwerksättigung beim Follower.
  • Retention-Überraschungen: Nähert sich der Lag dem ältesten Offset (kafka.partition.oldest_offset), werden Nachrichten gelöscht, bevor sie konsumiert sind.

Best Practices für Kafka Monitoring

  1. Alarmieren Sie auf Lag-Wachstum und Aufholzeit, nicht auf einen festen Lag-Wert.
  2. Nutzen Sie für kritische Topics Replikationsfaktor 3 und min.insync.replicas 2 und alarmieren Sie, wenn die In-Sync-Replikas darunter fallen.
  3. Überwachen Sie Clients ebenso wie Broker: Fehlerraten der Producer und Verarbeitungszeit der Consumer erklären den meisten Lag.
  4. Geben Sie den OpenTelemetry-Trace-Kontext in Message-Headern weiter, damit asynchrone Abläufe nachvollziehbar bleiben.
  5. Versehen Sie Metriken mit einem Cluster-Alias, damit mehrere Cluster in Dashboards getrennt bleiben.

So unterstützt Obseria Ihr Kafka Monitoring

Obseria führt Broker-, Topic- und Consumer-Metriken, JVM-Metriken und Client-Traces an einem Ort zusammen. TopoGraph zeigt, welche Services in welches Topic schreiben und daraus lesen, sodass ein Lag-Alert das zuständige Team nennt. Obseria Intelligence korreliert Lag mit Deployments, Consumer-Fehlern und Downstream-Latenz und erklärt die wahrscheinliche Ursache mit einer Beweiskette. Queue-Monitoring-Ansichten, Dashboards und Alerts sind enthalten, und Sie fragen alles mit OQL, PromQL oder SQL ab.

Ein praktischer Einstieg ist ein Collector pro Cluster mit dem kafka_metrics-Receiver sowie der Obseria Agent auf jedem Broker-Host für JMX- und Host-Metriken wie Plattenbelegung und Netzwerkdurchsatz. Stehen die Dashboards für Lag und Replikation, instrumentieren Sie die zwei oder drei kritischsten Producer- und Consumer-Services mit OpenTelemetry. Ab dann kommt jeder Lag-Alert mit den Traces der wartenden Nachrichten und der Deployment-Historie des konsumierenden Services. Das verkürzt den Weg vom Alert zur Behebung deutlich, gerade bei asynchronen Abläufen, die sich über mehrere Teams und Topics erstrecken.

Häufige Fragen zum Apache Kafka-Monitoring

Der kafka_metrics-Receiver des OpenTelemetry Collectors liest die neuesten Partition-Offsets und die committeten Offsets jeder Consumer Group und meldet die Differenz als kafka.consumer_group.lag pro Partition und kafka.consumer_group.lag_sum pro Topic.

Consumer Lag und Partition-Metriken funktionieren ohne JMX. Für Broker-Interna wie UnderReplicatedPartitions oder Request-Latenz installieren Sie den Obseria Agent auf den Broker-Hosts oder binden den OpenTelemetry Java Agent ein.

Ja. Die OpenTelemetry-Instrumentierung für Kafka-Clients schreibt den Trace-Kontext in Message-Header, sodass Producer- und Consumer-Spans in Obseria im selben Trace erscheinen.

Ja. Richten Sie den kafka_metrics-Receiver mit TLS- oder SASL-Einstellungen auf die MSK-Bootstrap-Broker und nutzen Sie die agentenlose AWS-Integration für die Service-Metriken, die AWS veröffentlicht.

Beginnen Sie mit wachsendem Lag über 10 Minuten pro Consumer Group, unterreplizierten Partitionen über 0, Offline-Partitionen über 0 und einer aktiven Controller-Anzahl ungleich 1 im Cluster.

Starten Sie heute mit dem Apache Kafka-Monitoring

Binden Sie Apache Kafka in Minuten per OpenTelemetry oder Obseria Agent an. 14 Tage kostenlos.