Creación de un cliente de Kafka

El cliente de Kafka es una aplicación que permite interactuar con un cluster de Kafka. Las aplicaciones de productor se crean para enviar datos a temas de Kafka y aplicaciones de consumidor para leer los mensajes de temas de Kafka.

Instalación de Kafka

En cada instancia informática que cree, instalará las bibliotecas y herramientas del cliente Apache Kafka.

  1. Conéctese a la instancia informática que ha creado.
    ssh -i <private-key-file> <username>@<public-ip-address>
  2. Apache Kafka necesita Java. Instale Java en la instancia informática, si aún no está instalada. Puede verificar si Java está instalado ejecutando el comando version.
    java -version
    sudo yum install java-11-openjdk -y
  3. Descargue la versión de Apache Kafka que desea instalar desde el servidor oficial de Apache Kafka.
    wget https://downloads.apache.org/kafka/<version>/kafka_<version>.tgz
  4. Extraiga el paquete descargado.
    tar -xzf kafka_<version>.tgz

Configuración del cliente

En cada instancia informática que cree, configure el archivo de propiedades del cliente.

  1. Conéctese a la instancia informática que ha creado.
    ssh -i <private-key-file> <username>@<public-ip-address>
  2. Cambie el directorio al directorio config en la ubicación de la biblioteca de cliente de Apache Kafka instalada.
    cd kafka_<version>/config
  3. Cree un archivo denominado client.properties.
    nano client.properties
  4. Según la autenticación que haya configurado para el cluster de Kafka, cree la configuración de la propiedad de seguridad en el archivo client.properties.
    • Para autenticación 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>"
    • Para la autenticación 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 de la CLI de Kafka

Después de instalar y configurar la aplicación cliente, utilice las herramientas incorporadas de la CLI de Apache Kafka para gestionar e interactuar con el cluster de Kafka en Streaming con Apache Kafka.

Apache Kafka incluye algunos clientes incorporados. Por ejemplo, los clientes Java Consumer y Java Producer.

Además, la comunidad de Kafka proporciona muchos más clientes que puede utilizar.

A continuación se muestran algunas referencias rápidas útiles:

Gestión de la configuración del cliente

Los clientes de Kafka necesitan configuraciones específicas para especificar cómo el cliente debe enviar y recibir mensajes, gestionar errores y gestionar su conexión al cluster de Kafka.

Apache Kafka proporciona herramientas de interfaz de línea de comandos (CLI) en el directorio /bin. Por ejemplo, la herramienta kafka-configs.sh disponible en las bibliotecas de cliente de Kafka instaladas se puede utilizar para gestionar las configuraciones de cliente.

A continuación, se muestra un ejemplo de comandos comunes de la CLI. Obtener detalles del cluster para la URL de inicialización de datos en los comandos. Especifique la ruta al archivo client.properties que ha creado al configurar el cliente.

Visualización de la configuración de temas

Para ver la configuración de un tema, ejecute la herramienta kafka-configs.sh especificando el nombre del tema para el que desea ver la configuración.

bin/kafka-configs.sh
--bootstrap-server $URL
--command-config /path/to/client.properties
--entity-type topics
--entity-name $TOPIC_NAME
--describe
Visualización de información de partición y replicación para todos los temas

Para ver la información de partición y replicación de todos los temas, ejecute la herramienta kafka-configs.sh.

bin/kafka-configs.sh
--bootstrap-server $URL
--command-config /path/to/client.properties
--describe | grep Factor | sort 
Cambio de la configuración del tema

Para cambiar una configuración de tema, como retención y segmento, ejecute la herramienta kafka-configs.sh especificando el nombre del tema para el que desea cambiar la configuración.

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
Eliminando configuración de tema

Para eliminar una configuración de tema, como la retención y el segmento, ejecute la herramienta kafka-configs.sh especificando el nombre del tema para el que desea eliminar la configuración.

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
Visualización del uso de disco para cada partición

Para ver el uso del disco para cada partición, ejecute la herramienta kafka-log-dirs.sh y especifique la ruta al archivo log de salida.

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

A continuación, ejecute el siguiente comando para filtrar el archivo log y mostrar su contenido. Ajuste brokers[0] para dirigirse a un broker específico.

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}'
Activación del Registro de Rastreo

Para activar el log de rastreo para un broker, cree un archivo log4j.properties con las siguientes propiedades.

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 

A continuación, ejecute el siguiente comando.

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

Supervisión de métricas de cliente

Debe supervisar las aplicaciones cliente y el cluster de Kafka.

Utilice el servicio OCI Monitoring para supervisar las métricas emitidas por los agentes de Kafka.

Para las métricas del cliente, debe crear su propio panel de control personalizado para supervisar las aplicaciones cliente. Como mínimo, controle las siguientes métricas de cliente:

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