나누고 싶은 개발 이야기

Data Engineer로서 기록하고 공유하고 싶은 기술들. 책과 함께 이야기합니다.

Big Data/Kafka

[Kafka] Add connector contexts to Connect worker logs

devidea 2020. 7. 22. 13:55

Kafka Connect(이하 커넥트) 2.3.0 개선사항에 대한 두 번재 글이다. Logging 개선에 대해서 살펴본다.

 

기존 커넥트의 로그는 커넥트에 포함된 작업의 로그들이 구분되지 않고 뒤섞여서 확인하기 쉽지 않았다. 특히 리밸런스 과정이 일어나면 커넥트가 담당하는 파티션들이 변경되는데 로그가 구분이 안되니 어떤 작업이 진행중인지 명확하게 알 수 없었다.

 

KIP-449: Add connector contexts to Connect worker logs을 통해서 커넥트에 포함된 작업들의 로그를 쉽게 분리해서 볼 수 있다.

 

적용하는 방법은 간단하다. 기존 connect log4j 설정의 패턴을 다음과 같이 바꾸면 된다.

# 과거 버전 설정
log4j.appender.stdout.layout.ConversionPattern=[%d] %p %m (%c:%L)%n

# 변경된 설정
log4j.appender.stdout.layout.ConversionPattern=[%d] %p %X{connector.context}%m (%c:%L)%n

 

더보기

참고사항

%d : 로깅 이벤트가 발생한 시간을 출력 ex)포맷은 %d{HH:mm:ss} 같은 형태의 SimpleDateFormat

%p : debug, info, warn, error, fatal 등의 priority 출력

%m : 로그내용 출력

%c : 카테고리 출력 ex)카테고리가 a.b.c 처럼 되어있다면 %c{2}는 b.c 출력

%L : 로깅이 발생한 caller의 라인수 출력

%n : 플랫폼 종속적인 개행문자 출력

 

작업별 내용을 변경해서 표시해 주는 패턴은 다음 설정으로 이루어진다.

%X{connector.context}

 

그럼 로그를 실제로 다음과 같은 포맷으로 기록된다.

[<connectorName>|<scope>]<sp>

connectorName: 커넥터 이름, sp: 후행공간이다.

 

scope 항목은 좀 더 자세히 살펴보자.

  • task-<n>: 0부터 시작하는 번호가 붙여진 작업.

  • task-<n>|offset : 번호가 붙여진 작업에 대한 source 오프셋 커밋.

  • worker : connector 인스턴스 생성 및 사용

로그 기록 내용을 대략적으로 알 수 있도록 KIP-449에 예로 나타낸 로그의 일부를 가져왔다.

[2019-04-02 17:01:38,314] INFO [local-file-source|worker] ConnectorConfig values:
[2019-04-02 17:01:38,315] INFO [local-file-source|worker] Creating connector local-file-source of type FileStreamSource (org.apache.kafka.connect.runtime.Worker:227)
[2019-04-02 17:01:38,317] INFO [local-file-source|worker] Instantiated connector local-file-source with version 2.3.0-SNAPSHOT of type class org.apache.kafka.connect.file.FileStreamSourceConnector (org.apache.kafka.connect.runtime.Worker:230)
...
[2019-04-02 17:01:38,320] INFO [local-file-source|task-0] Creating task local-file-source-0 (org.apache.kafka.connect.runtime.Worker:395)
[2019-04-02 17:01:38,320] INFO [local-file-source|task-0] ConnectorConfig values:
[2019-04-02 17:01:38,355] INFO [local-file-source|task-0] Kafka commitId: da2bddb1331e740c (org.apache.kafka.common.utils.AppInfoParser:110)
...
[2019-04-02 17:01:40,901] INFO [local-file-source|task-0|offsets] WorkerSourceTask{id=local-file-source-0} Committing offsets (org.apache.kafka.connect.runtime.WorkerSourceTask:398)

Connector의 이름과 task 번호를 구분해서 로그를 기록했기 때문에 추후 특정 Connector에 대한 로그만 뽑아서 확인한다거나 리밸런싱 동작 과정 등도 추론해 볼 수 있다.

 

 

관련 문서

 

반응형