Creazione di un client Kafka

Il client Kafka è un'applicazione che consente di interagire con un cluster Kafka. È possibile creare applicazioni producer per inviare dati agli argomenti Kafka e alle applicazioni consumer per leggere i messaggi degli argomenti Kafka.

Installazione di Kafka

In ogni istanza di computazione creata, è possibile installare le librerie e gli strumenti del client Apache Kafka.

  1. Connettersi all'istanza di computazione creata.
    ssh -i <private-key-file>
                                    <username>@<public-ip-address>
                                
  2. Apache Kafka richiede Java. Installare Java nell'istanza di computazione, se non è già installato. È possibile verificare se Java è installato eseguendo il comando version.
    java -version
    sudo yum install java-11-openjdk -y
  3. Scaricare la versione di Apache Kafka che si desidera installare dal server Apache Kafka ufficiale.
    wget https://downloads.apache.org/kafka/<version>/kafka_<version>.tgz
  4. Estrarre il pacchetto scaricato.
    tar -xzf kafka_<version>.tgz

Configurazione del client

In ogni istanza di computazione creata, è possibile configurare il file delle proprietà del client.

  1. Connettersi all'istanza di computazione creata.
    ssh -i <private-key-file>
                                    <username>@<public-ip-address>
                                
  2. Spostarsi nella directory config nella posizione della libreria client Apache Kafka installata.
    cd kafka_<version>/config
  3. Creare un file denominato client.properties.
    nano client.properties
  4. A seconda dell'autenticazione configurata per il cluster Kafka, creare le impostazioni delle proprietà di sicurezza nel file client.properties.
    • Per l'autenticazione SASL/SCRAM
      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>"
    • Per l'autenticazione mTLS
      security.protocol=SSL
      ssl.certificate.location=/leaf.cert
      ssl.key.location=/leaf.key
      ssl.keystore.password=<password>
      ssl.keystore.location=/kafka-keystore.p12

Uso dell'interfaccia CLI Kafka

Dopo aver installato e configurato l'applicazione client, utilizzare gli strumenti CLI Apache Kafka integrati per gestire e interagire con il cluster Kafka in Streaming con Apache Kafka.

Apache Kafka include alcuni client integrati. Ad esempio, i client Java Consumer e Java Producer.

Inoltre, la comunità Kafka fornisce molti altri client che è possibile utilizzare.

Di seguito sono riportati alcuni utili riferimenti rapidi:

Gestione della configurazione del client

I client Kafka richiedono configurazioni specifiche per specificare la modalità di invio e ricezione dei messaggi da parte del client, la gestione degli errori e la gestione della connessione al cluster Kafka.

Apache Kafka fornisce strumenti dell'interfaccia a riga di comando (CLI, Command-Line Interface) nella directory /bin. Ad esempio, lo strumento kafka-configs.sh disponibile nelle librerie client Kafka installate può essere utilizzato per gestire le configurazioni client.

Di seguito è riportato un esempio di comandi CLI comuni. Ottenere i dettagli del cluster per l'URL di bootstrap nei comandi. Specificare il percorso del file client.properties creato durante la configurazione del client.

Visualizzazione della configurazione degli argomenti

Per visualizzare la configurazione di un argomento, eseguire lo strumento kafka-configs.sh specificando il nome dell'argomento per il quale si desidera visualizzare la configurazione.

bin/kafka-configs.sh
--bootstrap-server $URL
--command-config /path/to/client.properties
--entity-type topics
--entity-name $TOPIC_NAME
                        --describe
                    
Visualizzazione delle informazioni sulla partizione e sulla replica per tutti gli argomenti

Per visualizzare le informazioni sulla partizione e sulla replica per tutti gli argomenti, eseguire lo strumento kafka-configs.sh.

bin/kafka-configs.sh
--bootstrap-server $URL
--command-config /path/to/client.properties
                        --describe | grep Factor | sort 
                    
Modifica della configurazione degli argomenti

Per modificare la configurazione di un argomento, ad esempio conservazione e segmento, eseguire lo strumento kafka-configs.sh specificando il nome dell'argomento per il quale si desidera modificare la configurazione.

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
                    
Rimozione della configurazione degli argomenti

Per rimuovere la configurazione di un argomento, ad esempio conservazione e segmento, eseguire lo strumento kafka-configs.sh specificando il nome dell'argomento per il quale si desidera rimuovere la configurazione.

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
                    
Visualizzazione dell'uso del disco per ciascuna partizione

Per visualizzare l'utilizzo del disco per ciascuna partizione, eseguire lo strumento kafka-log-dirs.sh e specificare il percorso del file di log di output.

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

Quindi, eseguire il comando seguente per filtrare il file di log e visualizzarne il contenuto. Regolare brokers[0] per indirizzare un broker specifico.

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}'
Abilitazione del log di trace

Per abilitare il log di trace per un broker, creare un file log4j.properties con le proprietà riportate di seguito.

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 

Quindi, eseguire il comando seguente.

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

Monitoraggio delle metriche dei client

È necessario monitorare le applicazioni client e il cluster Kafka.

Utilizza il servizio di monitoraggio OCI per monitorare le metriche emesse dai broker Kafka.

Per le metriche lato client, è necessario creare un dashboard personalizzato per monitorare le applicazioni client. Monitorare almeno le metriche client riportate di seguito.

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