Kafka-Client erstellen

Kafka-Client ist eine Anwendung, mit der Sie mit einem Kafka-Cluster interagieren können. Sie erstellen Producer-Anwendungen, um Daten an Kafka-Themen und Consumer-Anwendungen zu senden, um die Nachrichten aus Kafka-Themen zu lesen.

Kafka installieren

Auf jeder von Ihnen erstellten Compute-Instanz installieren Sie die Apache Kafka-Clientbibliotheken und -tools.

  1. Stellen Sie eine Verbindung zur von Ihnen erstellten Compute-Instanz her.
    ssh -i <private-key-file> <username>@<public-ip-address>
  2. Apache Kafka erfordert Java. Installieren Sie Java in der Compute-Instanz, falls noch nicht installiert. Sie können prüfen, ob Java installiert ist, indem Sie den Versionsbefehl ausführen.
    java -version
    sudo yum install java-11-openjdk -y
  3. Laden Sie die Apache Kafka-Version herunter, die Sie vom offiziellen Apache Kafka-Server installieren möchten.
    wget https://downloads.apache.org/kafka/<version>/kafka_<version>.tgz
  4. Extrahieren Sie das heruntergeladene Package.
    tar -xzf kafka_<version>.tgz

Konfigurieren des Clients

Auf jeder Compute-Instanz, die Sie erstellen, konfigurieren Sie die Clienteigenschaftendatei.

  1. Stellen Sie eine Verbindung zur von Ihnen erstellten Compute-Instanz her.
    ssh -i <private-key-file> <username>@<public-ip-address>
  2. Wechseln Sie in das Verzeichnis config im Speicherort der installierten Apache Kafka-Client-Library.
    cd kafka_<version>/config
  3. Erstellen Sie eine Datei namens client.properties.
    nano client.properties
  4. Abhängig von der Authentifizierung, die Sie für das Kafka-Cluster konfiguriert haben, erstellen Sie die Einstellungen der Sicherheitseigenschaften in der Datei client.properties.
    • Für SASL/SCRAM-Authentifizierung
      security.protocol=SASL_SSL 
      sasl.mechanism=SCRAM-SHA-512 
      sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="<vault-username>" password="<vault-secret>"
    • Für mTLS-Authentifizierung
      security.protocol=SSL
      ssl.certificate.location=/leaf.cert
      ssl.key.location=/leaf.key
      ssl.keystore.password=<password>
      ssl.keystore.location=/kafka-keystore.p12

Kafka-CLI verwenden

Nachdem Sie die Clientanwendung installiert und konfiguriert haben, verwenden Sie die integrierten Apache Kafka-CLI-Tools, um das Kafka-Cluster in Streaming mit Apache Kafka zu verwalten und damit zu interagieren.

Apache Kafka enthält einige integrierte Clients. Beispiel: Java Consumer- und Java Producer-Clients.

Darüber hinaus bietet die Kafka-Community viele weitere Clients, die Sie verwenden können.

Im Folgenden finden Sie einige nützliche Kurzreferenzen:

Clientkonfiguration verwalten

Kafka-Clients erfordern spezifische Konfigurationen, um anzugeben, wie der Client Nachrichten senden und empfangen, Fehler behandeln und seine Verbindung zum Kafka-Cluster verwalten soll.

Apache Kafka stellt CLI-Tools (Command-Line Interface) im Verzeichnis /bin bereit. Beispiel: Mit dem Tool kafka-configs.sh, das in den installierten Kafka-Clientbibliotheken verfügbar ist, können Clientkonfigurationen verwaltet werden.

Im Folgenden finden Sie ein Beispiel für allgemeine CLI-Befehle. Clusterdetails abrufen für die Bootstrap-URL in den Befehlen. Geben Sie den Pfad zu der Datei client.properties an, die Sie beim Konfigurieren des Clients erstellt haben.

Themenkonfiguration anzeigen

Um eine Themenkonfiguration anzuzeigen, führen Sie das Tool kafka-configs.sh aus, indem Sie den Namen des Themas angeben, für das Sie die Konfiguration anzeigen möchten.

bin/kafka-configs.sh
--bootstrap-server $URL
--command-config /path/to/client.properties
--entity-type topics
--entity-name $TOPIC_NAME
--describe
Partitions- und Replikationsinformationen für alle Themen anzeigen

Um Partitions- und Replikationsinformationen für alle Themen anzuzeigen, führen Sie das Tool kafka-configs.sh aus.

bin/kafka-configs.sh
--bootstrap-server $URL
--command-config /path/to/client.properties
--describe | grep Factor | sort 
Themenkonfiguration ändern

Um eine Themenkonfiguration zu ändern, wie Beibehaltung und Segment, führen Sie das Tool kafka-configs.sh aus, indem Sie den Namen des Themas angeben, für das Sie die Konfiguration ändern möchten.

bin/kafka-configs.sh
--bootstrap-server $URL
--command-config /path/to/client.properties
--entity-type topics
--entity-name $TOPIC_NAME
--alter
--add-config retention.ms=1, segment.ms=60000
Themenkonfiguration wird entfernt

Um eine Themenkonfiguration zu entfernen, wie Aufbewahrung und Segment, führen Sie das Tool kafka-configs.sh aus, indem Sie den Namen des Themas angeben, für das Sie die Konfiguration entfernen möchten.

bin/kafka-configs.sh
--bootstrap-server $URL
--command-config /path/to/client.properties
--entity-type topics
--entity-name $TOPIC_NAME
--alter
--delete-config retention.ms,segment.ms
Anzeigen der Datenträgerauslastung für jede Partition

Um die Datenträgernutzung für jede Partition anzuzeigen, führen Sie das Tool kafka-log-dirs.sh aus, und geben Sie den Pfad zur Ausgabelogdatei an.

bin/kafka-log-dirs.sh
--bootstrap-server $URL
--command-config /path/to/client.properties
--describe | tail -1 > /tmp/logdirs.output.txt

Führen Sie anschließend den folgenden Befehl aus, um die Logdatei zu filtern und ihren Inhalt anzuzeigen. Passen Sie brokers[0] an, um einen bestimmten Broker als Ziel festzulegen.

cat /tmp/logdirs.output.txt
  | jq -r '.brokers[0] | .logDirs[0].partitions[] | .partition + " " + (.size|tostring)' 
  | sort 
  | awk 'BEGIN {sum=0} {sum+=$2} END {print sum}'
Tracelog aktivieren

Um das Tracelog für einen Broker zu aktivieren, erstellen Sie eine Datei log4j.properties mit den folgenden Eigenschaften.

log4j.rootLogger=TRACE, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 

Danach führen Sie den folgenden Befehl aus.

export KAFKA_OPTS="-Dlog4j.configuration=file:/path/to/log4j.properties"

Clientmetriken überwachen

Sie müssen die Clientanwendungen und das Kafka-Cluster überwachen.

Mit dem OCI Monitoring-Service können Sie die von den Kafka-Brokern ausgegebenen Metriken überwachen.

Für die clientseitigen Metriken müssen Sie ein eigenes benutzerdefiniertes Dashboard erstellen, um Clientanwendungen zu überwachen. Überwachen Sie mindestens die folgenden Clientmetriken:

  • record-send-rate
  • request-latency-avg
  • error-rate
  • records-consumed-rate
  • lag
  • fetch-latency-avg
  • Retries
  • disconnects