In diesem Dokument wird beschrieben, wie Sie einen Managed Service for Apache Kafka-Cluster überwachen, um die Zuverlässigkeit Ihrer Kafka-Arbeitslasten zu gewährleisten.
Übersicht
Zuverlässigkeit ist die Fähigkeit eines Systems, über einen längeren Zeitraum hinweg korrekt und konsistent zu funktionieren. Bei Kafka-basierten Arbeitslasten umfasst die Zuverlässigkeit sowohl die Kafka-Cluster selbst als auch die Clientanwendungen, die Nachrichten erstellen und nutzen.
Managed Service for Apache Kafka ist so konzipiert, dass er viele häufige Fehler toleriert und sich davon erholt. Der Dienst platziert Replikate beispielsweise in verschiedenen Zonen, um die Fehlertoleranz zu erhöhen, und startet ausgefallene Broker automatisch neu. Andere Faktoren, die sich auf die Zuverlässigkeit auswirken, liegen jedoch außerhalb der direkten Kontrolle des Dienstes, z. B.:
- Clientkonfiguration
- Last im Cluster, einschließlich durchschnittlicher Last und Spitzen
- Anzahl der Partitionen und Replikate
- Themenkonfigurationen, z. B. Nachrichtenspeicherung
Für einen zuverlässigen Betrieb ist es wichtig, den Cluster auf diese Betriebsparameter zu überwachen und sie innerhalb der empfohlenen Bereiche zu halten. In den folgenden Abschnitten werden einige wichtige Messwerte für die Zuverlässigkeit beschrieben.
Clusterkapazität überwachen
Um eine Überlastung eines Clusters zu vermeiden, sollten Sie die folgenden Signale im Blick behalten. Benachrichtigungen können Sie erstellen, um informiert zu werden, wenn die Werte über einen längeren Zeitraum außerhalb des empfohlenen Bereichs liegen.
CPU-Auslastung. Versuchen Sie, die CPU-Auslastung aller Broker unter 80% zu halten.
Laufwerksauslastung des Brokers: Die Laufwerksauslastung des Brokers sollte unter 80 % bleiben.
Laufwerksgröße. Als sicheren Ausgangspunkt empfehlen wir mindestens
2*(segment.bytes)pro Partition und Broker. In der Praxis ist der tatsächliche Speicherplatzbedarf oft deutlich geringer.Standardmäßig wird eine Segmentdatei nach 7 Tagen geschlossen und in den Remote-Speicher verschoben. In den meisten Partitionen werden in diesem Zeitraum weniger als
segment.bytesDaten empfangen, sodass die meisten Partitionen weniger alssegment.bytesSpeicherplatz belegen. Bevor Sie die Festplattengröße erhöhen, sollten Sie die Festplattenauslastung beobachten, während Sie weitere Partitionen im Cluster erstellen.Anzahl der Partitionen: Versuchen Sie, weniger als 4.000 Partitionen pro Broker und weniger als 100.000 Partitionen pro Cluster zu verwenden.
Wenn in Ihrem Cluster die Kapazität knapp ist, können Sie Folgendes tun:
Erhöhen Sie die Anzahl der vCPUs des Clusters. Weitere Informationen finden Sie unter Kafka-Cluster aktualisieren.
Skalieren Sie den Cluster, um weitere Broker hinzuzufügen. Informationen dazu, wie der Dienst Broker bereitstellt, finden Sie unter Broker-Bereitstellung.
Erhöhen Sie die Größe des Broker-Laufwerks. Weitere Informationen finden Sie unter Broker-Festplattengröße konfigurieren.
In der folgenden Tabelle finden Sie Prometheus-Abfragesprache (PromQL)-Abfragen für diese Messwerte, die Sie einem benutzerdefinierten Cloud Monitoring-Dashboard hinzufügen können.
| Signal | PromQL-Abfrage |
|---|---|
| CPU-Auslastung | rate( { "managedkafka.googleapis.com/cpu/core_usage_time", monitored_resource="managedkafka.googleapis.com/Cluster" }[${__interval}] ) / min_over_time( { "managedkafka.googleapis.com/cpu/limit", monitored_resource="managedkafka.googleapis.com/Cluster" }[${__interval}] ) |
| Broker-Laufwerksauslastung | max_over_time( { "managedkafka.googleapis.com/disk/used_bytes", monitored_resource="managedkafka.googleapis.com/Cluster" }[${__interval}] ) / min_over_time( { "managedkafka.googleapis.com/disk/limit", monitored_resource="managedkafka.googleapis.com/Cluster" }[${__interval}] ) |
| Segmentgröße pro Partition | # Assumes that segment files are 225 MiB. Check your cluster configuration. 2*225*(1024*1024) * max_over_time( { "managedkafka.googleapis.com/partitions", monitored_resource="managedkafka.googleapis.com/Cluster" }[${__interval}] ) / min_over_time( { "managedkafka.googleapis.com/disk/limit", monitored_resource="managedkafka.googleapis.com/Cluster" }[${__interval}] ) |
| Partitionen pro Broker | max by (resource_container, location, cluster_id, broker_index) ( max_over_time( { "managedkafka.googleapis.com/partitions", monitored_resource="managedkafka.googleapis.com/Cluster" }[${__interval}] ) ) |
| Partitionen pro Cluster | max by (resource_container, location, cluster_id) ( max_over_time( { "managedkafka.googleapis.com/partitions", monitored_resource="managedkafka.googleapis.com/Cluster" }[${__interval}] ) ) |
Partitionsausgleich zwischen Brokern überwachen
Eine ungleichmäßige Last kann verhindern, dass ein Kafka-Cluster Clientanfragen ordnungsgemäß verarbeitet. Die Anzahl der Partitionen, die einem einzelnen Broker zugewiesen sind, sollte innerhalb von etwa 10% der durchschnittlichen Anzahl von Partitionen pro Broker liegen. Suchen Sie nach Ausreißern bei diesem Messwert.
Um ausgeglichene Partitionen zu erhalten, sollten Sie in Ihrem Cluster automatisches Neuausgleichen beim Hochskalieren aktivieren.
In der folgenden Tabelle finden Sie PromQL-Abfragen, mit denen Sie Partitionenungleichgewichte überwachen können.
| Signal | PromQL-Abfrage |
|---|---|
| Anzahl der Partitionen pro Broker | sum by (resource_container, location, cluster_id, broker_index) ( avg_over_time( { "managedkafka.googleapis.com/partitions", monitored_resource="managedkafka.googleapis.com/Cluster" }[${__interval}] ) ) |
| Partitionsungleichgewicht | sum by (resource_container, location, cluster_id, broker_index) ( avg_over_time( { "managedkafka.googleapis.com/partitions", monitored_resource="managedkafka.googleapis.com/Cluster" }[${__interval}] ) ) / on (resource_container, location, cluster_id) group_left avg by (resource_container, location, cluster_id) ( avg_over_time( { "managedkafka.googleapis.com/partitions", monitored_resource="managedkafka.googleapis.com/Cluster" }[${__interval}] ) ) - 1 |
Partitionsreplikation überwachen
Die Datenreplikation ist entscheidend, um sicherzustellen, dass Ihre Arbeitslasten fehlertolerant sind. In einem fehlerfreien Cluster hat jede Partition in einem Thema die volle Anzahl von Replikaten, basierend auf dem konfigurierten Replikationsfaktor des Themas.
Verwenden Sie die folgenden Signale, um die Partitionsreplikation zu überwachen:
Unter der Mindestanzahl von synchronisierten Replikaten (In-Sync Replicas, ISRs). Wenn eine Partition weniger synchronisierte ISRs als das konfigurierte Minimum (
min.insync.replicas) hat, besteht ein hohes Risiko für Datenverlust und Verfügbarkeit. Normalerweise wird diese Situation durch unzureichende Kapazität auf einem oder mehreren Brokern oder durch Infrastrukturfehler verursacht.Unterreplizierte Partitionen: Eine Partition ist unterrepliziert, wenn die Anzahl der synchronen Replikate unter den Replikationsfaktor fällt. Wenn eine Partition über mehrere zehn Minuten hinweg unterrepliziert bleibt, liegt möglicherweise ein Problem mit den Brokern, der Speicherkapazität oder etwas anderem vor.
Während eines fortlaufenden Neustarts sind Broker nicht verfügbar, da sie neu gestartet werden. Dies führt zu einer vorübergehenden Unterreplizierung. Das ist normal und erfordert kein Eingreifen.
In der folgenden Tabelle finden Sie PromQL-Abfragen, mit denen Sie die Replikation überwachen können.
| Signal | PromQL-Abfrage |
|---|---|
| Unter der Mindestanzahl von ISRs | max by ( resource_container, location, cluster_id ) ( max_over_time( { "managedkafka.googleapis.com/broker/under_min_isr_partitions", monitored_resource="managedkafka.googleapis.com/Cluster" }[${__interval}] ) ) |
| Unter Replikation | max by ( resource_container, location, cluster_id ) ( min_over_time( { "managedkafka.googleapis.com/broker/under_replicated_partitions", monitored_resource="managedkafka.googleapis.com/Cluster" }[10m:${__interval}] ) ) |
Nächste Schritte
- Kafka-Cluster überwachen
- Kafka-Clientanwendungen überwachen
- Größe des Kafka-Clusters planen
- Benutzerdefinierte Dashboards erstellen und verwalten