Kafka 이벤트 리스너
Kafka 이벤트 리스너 (Kafka event listener)
Kafka 이벤트 리스너 플러그인은 쿼리 이벤트를 외부의 Kafka 호환 시스템으로 스트리밍해 주는 기능이에요.
출처: 문서
본문
Kafka 이벤트 리스너는 쿼리 이벤트를 외부의 Kafka 호환 시스템으로 스트리밍해요. Kafka 토픽에 저장된 쿼리 히스토리는 Kafka 커넥터를 이용해 Trino 카탈로그를 통해서도 조회할 수 있고, 데이터를 처리·저장하는 여러 다운스트림 시스템에서도 직접 접근할 수 있어요.
배경 (Rationale)
이 이벤트 리스너는 Trino 클러스터의 쿼리 히스토리를 저장하기 위한 첫 단계예요. 쿼리 이벤트는 CPU·메모리 사용 메트릭, 특정 컬럼 수준까지 내려간 접근 데이터, 쿼리 처리에 관한 메타데이터를 제공해 줘요.
수집 시스템을 Trino와 분리해 실행하면 성능 영향이 줄어들고, 클라이언트를 대상으로 하지 않는 변경으로 인한 다운타임도 피할 수 있어요.
요구사항 (Requirements)
다음 단계를 수행해야 해요:
- Trino에서 네트워크로 접근 가능한 Kafka 서비스를 준비하세요.
- 이벤트 리스너 속성 파일에서
kafka-event-listener.broker-endpoints를 서비스의 URI로 설정하세요. - 설정 섹션에 자세히 나온 대로 보낼 이벤트를 지정하세요.
설정 (Configuration)
Kafka 이벤트 리스너를 설정하려면 etc에 kafka-event-listener.properties라는 이벤트 리스너 속성 파일을 만들고, 최소 요구 설정의 예시로 다음 내용을 넣어 주세요:
event-listener.name=kafka
kafka-event-listener.broker-endpoints=kafka.example.com:9093
kafka-event-listener.created-event.topic=query_create
kafka-event-listener.completed-event.topic=query_complete
kafka-event-listener.client-id=trino-example
코디네이터의 etc/config.properties에는 이벤트 리스너 설정 파일을 등록해야 해요:
event-listener.config-files=etc/kafka-event-listener.properties,...
Kafka 클라이언트 설정을 별도 리소스 파일로 지정할 수도 있어요:
event-listener.name=kafka
kafka-event-listener.broker-endpoints=kafka.example.com:9093
kafka-event-listener.created-event.topic=query_create
kafka-event-listener.completed-event.topic=query_complete
kafka-event-listener.client-id=trino-example
kafka-event-listener.config.resources=/etc/kafka-configuration.properties
예를 들어 SASL 인증을 쓰는 Kafka라면 /etc/kafka-configuration.properties 파일에 다음처럼 보안 설정을 넣을 수 있어요:
sasl.mechanism=SCRAM-SHA-512
security.protocol=SASL_SSL
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \
username="kafkaclient1" \
password="kafkaclient1-secret";
더 알아보기 (Learn more)
Kafka 토픽을 Trino에서 질의하는 방법이 궁금하다면 Kafka 커넥터 문서를 이어서 읽어 보세요.