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 컨버터로 처리하면 된다.