Search

Kafka Connect 101 - 2?

Monitoring Kafka Connect

confluent 자체적으로 제공하는 모니터링 방법과 외부 연동을 통한 모니터링 방법을 알아 본다.

컨플루언트 웹 콘솔

Environments > [env] > [cluster] > Connectors > [connector] 에서 개요를 확인할 수 있다. 커넥터 태스크의 상태나 처리 된 메시지 수, 스루풋 등을 확인할 수 있다. 관련한 스트림 계보(stream lineage)도 확인할 수 있다.
위 커넥터 개요에서 explore stream lineage로 들어 올 수도 있지만, Environments > [env] > [cluster] > Stream Lineages 로 들어 올 수도 있다. 스트림, 말 그대로 이벤트의 흐름을 gui로 보여주고 각 요소를 클릭하여 각각의 대시보드로 연결해준다. 예를 들어 토픽을 눌러 토픽 대시보드로 가거나 이 경우 레코드를 생성하는 커넥터라 프로듀서의 대시보드로 이동할 수 있다.

다른 모니터링 툴과 통합

데이터독이나 그라파나 클라우드와 통합을 제공한다. 다이나트레이스는 API를 통한 통합을 제공한다.
프로메테우스 서버에 엔드포인트를 주어 긁어갈 수 있게(scrape) 할 수 있다.
컨플루언트가 아닌 self-hosted 카프카 커넥트를 사용한다면, JMX나 REST API를 통해 모니터링 메트릭을 제공한다.

Errors and Dead Letter Queues

컨플루언트에서 제공하는 커넥터 에러 처리 패턴은 다음과 같다:
fail fast(default)
silently ignore
dead letter queue
예를 들어 커넥트의 컨버터가 잘못 구성되는 경우 문제가 생길 수 있다. 직렬화는 json으로 했지만 역직렬화는 아브로로 하는 경우 또는 소스 토픽의 메시지 포맷을 json, 아브로 등으로 다양한데 컨버터는 한가지로 고정된 경우이다.
기본적인 동작은 컨버터(커넥터)가 처리할 수 없는 메시지에서 태스크를 실패시키는 것이다. 문제가 있는 메시지 이후론 더 이상 처리가 진행되지 않고 수정 후 커넥터를 재개할 수 있다.
dead letter queue(dlq)를 사용하면 실패한 메시지만 별도의 토픽(큐)로 보내고 다음 메시지를 처리할 수 있다. 그래서 커넥터의 태스크는 계속 실행되고 dlq엔 문제의 원인과 해당 메시지가 쌓인다.
dlq는 문제 있는 메시지를 재처리하기 위함이므로, 단일 컨버터에 여러 포맷의 메시지가 json 메시지에 대해 dlq에서 json 컨버터로 처리하면 된다.

Troubleshooting