<aside>
💡
요약
MDC 기반 Kafka Consumer 컨텍스트 추적 → Sentry/로그 연동 → 운영 효율화
ErrorHandler 커스텀 → root cause 중심의 알림/분석 체계
Spring Kafka는 실제 Poll은 항상 배치(ConsumerRecords) 단위로 동작
</aside>
개요
- Kafka Consumer에서 메시지 처리 중 예외 발생 시,
Sentry에 정확하고 식별 가능한 오류 정보와 Kafka Topic, Partition, Offset 등 컨텍스트를 함께 전파.
- MDC(Mapped Diagnostic Context)를 적극 활용해 Sentry 운영 알림에서
문제가 발생한 메시지의 정확한 위치와 원인을 빠르게 추적 가능하도록 개선.
주요 개선 포인트 및 목적
1. MDC(Context) 정보 관리
- Kafka Interceptor를 이용해 매 메시지 처리 직전 MDC에 Topic/Partition/Offset/Key 적재
- 로그/에러 발생 시 MDC가 Sentry(Logback Appender), Slack 으로 자동 전파
운영 장애 시 원인 메시지의 추적성 강화.
2. Sentry 트래킹 품질 개선
- Spring Kafka의 기본 예외 포장(
ListenerExecutionFailedException
)으로 인해 Sentry에서 이슈가 합쳐지는 문제를 해결.
- Sentry 핑거프린트를 Topic/Partition/Offset으로 커스터마이즈하여 개별 장애 식별 가능.
3. 에러핸들러 개선
DefaultErrorHandler
를 상속한 커스텀 핸들러 도입.
- 단건/배치 리스너 구분 없이 내부적으로 모두 배치 기반(
handleRemaining
) 처리가 이뤄지는 Kafka 구조를 반영해 두 메서드 모두 override.
- 장애 발생 시 log.error로 root cause 남김 → Logback Sentry Appender가 이 정보를 기반으로 Sentry 알림 전송.