Gerar dados sintéticos para um cluster do Serviço Gerenciado para Apache Kafka

Aprenda a gerar dados de teste sintéticos para um cluster do Serviço Gerenciado do Google Cloud para Apache Kafka usando o Google Cloud console.

Este guia usa o modelo do gerador de dados de streaming do Dataflow para publicar automaticamente dados de telemetria de jogos de amostra em um tópico do Serviço Gerenciado para Apache Kafka. O gerador de dados de streaming é um modelo do Dataflow que gera registros de teste sintéticos com base em um esquema especificado a uma taxa configurável. A geração de dados sintéticos permite observar a atividade do cluster, testar o tratamento de carga e verificar as métricas de monitoramento sem instalar um cliente Kafka local ou escrever um código de produtor personalizado. Para mais informações sobre o modelo, consulte Modelo do gerador de dados de streaming do Dataflow.

Antes de começar

Antes de iniciar este tutorial, crie um cluster do Serviço Gerenciado para Apache Kafka. Se você já tiver um cluster, pule esta etapa. Para informações sobre os papéis e permissões necessários para criar um cluster, consulte Criar e visualizar um cluster. Se você seguir esse guia, conclua apenas a seção Criar um cluster antes de retornar a este guia.

Como criar um cluster

Console

  1. Acesse a página Serviço Gerenciado para Apache Kafka > Clusters.

    Acessar Clusters

  2. Clique em Criar.
  3. Na caixa Nome do cluster, insira um nome para o cluster.
  4. Na lista Região, selecione um local para o cluster.
  5. Em Configuração de rede, configure a sub-rede em que o cluster está acessível:
    1. Em Projeto, selecione o projeto.
    2. Em Rede, selecione a rede VPC.
    3. Em Sub-rede, selecione a sub-rede.
    4. Clique em Concluído.
  6. Clique em Criar.

Depois de clicar em Criar, o estado do cluster será Creating. Quando o cluster estiver pronto, o estado será Active.

gcloud

Para criar um cluster do Kafka, execute o managed-kafka clusters create comando.

gcloud managed-kafka clusters create KAFKA_CLUSTER \
--location=REGION \
--cpu=3 \
--memory=3GiB \
--subnets=projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME \
--async

Substitua:

  • KAFKA_CLUSTER: um nome para o cluster do Kafka
  • REGION: o local do cluster
  • PROJECT_ID: ID do projeto
  • SUBNET_NAME: a sub-rede em que você quer criar o cluster, por exemplo, default

Para informações sobre os locais compatíveis, consulte Locais do Serviço Gerenciado para Apache Kafka.

O comando é executado de forma assíncrona e retorna um ID de operação:

Check operation [projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID] for status.

Para acompanhar o progresso da operação de criação, use o gcloud managed-kafka operations describe comando:

gcloud managed-kafka operations describe OPERATION_ID \
  --location=REGION

Quando o cluster estiver pronto, a saída desse comando incluirá a entrada state: ACTIVE. Para mais informações, consulte Monitorar a operação de criação do cluster.

Funções exigidas

Para receber as permissões necessárias para gerar dados sintéticos para um cluster, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Esses papéis predefinidos contêm as permissões necessárias para gerar dados sintéticos para um cluster. Para acessar as permissões exatas que são necessárias, expanda a seção Permissões necessárias:

Permissões necessárias

As permissões a seguir são necessárias para gerar dados sintéticos para um cluster:

  • dataflow.jobs.create
  • dataflow.jobs.get
  • managedkafka.clusters.get
  • managedkafka.topics.get
  • managedkafka.topics.create
  • managedkafka.topics.publish
  • resourcemanager.projects.setIamPolicy

Essas permissões também podem ser concedidas com papéis personalizados ou outros papéis predefinidos.

Para garantir que a conta de serviço padrão do Compute Engine tenha as permissões necessárias para executar o job do Dataflow, peça ao administrador para conceder os seguintes papéis do IAM à conta de serviço padrão do Compute Engine no projeto:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

O administrador também pode conceder à conta de serviço padrão do Compute Engine as permissões necessárias por meio de papéis personalizados ou outros papéis predefinidos.

Se você tiver as permissões para conceder papéis do IAM, o Google Cloud console vai pedir que você conceda os papéis necessários durante o processo de geração de dados sintéticos. Se você não tiver permissão para conceder papéis, o console vai mostrar uma mensagem pedindo que você solicite que um administrador conceda as permissões necessárias.

Gerar dados sintéticos

Para criar e iniciar o job do Dataflow que gera dados sintéticos para o tópico do Kafka:

  1. Noconsole, acesse a página Google Cloud Serviço Gerenciado para Apache Kafka > Clusters.

    Acessar Clusters

  2. Clique no nome do cluster, como test-cluster.

  3. Selecione a guia Origens.

  4. Na página Origens, no card Gerar dados sintéticos, clique em Criar um job do Dataflow. O painel Produzir dados é aberto.

  5. No painel Produzir dados, selecione um tópico na lista suspensa Tópico do Kafka, como test-topic. Se você não tiver um tópico, crie um:

    1. Na lista suspensa Tópico do Kafka, clique em Criar tópico. O painel Criar tópico é aberto.
    2. No campo Nome do tópico, insira test-topic.
    3. Mantenha os valores padrão de Contagem de partições (3) e Fator de replicação (3).
    4. Clique em Criar.
  6. No campo Taxa de saída (QPS), insira a taxa de consultas por segundo que você quer que o gerador produza, como 100. Isso permite testar como o cluster processa cargas diferentes.

  7. Se um aviso aparecer informando que a conta de serviço do Dataflow não tem as permissões necessárias, clique em Conceder para atribuir os seguintes papéis:

    • Worker do Dataflow (roles/dataflow.worker)
    • Cliente Kafka gerenciado (roles/managedkafka.client)
  8. No painel Produzir dados, clique em Criar para iniciar o job do Dataflow.

    Uma notificação aparece informando que o job do Dataflow foi criado.

  9. Na notificação, clique em Visualizar job para abrir a página Detalhes do job do Dataflow , em que é possível observar o gráfico, o status e as métricas de execução do job.

Visualizar métricas do cluster

Depois que o job do Dataflow for iniciado, observe os dados sintéticos que estão sendo enviados para o cluster:

  1. Na página Detalhes do cluster para test-cluster, clique na guia Monitoramento.

  2. Analise os gráficos Taxas de bytes e 5 principais tópicos por capacidade de processamento de produção para verificar se os dados estão sendo produzidos ativamente no tópico.

Visualizar as mensagens

Verifique se as mensagens sintéticas estão sendo publicadas no tópico usando um dos métodos a seguir.

Visualizar nas ferramentas de linha de comando do Kafka

Para consumir mensagens diretamente do cluster usando as ferramentas da CLI do Kafka em uma VM cliente:

  1. Conecte-se à VM do cliente usando SSH. Se você não tiver configurado uma VM cliente, consulte Criar uma VM cliente.

  2. Acesse o endereço do servidor de inicialização do cluster no Google Cloud console e defina-o como uma variável de ambiente na VM cliente:

    1. Noconsole, acesse a página Google Cloud Serviço Gerenciado para Apache Kafka > Clusters.

      Acessar Clusters

    2. Clique no nome do cluster, como test-cluster.

    3. Na página Detalhes do cluster, clique em Configurações.

    4. Copie o valor listado em URL de inicialização.

  3. Na VM cliente, defina a variável de ambiente:

    ```sh
    export BOOTSTRAP="BOOTSTRAP_URL"
    ```
    

    Substitua BOOTSTRAP_URL pelo endereço de inicialização copiado.

  4. Execute o comando kafka-console-consumer.sh para ler mensagens:

    kafka-console-consumer.sh \
     --bootstrap-server $BOOTSTRAP \
     --topic TOPIC_ID \
     --from-beginning \
     --consumer.config client.properties
    

    Substitua TOPIC_ID pelo nome do tópico, como test-topic.

    O console mostra os registros de dados do jogo sintéticos de streaming à medida que são consumidos.

  5. Pressione Ctrl+C para interromper o consumo de mensagens.

Ver no BigQuery

Para transmitir dados do tópico do Kafka para o BigQuery e visualizar os registros:

  1. Como os dados sintéticos são JSON brutos, é necessário criar manualmente a tabela de destino no BigQuery antes de criar o conector. Para informações sobre como criar uma tabela, consulte Criar uma tabela vazia com uma definição de esquema. Crie uma tabela chamada test-topic no conjunto de dados com o seguinte esquema:

    [
      {"name": "eventId", "type": "STRING"},
      {"name": "eventTimestamp", "type": "INTEGER"},
      {"name": "ipv4", "type": "STRING"},
      {"name": "ipv6", "type": "STRING"},
      {"name": "country", "type": "STRING"},
      {"name": "username", "type": "STRING"},
      {"name": "quest", "type": "STRING"},
      {"name": "score", "type": "INTEGER"},
      {"name": "completed", "type": "BOOLEAN"}
    ]
    
  2. Crie um conector de coletor do BigQuery em um cluster do Connect para transmitir mensagens do tópico para a tabela do BigQuery. Ao configurar o conector, use as seguintes propriedades de amostra, substituindo PROJECT_ID pelo ID do projeto:

    bigQueryPartitionDecorator=false
    connector.class=com.wepay.kafka.connect.bigquery.BigQuerySinkConnector
    defaultDataset=test_dataset
    key.converter=org.apache.kafka.connect.storage.StringConverter
    project=PROJECT_ID
    tasks.max=3
    topics=test-topic
    value.converter=org.apache.kafka.connect.json.JsonConverter
    value.converter.schemas.enable=false
    
  3. Depois que o conector começar a transmitir dados, acesse a página BigQuery no Google Cloud console.

    Acessar o BigQuery

  4. No painel Explorer, expanda o ID do projeto e selecione o conjunto de dados, test_dataset.

  5. Clique no nome da tabela, test-topic.

  6. Clique na guia Visualização para conferir os registros sintéticos transmitidos. Como alternativa, clique em Escrever nova consulta e execute a seguinte consulta SQL:

    SELECT * FROM `PROJECT_ID.DATASET_ID.TABLE_ID` LIMIT 10;
    

    Substitua:

    • PROJECT_ID: ID do projeto
    • DATASET_ID: ID do conjunto de dados, como test_dataset
    • TABLE_ID: ID da tabela, como test-topic
  7. Clique em Executar para visualizar os registros de amostra no painel Resultados da consulta.

    Observação:não use uma consulta SELECT COUNT(*) para verificar os registros. Como o conector usa a API BigQuery Streaming, os dados são gravados inicialmente em um buffer de streaming. Embora os dados fiquem visíveis imediatamente usando SELECT *, pode levar vários minutos para que as contagens de linhas sejam atualizadas.

Limpar

Para evitar cobranças na conta do Google Cloud pelos recursos usados nesta página, siga as etapas abaixo.

  1. Noconsole, acesse a página Jobs do Dataflow. Google Cloud

    Acessar jobs do Dataflow

  2. Clique no nome do job criado para o tópico.

  3. Clique em Interromper.

  4. Selecione Cancelar e clique em Parar job.

  5. Opcional: se você não precisar mais do cluster do Kafka, acesse a página Clusters do Serviço Gerenciado para Apache Kafka , selecione test-cluster e clique em Excluir.

A seguir