Monitoramento do conector Kafka usando Java Management Extensions (JMX)

Este tópico descreve como usar Java Management Extensions (JMX) para monitorar o conector Snowflake para Kafka. O Kafka Connect fornece métricas JMX pré-configuradas que oferecem informações sobre o conector Kafka. O conector Snowflake para Kafka fornece vários Managed Beans (MBeans) que você pode usar para ingerir métricas sobre o ambiente Kafka. Você pode carregar essas informações em ferramentas de terceiros, entre elas Prometheus e Grafana.

O recurso JMX está habilitado no conector por padrão. Para desativar o JMX, defina a propriedade jmx como false.

Importante

Snowpipe oferece suporte à versão do conector Kafka 1.6.0 e posterior.

Snowpipe Streaming oferece suporte à versão do conector Kafka 2.1.0 e posterior.

Neste tópico:

Configuração do JMX no conector Kafka

O JMX fica ativado por padrão no conector Snowflake para Kafka. Para habilitar o JMX no Kafka, execute o seguinte:

  1. Habilite o JMX para se conectar à sua instalação do Kafka:

    • Para realizar conexões JMX a uma instalação do Kafka rodando em um servidor remoto, defina a variável de ambiente KAFKA_JMX_OPTS em seu script de inicialização do Kafka Connect:

      export KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote=true
          -Dcom.sun.management.jmxremote.authenticate=false
          -Dcom.sun.management.jmxremote.ssl=false
          -Djava.rmi.server.hostname=<ip_address>
          -Dcom.sun.management.jmxremote.port=<jmx_port>"
      
      Copy

      Onde:

      • ip_address: especifica o endereço IP da sua instalação do Kafka Connect.

      • jmx_port: especifica a porta JMX onde o Kafka Connect ouve as conexões JMX.

    • Para realizar conexões JMX com o Kafka rodando no mesmo servidor, defina a variável de ambiente JMX_PORT em seu script de inicialização do Kafka:

      export JMX_PORT=<port_number>
      
      Copy

      Onde port_number é a porta JMX da sua instalação do Kafka.

  2. Reinicie o conector Kafka.

Como usar Managed Beans (MBeans) no conector Snowflake para Kafka

O JMX usa MBeans para representar objetos que podem ser monitorados no Kafka (por exemplo, contagem de threads, carga de cpu, etc.). O conector Snowflake para Kafka fornece MBeans para acessar objetos gerenciados pelo conector. Você pode usar esses MBeans para criar painéis de monitoramento.

O formato geral do MBean do conector Kafka é o nome do objeto:

snowflake.kafka.connector:connector=connector_name,pipe=pipe_name,category=category_name,name=metric_name

Onde:

  • connector=connector_name especifica o nome do conector definido no arquivo de configuração do Kafka.

  • pipe=pipe_name especifica o objeto Snowpipe utilizado para ingerir dados. O conector Kafka define os objetos Snowpipe para cada partição.

  • category=category_name especifica a categoria do MBean. Cada categoria contém um conjunto de métricas.

  • name=metric_name especifica o nome da métrica.

As seções seguintes listam os nomes das categorias e métricas fornecidas pelo conector Snowflake para Kafka.

Categoria: file-counts

Nome da métrica

Tipo de dados

Descrição

file-count-on-stage

long

O número de arquivos em um estágio interno atualmente. Este valor é determinado após o início do processo de limpeza dos arquivos. Esta propriedade fornece uma estimativa de quantos arquivos estão em um estágio interno atualmente.

file-count-on-ingestion

long

O número de arquivos no Snowpipe, determinado chamando a API REST insertFiles. Há atualmente uma limitação de 5k para arquivos enviados através de uma única solicitação da API REST. Não há uma relação de um para um entre o número de arquivos e o número de chamadas da API REST. O número de chamadas insertFiles da API REST pode ser maior do que esse valor. Se não houver mais arquivos a serem ingeridos, o valor dessa propriedade é 0.

file-count-table-stage-ingestion-fail

long

O número de arquivos no estágio da tabela que falharam na ingestão.

file-count-table-stage-broken-record

long

O número de arquivos presentes na tabela de estágio que corresponde a um offset quebrado.

file-count-purged

long

O número de arquivos removidos do estágio interno depois da determinação do status de ingestão.

Categoria: offsets

Nome da métrica

Tipo de dados

Descrição

processed-offset

long

Um offset referente ao registro mais recente enviado para o buffer de memória.

flushed-offset

long

Um offset referente a um registro que está sendo esvaziado em um estágio interno depois que o limite do buffer foi atingido. O buffer pode atingir seu limite por tempo, número de registros ou tamanho.

committed-offset

long

Um offset referente a um registro que teve uma API pré-confirmada chamada e chamou o insertFiles da API REST do Snowpipe.

purged-offset

long

Um offset referente a um registro que está sendo eliminado do estágio interno. Este número é o valor o maior offset recente que foi eliminado do estágio interno.

Categoria: buffer

Nome da métrica

Tipo de dados

Descrição

buffer-size-bytes

long

Com base nos limites do buffer, retorna o tamanho do buffer (em bytes) antes de ser esvaziado para um estágio interno. Este valor pode não ser igual ao tamanho do arquivo, uma vez que os arquivos são compactados ao serem carregados em um estágio interno.

buffer-record-count

long

Com base nos limites do buffer, retorna o número de registros do Kafka armazenados na memória antes que o buffer seja esvaziado para um estágio interno.

Categoria: latencies

Nome da métrica

Tipo de dados

Descrição

kafka-lag

long

A diferença (em segundos) entre o momento em que o registro é colocado no Kafka e o momento em que o registro é obtido no Kafka Connect. Note que este valor pode ser nulo se o valor não tiver sido estabelecido dentro de um registro.

commit-lag

long

A diferença (em segundos) entre o momento em que o arquivo é carregado em um estágio interno e o momento em que o insertFiles da API REST é chamado.

ingestion-lag

long

A diferença (em segundos) entre o momento em que um arquivo é carregado m um estágio interno e o momento em que o status de ingestão do arquivo é relatado através da API insertReport ou loadHistoryScan.