Surveiller le Snowflake Connector for Kafka

Cette rubrique explique comment surveiller le Snowflake Connector for Kafka.

Surveillance JMX

Le connecteur expose les métriques via Java Management Extensions (JMX) MBeans. JMX est activé par défaut (jmx=true).

Pour utiliser la surveillance JMX, configurez la JVM de votre nœud de travail Kafka Connect à l’aide des propriétés système suivantes :

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

Vous pouvez alors utiliser n’importe quel outil de surveillance compatible avec JMX (par exemple, JConsole ou Prometheus avec une exportation JMX) pour afficher les métriques du connecteur.

Domaine MBean et nommage

Le connecteur enregistre MBeans sous le domaine snowflake.kafka.connector avec le modèle ObjectName suivant :

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

<scope> est soit task (métriques au niveau des tâches), soit channel (métriques des canaux par partition).

Métriques au niveau des tâches

Ces métriques sont rattachées à une tâche de connecteur et fournissent une visibilité globale sur le débit et le cycle de vie des opérations.

Métrique

Type

Description

put-records

Compteur

Nombre d’enregistrements reçus par la tâche via put(). Utilisez les attributs de débit (1 minute, 5 minutes, 15 minutes) pour surveiller le débit d’ingestion.

put-duration

Minuterie

Durée de chaque appel put(). Des valeurs élevées peuvent indiquer des goulots d’étranglement du connecteur ou une contre-pression en aval.

precommit-duration

Minuterie

Durée des opérations de pré-validation, qui incluent la vérification du décalage.

assigned-partitions

Jauge

Nombre actuel de partitions Kafka attribuées à cette tâche. Utile pour vérifier la distribution équilibrée des partitions entre les tâches.

channel-open-duration

Minuterie

Délai d’ouverture des canaux Snowpipe Streaming. Des valeurs élevées peuvent indiquer des problèmes de connexion.

channel-open-count

Compteur

Nombre total de canaux ouverts par cette tâche.

backpressure-rewind-count

Compteur

Nombre de fois où le connecteur a dû revenir en arrière en raison d’une contre-pression en aval. Des valeurs continues non nulles indiquent que le connecteur produit plus rapidement que Snowflake ne peut ingérer.

Métriques au niveau du canal

Ces métriques portent sur un canal spécifique de sujet-partition Kafka et sont essentielles pour surveiller le décalage d’ingestion et la pérennité des données.

Métrique

Type

Description

processed-offset

Jauge

Le décalage le plus récent mis en mémoire tampon par le connecteur. Il s’agit du dernier enregistrement reçu de Kafka pour cette partition.

persisted-in-snowflake-offset

Jauge

Le dernier décalage dont la validation durable a été confirmée dans Snowflake. Comparez-le à processed-offset pour mesurer le temps de latence d’ingestion.

latest-consumer-offset

Jauge

Le dernier décalage disponible par le consommateur Kafka pour cette partition. Comparez à persisted-in-snowflake-offset pour voir l’intégralité de la latence de bout en bout.

channel-recovery-count

Jauge

Nombre d’événements de récupération de canaux. Une valeur élevée ou en hausse indique une instabilité sur le canal Snowpipe Streaming.

Métriques clés pour les alertes

Pour les déploiements de production, envisagez de lancer des alertes sur les éléments suivants :

  • Décalage d’ingestion : latest-consumer-offset moins persisted-in-snowflake-offset. Un écart croissant indique que le connecteur est en retard.

  • Contre-pression : backpressure-rewind-count augmentant avec le temps.

  • Récupération du canal : channel-recovery-count en augmentation, ce qui peut indiquer des problèmes de connexion ou d’authentification.

  • Durée de mise : put-duration moyenne ou p99 dépassant votre seuil acceptable.

Journalisation MDC

Activez la journalisation MDC (Mapped Diagnostic Context) pour ajouter le contexte du connecteur au début des messages de journal. Ceci est utile lorsque vous exécutez plusieurs instances de connecteur et que vous devez corréler les entrées de journal :

enable.mdc.logging=true

Estimation de la latence d’ingestion

Le champ SnowflakeConnectorPushTime dans RECORD_METADATA enregistre l’horodatage lorsque le connecteur a mis en mémoire tampon un enregistrement pour l’ingestion. Vous pouvez utiliser cette valeur pour estimer la latence d’ingestion de bout en bout en la comparant au moment où l’enregistrement devient interrogeable dans Snowflake.

Par exemple :

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;

Pour plus d’informations sur la surveillance de l’ingestion de Snowpipe Streaming, voir Concepts clés Snowpipe Streaming.