Monitoramento do Snowflake Connector for Kafka

Este tópico descreve como monitorar o Snowflake Connector for Kafka.

Monitoramento JMX

O conector expõe métricas por meio de MBeans Java Management Extensions (JMX). Por padrão, o JMX está habilitado (jmx=true).

Para usar o monitoramento JMX, configure a JVM do worker Kafka Connect com as seguintes propriedades de sistema:

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=<port>
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false

Depois disso, você pode usar qualquer ferramenta de monitoramento compatível com JMX (por exemplo, JConsole ou Prometheus com um exportador JMX) para visualizar as métricas do conector.

Domínio e nomenclatura de MBean

O conector registra MBeans no domínio snowflake.kafka.connector com o seguinte padrão ObjectName:

snowflake.kafka.connector:connector=<connectorName>,<scope>=<scopeValue>,category=<category>,name=<metricName>

Em que <scope> é task (métricas no nível da tarefa) ou channel (métricas de canal por partição).

Métricas no nível da tarefa

Essas métricas têm como escopo uma tarefa do conector e oferecem visibilidade agregada das operações de taxa de transferência e de ciclo de vida.

Métrica

Tipo

Descrição

put-records

Registrador

Número de registros recebidos pela tarefa via put(). Use os atributos de taxa (1 minuto, 5 minutos, 15 minutos) para monitorar a taxa de transferência da ingestão.

put-duration

Temporizador

Duração de cada chamada put(). Valores altos podem indicar gargalos no conector ou backpressure downstream.

precommit-duration

Temporizador

Duração das operações de pré-confirmação, que incluem a verificação de deslocamento.

assigned-partitions

Medidor

Número atual de partições do Kafka atribuídas a esta tarefa. Útil para verificar a distribuição balanceada de partições entre tarefas.

channel-open-duration

Temporizador

Tempo para abrir os canais do Snowpipe Streaming. Valores elevados podem indicar problemas de conexão.

channel-open-count

Contador

Número total de canais abertos por esta tarefa.

backpressure-rewind-count

Contador

Número de vezes que o conector teve que retroceder devido ao backpressure downstream. Valores sempre diferentes de zero indicam que o conector está produzindo mais rapidamente do que o Snowflake pode ingerir.

Métricas no nível do canal

Essas métricas têm como escopo um canal de partição de tópico específico do Kafka e são essenciais para monitorar o atraso na ingestão e a durabilidade dos dados.

Métrica

Tipo

Descrição

processed-offset

Medidor

O deslocamento mais recente armazenado em buffer pelo conector. É o último registro recebido do Kafka para esta partição.

persisted-in-snowflake-offset

Medidor

O último deslocamento confirmado como continuamente comprometido no Snowflake. Compare-o com processed-offset para medir o atraso na ingestão.

latest-consumer-offset

Medidor

O último deslocamento disponível do consumidor Kafka para esta partição. Compare com persisted-in-snowflake-offset para ver o atraso completo.

channel-recovery-count

Medidor

Número de eventos de recuperação de canal. Um valor alto ou crescente indica instabilidade no canal do Snowpipe Streaming.

Principais métricas para alertas

Para implantações de produção, considere alertar sobre o seguinte:

  • Atraso na ingestão: latest-consumer-offset menos persisted-in-snowflake-offset. Uma lacuna crescente indica que o conector está atrasado.

  • Backpressure: backpressure-rewind-count aumentando ao longo do tempo.

  • Recuperação de canal: channel-recovery-count aumentando, o que pode indicar problemas de conectividade ou autenticação.

  • Duração de put: put-duration médio ou percentil 99 que excede seu limite aceitável.

Registro de MDC

Habilite o registro de MDC (Mapped Diagnostic Context) para preceder o contexto do conector às mensagens de log. Isso é útil ao executar várias instâncias do conector, e você precisa correlacionar as entradas de log:

enable.mdc.logging=true

Estimativa da latência de ingestão

O campo SnowflakeConnectorPushTime em RECORD_METADATA registra o carimbo de data/hora de quando o conector armazenou em buffer um registro para ingestão. É possível usar esse valor para estimar a latência de ingestão completa comparando-o com o momento em que o registro se torna consultável no Snowflake.

Por exemplo:

SELECT
  RECORD_METADATA:topic::STRING AS topic,
  RECORD_METADATA:partition::NUMBER AS partition,
  RECORD_METADATA:offset::NUMBER AS offset,
  TIMESTAMPDIFF('millisecond',
    TO_TIMESTAMP(RECORD_METADATA:SnowflakeConnectorPushTime::BIGINT, 3),
    CONVERT_TIMEZONE('UTC', CURRENT_TIMESTAMP())
  ) AS latency_ms
FROM my_table
ORDER BY latency_ms DESC
LIMIT 10;

Para obter mais informações sobre o monitoramento de ingestão do Snowpipe Streaming, consulte Conceitos-chave do Snowpipe Streaming.