JMX(Java Management Extensions)를 사용하여 Kafka 커넥터 모니터링하기

이 항목에서는 JMX(Java Management Extension)를 사용하여 Kafka용 Snowflake 커넥터를 모니터링하는 방법을 설명합니다. Kafka Connect는 Kafka 커넥터에 대한 정보를 제공하도록 사전 구성된 JMX 메트릭을 제공합니다. Kafka용 Snowflake 커넥터는 Kafka 환경에 대한 메트릭을 수집하는 데 사용할 수 있는 여러 MBeans(Managed Beans)를 제공합니다. Prometheus 및 Grafana를 포함한 서드 파티 도구로 이 정보를 로딩할 수 있습니다.

JMX 기능은 커넥터에서 기본적으로 활성화됩니다. JMX를 비활성화하려면 jmx 속성을 false 로 설정하십시오.

중요

Snowpipe 는 Kafka 커넥터 버전 1.6.0 이상을 지원합니다.

Snowpipe Streaming 은 Kafka 커넥터 버전 2.1.2 이상을 지원합니다.

이 항목의 내용:

Kafka 커넥터에서 JMX 구성하기

JMX는 Snowflake Kafka 커넥터에서 기본적으로 활성화됩니다. Kafka에서 JMX를 활성화하려면 다음을 수행하십시오.

  1. Kafka 설치에 연결할 JMX 활성화:

    • 원격 서버에서 실행 중인 Kafka 설치에 JMX를 연결하려면 다음과 같이 Kafka Connect 시작 스크립트에 KAFKA_JMX_OPTS 환경 변수를 설정하십시오.

      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

      여기서:

      • ip_address: Kafka Connect 설치의 IP 주소를 지정합니다.

      • jmx_port: Kafka Connect가 JMX 연결을 수신하는 JMX 포트를 지정합니다.

    • 같은 서버에서 실행 중인 Kafka에 JMX를 연결하려면 다음과 같이 Kafka 시작 스크립트에 JMX_PORT 환경 변수를 설정하십시오.

      export JMX_PORT=<port_number>
      
      Copy

      여기서 port_number 는 Kafka 설치의 JMX 포트입니다.

  2. Kafka 커넥터를 다시 시작합니다.

Snowflake Kafka 커넥터 MBeans(Managed Beans) 사용하기

JMX는 MBeans를 사용해 모니터링할 수 있는 Kafka 내의 오브젝트를 나타냅니다(예: 스레드 수, CPU 부하 등). Snowflake Kafka 커넥터는 커넥터에서 관리하는 오브젝트에 액세스하기 위해 MBeans를 제공합니다. 이러한 MBeans를 사용하여 모니터링 대시보드를 만들 수 있습니다.

Kafka 커넥터 MBean 오브젝트 이름의 일반적인 형식은 다음과 같습니다.

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

여기서:

  • connector=connector_name 은 Kafka 구성 파일에 정의된 커넥터의 이름을 지정합니다.

  • pipe=pipe_name 은 데이터 수집에 사용되는 Snowpipe 오브젝트를 지정합니다. Kafka 커넥터는 각 파티션에 대한 Snowpipe 오브젝트를 정의합니다.

  • category=category_name 은 MBean의 카테고리를 지정합니다. 각 카테고리에는 메트릭 세트가 포함됩니다.

  • name=metric_name 은 메트릭의 이름을 지정합니다.

다음 섹션에는 Snowflake Kafka 커넥터에서 제공하는 카테고리와 메트릭의 이름이 나열되어 있습니다.

카테고리: file-counts

이 메트릭 카테고리는 Snowpipe 기반 Kafka 커넥터에만 적용되며 Snowpipe Streaming에는 적용되지 않습니다.

메트릭 이름

데이터 타입

설명

file-count-on-stage

long

현재 내부 스테이지에 있는 파일의 수. 이 값은 파일 제거 프로세스가 시작된 후에 감소합니다. 이 속성은 현재 내부 스테이지에 있는 파일 수의 추정치를 제공합니다.

file-count-on-ingestion

long

insertFiles REST API를 호출하여 확인한 Snowpipe의 파일 수. 현재 단일 REST API 요청을 통해 전송되는 파일 수의 제한은 5k입니다. 파일 수와 REST API 호출 수 사이에는 일대일 관계가 없습니다. insertFiles REST API에 대한 호출 수가 이 값보다 클 수 있습니다. 이 속성의 값은 수집할 파일이 더 이상 없을 경우에 0 입니다.

file-count-table-stage-ingestion-fail

long

수집에 실패한 테이블 스테이지의 파일 수.

file-count-table-stage-broken-record

long

손상된 오프셋에 해당하는 테이블 스테이지에 있는 파일 수.

file-count-purged

long

수집 상태를 확인한 후 내부 스테이지에서 제거한 파일 수.

카테고리: offsets

offsetPersistedInSnowflakelatestConsumerOffset 메트릭은 Snowpipe Streaming 기반 Kafka 커넥터에 적용됩니다. 이 카테고리의 나머지 부분은 Snowpipe 기반 Kafka 커넥터에만 적용됩니다.

메트릭 이름

데이터 타입

설명

processed-offset

long

메모리 내 버퍼로 전송된 가장 최근 레코드를 참조하는 오프셋.

flushed-offset

long

버퍼 임계값에 도달한 후 내부 스테이지에서 플러시되는 레코드를 참조하는 오프셋. 버퍼는 시간, 레코드 수 또는 크기를 기준으로 임계값에 도달할 수 있습니다.

committed-offset

long

사전 커밋 API가 호출되고 호출된 Snowpipe insertFiles REST API를 호출한 레코드를 참조하는 오프셋.

purged-offset

long

내부 스테이지에서 제거되는 레코드를 참조하는 오프셋. 이 숫자는 내부 스테이지에서 제거된 가장 최근 오프셋의 값입니다.

offsetPersistedInSnowflake

long

Snowflake에 유지되는 최신 데이터가 있는 레코드를 참조하는 오프셋입니다. 오프셋은 insertRows API 호출에 의해 결정됩니다.

latestConsumerOffset

long

메모리 내 버퍼로 전송된 가장 최근 레코드를 참조하는 오프셋. 채널 오프셋 토큰이 NULL 인 경우 오프셋을 다시 보내는 데만 사용됩니다.

카테고리: buffer

이 메트릭 카테고리는 Snowpipe 기반 Kafka 커넥터에만 사용할 수 있습니다.

메트릭 이름

데이터 타입

설명

buffer-size-bytes

long

버퍼 임계값을 기준으로, 내부 스테이지로 플러시되기 전에 버퍼 크기(바이트)를 반환합니다. 이 값은 내부 스테이지로 로딩 시 파일이 압축되므로 파일 크기와 같지 않을 수 있습니다.

buffer-record-count

long

버퍼 임계값을 기준으로, 버퍼가 내부 스테이지로 플러시되기 전에 메모리에 버퍼링된 Kafka 레코드 수를 반환합니다.

카테고리: latencies

이 메트릭 카테고리는 Snowpipe 기반 Kafka 커넥터에만 사용할 수 있습니다.

메트릭 이름

데이터 타입

설명

kafka-lag

long

레코드를 Kafka에 넣은 시간과 레코드를 Kafka Connect로 가져온 시간 사이의 차이(초). 이 값이 레코드 내부에 설정되지 않은 경우에는 null일 수 있습니다.

commit-lag

long

파일이 내부 스테이지에 업로드된 시간과 insertFiles REST API가 호출된 시간 사이의 차이(초).

ingestion-lag

long

파일이 내부 스테이지에 업로드된 시간과 파일 수집 상태가 insertReport 또는 loadHistoryScan API를 통해 보고된 시간 사이의 차이(초).