Usando as ferramentas do console Kafka com o Event Streams

O Apache Kafka é fornecido com várias ferramentas de console para operações simples de administração e de mensagens. É possível usar muitas delas com o Event Streams, mas o Event Streams não permite conexão com seu cluster ZooKeeper. Conforme o Kafka foi desenvolvido, muitas das ferramentas que anteriormente precisavam de conexão com o ZooKeeper não têm mais esse requisito.

Essas ferramentas de console estão no diretório bin do download do Kafka. É possível fazer download de um cliente a partir de Apache Kafka downloads.

Para fornecer as credenciais SASL para essas ferramentas, crie um arquivo de propriedades com base no exemplo a seguir:

    sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="USER" password="PASSWORD";
    security.protocol=SASL_SSL
    sasl.mechanism=PLAIN
    ssl.protocol=TLSv1.2
    ssl.enabled.protocols=TLSv1.2
    ssl.endpoint.identification.algorithm=HTTPS

Substitua USER e PASSWORD pelos valores de sua guia Credenciais de serviço do Event Streams no console do IBM Cloud.

Produtor de console

É possível usar a ferramenta produtor de console do Kafka com o Event Streams. Deve-se fornecer uma lista de brokers e credenciais SASL.

Depois de criar o arquivo de propriedades, é possível executar o produtor do console em um terminal conforme a seguir:

   kafka-console-producer.sh --broker-list BOOTSTRAP_ENDPOINTS --producer.config CONFIG_FILE --topic TOPIC_NAME

Substitua as variáveis a seguir no exemplo pelos seus próprios valores:

  • BOOTSTRAP_ENDPOINTS com o valor a partir da sua guia Event Streams Credenciais de serviço no console IBM Cloud.
  • CONFIG_FILE pelo caminho do arquivo de configuração.

É possível usar muitas outras opções dessa ferramenta, exceto aquelas que requerem acesso ao ZooKeeper.

Consumidor de console

É possível usar a ferramenta consumidor de console do Kafka com o Event Streams. Deve-se fornecer um servidor de autoinicialização e credenciais SASL.

Depois de ter criado o arquivo de propriedades conforme descrito anteriormente, execute o consumidor do console em um terminal, conforme a seguir:

   kafka-console-consumer.sh --bootstrap-server BOOTSTRAP_ENDPOINTS --consumer.config CONFIG_FILE --topic TOPIC_NAME

Substitua as variáveis a seguir no exemplo pelos seus próprios valores:

  • BOOTSTRAP_ENDPOINTS com o valor a partir da sua guia Event Streams Credenciais de serviço no console IBM Cloud.
  • CONFIG_FILE pelo caminho do arquivo de configuração.

É possível usar muitas outras opções dessa ferramenta, exceto aquelas que requerem acesso ao ZooKeeper.

Grupos de consumidores

É possível usar a ferramenta grupos de consumidores do Kafka com o Event Streams. Como o Event Streams não permite conexão com seu cluster ZooKeeper, algumas das opções não estão disponíveis.

Depois de ter criado o arquivo de propriedades conforme descrito anteriormente, execute as ferramentas dos grupos de consumidores em um terminal. Por exemplo, é possível listar os grupos de consumidores, conforme a seguir:

   kafka-consumer-groups.sh --bootstrap-server BOOTSTRAP_ENDPOINTS --command-config CONFIG_FILE --list --timeout 60000

Substitua as variáveis a seguir no exemplo pelos seus próprios valores:

  • BOOTSTRAP_ENDPOINTS com o valor a partir da sua guia Event Streams Credenciais de serviço no console IBM Cloud.
  • CONFIG_FILE pelo caminho do arquivo de configuração.

Usando essa ferramenta, também é possível exibir detalhes como as posições atuais dos consumidores, seu atraso ou o ID do cliente para cada partição para um grupo. Por exemplo:

   kafka-consumer-groups.sh --bootstrap-server BOOTSTRAP_ENDPOINTS --command-config CONFIG_FILE --describe --group GROUP --timeout 60000

No exemplo, substitua GROUP pelo nome do grupo para o qual você deseja recuperar detalhes.

Veja a saída de amostra a seguir da execução da ferramenta kafka-consumer-groups:

GROUP              TOPIC    PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG         CONSUMER-ID      HOST          CLIENT-ID
consumer-group-1   foo        0          264             267            3          client-1-abc    example.com    client-1
consumer-group-1   foo        1          124             124            0          client-1-abc    example.com    client-1
consumer-group-1   foo        2          212             212            0          client-2-def    example.com    client-2

No exemplo, é possível ver que o grupo de consumidores consumer-group-1 possui dois membros consumidores que consomem mensagens do tópico foo com três partições. Também mostra que o consumidor client-1-abc que está consumindo da partição 0 está três mensagens atrás porque o deslocamento atual do consumidor é 264, mas o deslocamento da última mensagem na partição 0 é 267.

Tópicos

É possível usar a ferramenta kafka-topics com o Event Streams. Assegure-se de usar a V2.8 da ferramenta, pois ela não requer acesso ao Zookeeper.

Um cenário no qual você pode desejar usar kafka-topics é descobrir informações sobre seus tópicos e sua configuração em um cluster existente para que seja possível recriá-los em um novo. As informações obtidas por kafka-topics podem ser usadas para criar os mesmos tópicos mencionados no novo cluster. Para obter mais informações sobre como criar tópicos, consulte Usando a API de administração do cliente Java do Kafka ou o Comando ibmcloud es topic-create. Como alternativa, também é possível usar o console do IBM Event Streams.

Veja a saída de amostra a seguir da execução da ferramenta kafka-tópicos:

   bin/kafka-topics.sh --bootstrap-server kafka03-prod01.messagehub.services.us-south.bluemix.net:9093 --command-config vcurr_dal06.properties --describe

Topic:sample-topic	PartitionCount:3	ReplicationFactor:3	 Configs:min.insync.replicas=2,unclean.leader.election.enable=true,retention.bytes=1073741824,segment.bytes=536870912,retention.ms=86400000
    Topic: sample-topic    Partition: 0    Leader: 0    Replicas: 0,2,1    Isr: 0,2,1
    Topic: sample-topic    Partition: 1    Leader: 1    Replicas: 1,2,0	   Isr: 0,2,1
    Topic: sample-topic    Partition: 2    Leader: 2    Replicas: 2,1,0	   Isr: 0,2,1
Topic:testtopic	 PartitionCount:1	 ReplicationFactor:3	Configs:min.insync.replicas=2,unclean.leader.election.enable=true,retention.bytes=1073741824,segment.bytes=536870912,retention.ms=86400000
    Topic: testtopic    Partition: 0    Leader: 0    Replicas: 0,2,1   Isr: 0,2

Na amostra, é possível ver que o tópico sample-topic tem três partições e um fator de replicação de três. O exemplo também mostra em qual broker o líder de cada partição está e quais réplicas estão em sincronização (Isr). Por exemplo, o líder da partição 0 está no broker 0, os seguidores estão nos brokers 2 e 1 e todas as três réplicas estão em sincronização. Se você olhar para o segundo tópico testtopic, ele possui apenas uma partição, que é replicada em intermediários 0, 2 e 1 mas a lista de réplicas in-sync mostra apenas 0 e 2. Isso significa que o seguidor no broker 1 está ficando para trás e, portanto, não está na lista Isr.

Reconfiguração do Kafka Streams

É possível usar essa ferramenta com o Event Streams para reconfigurar o estado de processamento de um aplicativo Kafka Stream, dessa forma, será possível reprocessar sua entrada do zero. Antes de executar essa ferramenta, assegure-se de que seu aplicativo Streams esteja totalmente parado.

Por exemplo:

   kafka-streams-application-reset.sh --bootstrap-servers BOOTSTRAP_ENDPOINTS --config-file CONFIG_FILE --application-id APP_ID

Substitua as variáveis a seguir no exemplo pelos seus próprios valores:

  • BOOTSTRAP_ENDPOINTS com o valor a partir da sua guia Event Streams Credenciais de serviço no console IBM Cloud.
  • CONFIG_FILE pelo caminho do arquivo de configuração.
  • APP_ID por seu ID do aplicativo Streams.