Snowflake Connector for Kafka をモニターする

このトピックでは、|KAFKAOFHP|をモニターする方法について説明します。

JMXのモニター

コネクタは、Java Management Extensions(JMX)MBeansを介してメトリックを公開しま。JMXはデフォルトで有効になっています( jmx=true )。

JMXのモニターを使用するには、Kafka ConnectワーカーJVMを以下のシステムプロパティで構成してください。

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

その後、JMX互換の監視ツール(例えば、JConsoleやJMXエクスポーターを備えたPrometheusなど)を使用して、コネクタのメトリックを表示できます。

MBeanのドメインと命名

コネクタは、以下のObjectNameパターンを使用して、ドメイン snowflake.kafka.connector の下にMBeansを登録します。

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

ここで、<scope>task (タスクレベルのメトリック)または channel (パーティションごとのチャネルメトリック)のいずれかです。

タスクレベルのメトリック

これらのメトリックはコネクタタスクにスコープされ、スループットとライフサイクル操作の包括的な可視性を提供します。

メトリック

説明

put-records

メーター

put() 経由でタスクが受信した記録数。レート属性(1分、5分、15分)を使用して、インジェスチョンスループットをモニターします。

put-duration

タイマー

put() の各呼び出しの期間。値が高い場合は、コネクタのボトルネックまたは下流のバックプレッシャーを示している可能性があります。

precommit-duration

タイマー

オフセット検証を含む事前コミット操作の期間。

assigned-partitions

ゲージ

このタスクに割り当てられているKafkaパーティションの現在の数。タスク間でのパーティション配分のバランスを確認するのに役立ちます。

channel-open-duration

タイマー

Snowpipe Streamingのチャネルを開く時間。値が高い場合は接続の問題を示している可能性があります。

channel-open-count

カウンター

このタスクによって開かれたチャネルの総数。

backpressure-rewind-count

カウンター

下流のバックプレッシャーにより、コネクタを再ロール化する必要があった回数。ゼロ以外の値が継続的に表示される場合は、コネクタがSnowflakeが取り込める速度よりも速くデータを生成していることを示しています。

チャネルレベルのメトリック

これらのメトリックは特定のKafkaトピックパーティションチャネルに限定されており、インジェスチョンラグとデータの耐久性をモニターするために不可欠です。

メトリック

説明

processed-offset

ゲージ

コネクタによってバッファーされた最新のオフセット。これは、このパーティションのKafkaから受信した最新の記録です。

persisted-in-snowflake-offset

ゲージ

Snowflakeで永続的にコミットされたことが確認された最新のオフセット。これを processed-offset と比較してインジェスチョンラグを測定します。

latest-consumer-offset

ゲージ

このパーティションのKafkaコンシューマーから利用可能な最新のオフセット。persisted-in-snowflake-offset と比較して完全なエンドツーエンドのラグを確認します。

channel-recovery-count

ゲージ

チャネル回復イベントの数。値が高いか増加している場合は、Snowpipe Streamingチャネルが不安定であることを示します。

アラートの主要メトリック

実稼働環境のデプロイでは、以下のアラートを検討してください。

  • インジェスチョンラグlatest-consumer-offset から persisted-in-snowflake-offset を引きます。ギャップが大きくなっている場合は、コネクタが遅れていることを示します。

  • バックプレッシャーbackpressure-rewind-count が時間とともに増加しています。

  • チャネルの回復channel-recovery-count が増加している場合、接続または認証の問題を示している可能性があります。

  • クエリ期間put-duration の平均またはp99が許容しきい値を超えています。

MDCログ

MDC(マッピング診断コンテキスト)ログを有効にすると、ログメッセージにコネクタコンテキストが付加されます。これは、複数のコネクタインスタンスを実行しており、ログエントリを関連付ける必要がある場合に便利です。

enable.mdc.logging=true

インジェスチョンレイテンシの推定

RECORD_METADATASnowflakeConnectorPushTime フィールドには、コネクタがインジェスチョンのために記録をバッファーした時のタイムスタンプが記録されます。この値を使用して、Snowflakeで記録がクエリ可能になる時間と比較することで、エンドツーエンドのインジェスチョンレイテンシを推定できます。

例:

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;

Snowpipe Streamingインジェスチョンのモニターについて、詳細は Snowpipe Streamingの主な概念 をご参照ください。