# 네트워크 프로세서 유휴율
kafka.network:type=SocketServer,name=NetworkProcessorAvgIdlePercent
# 요청 핸들러 유휴율
kafka.server:type=KafkaRequestHandlerPool,name=RequestHandlerAvgIdlePercent
# 권장: 유휴율 > 30%
로그 메트릭
# 로그 플러시 레이트
kafka.log:type=LogFlushStats,name=LogFlushRateAndTimeMs
# 로그 세그먼트 수
kafka.log:type=Log,name=NumLogSegments,topic=<topic>,partition=<partition>
# 로그 크기
kafka.log:type=Log,name=Size,topic=<topic>,partition=<partition>
Producer 메트릭
핵심 메트릭
메트릭
MBean
설명
record-send-rate
kafka.producer:type=producer-metrics,client-id=*
초당 전송 레코드 수
record-send-total
kafka.producer:type=producer-metrics,client-id=*
총 전송 레코드 수
byte-rate
kafka.producer:type=producer-metrics,client-id=*
초당 전송 바이트
record-error-rate
kafka.producer:type=producer-metrics,client-id=*
초당 에러 레코드 수
record-retry-rate
kafka.producer:type=producer-metrics,client-id=*
초당 재시도 수
지연 시간 메트릭
# 레코드 전송 지연 (Producer 내부)
kafka.producer:type=producer-metrics,client-id=*
├── record-queue-time-avg # 배치 대기 시간
├── record-queue-time-max # 최대 대기 시간
├── request-latency-avg # 평균 요청 지연
└── request-latency-max # 최대 요청 지연
배치 메트릭
kafka.producer:type=producer-metrics,client-id=*
├── batch-size-avg # 평균 배치 크기
├── batch-size-max # 최대 배치 크기
├── records-per-request-avg # 요청당 평균 레코드 수
└── compression-rate-avg # 압축률
버퍼 메트릭
kafka.producer:type=producer-metrics,client-id=*
├── buffer-total-bytes # 총 버퍼 크기
├── buffer-available-bytes # 사용 가능 버퍼
├── bufferpool-wait-time-ns # 버퍼 대기 시간
└── waiting-threads # 대기 중인 스레드 수
스로틀링 메트릭
kafka.producer:type=producer-metrics,client-id=*
├── produce-throttle-time-avg # 평균 스로틀 시간
└── produce-throttle-time-max # 최대 스로틀 시간
# 0보다 크면 Quota 제한 중
# 파티션별 Lag
kafka.consumer:type=consumer-fetch-manager-metrics,
client-id=*,topic=*,partition=*
├── records-lag # 현재 Lag
├── records-lag-avg # 평균 Lag
└── records-lag-max # 최대 Lag
# Consumer Group 수준 Lag (Broker)
kafka.server:type=FetcherLagMetrics,name=ConsumerLag,
clientId=*,topic=*,partition=*
Fetch 메트릭
kafka.consumer:type=consumer-fetch-manager-metrics,client-id=*
├── fetch-latency-avg # 평균 Fetch 지연
├── fetch-latency-max # 최대 Fetch 지연
├── fetch-rate # Fetch 요청 비율
├── fetch-size-avg # 평균 Fetch 크기
└── fetch-throttle-time-avg # 스로틀 시간
Coordinator 메트릭
kafka.consumer:type=consumer-coordinator-metrics,client-id=*
├── assigned-partitions # 할당된 파티션 수
├── commit-latency-avg # 평균 커밋 지연
├── commit-latency-max # 최대 커밋 지연
├── commit-rate # 커밋 비율
├── join-rate # Join 요청 비율
├── sync-rate # Sync 요청 비율
├── heartbeat-rate # Heartbeat 비율
└── last-rebalance-seconds-ago # 마지막 Rebalance 경과 시간
Rebalance 메트릭
kafka.consumer:type=consumer-coordinator-metrics,client-id=*
├── rebalance-latency-avg # 평균 Rebalance 시간
├── rebalance-latency-max # 최대 Rebalance 시간
├── rebalance-latency-total # 총 Rebalance 시간
├── rebalance-rate-per-hour # 시간당 Rebalance 횟수
└── failed-rebalance-rate-per-hour # 실패한 Rebalance
알림 설정 권장값
Critical (즉시 대응)
alerts: - name: OfflinePartitions condition: OfflinePartitionsCount > 0 severity: critical action: 즉시 조사 필요 - name: NoActiveController condition: sum(ActiveControllerCount) != 1 severity: critical action: 클러스터 상태 확인 - name: ConsumerLagCritical condition: records-lag-max > 100000 severity: critical action: Consumer 성능 점검
Warning (주의 필요)
alerts: - name: UnderReplicatedPartitions condition: UnderReplicatedPartitions > 0 for 5m severity: warning action: 복제 지연 확인 - name: HighRequestLatency condition: TotalTimeMs_99p > 1000 severity: warning action: 요청 처리 성능 점검 - name: LowIdlePercent condition: RequestHandlerAvgIdlePercent < 0.3 severity: warning action: Broker 리소스 확인
Info (모니터링)
alerts: - name: HighProducerRetryRate condition: record-retry-rate > 0.1 severity: info action: 네트워크/Broker 상태 확인 - name: FrequentRebalance condition: rebalance-rate-per-hour > 5 severity: info action: Consumer 안정성 검토
메트릭 수집 예제
JMX 쿼리
# jmxterm 사용java -jar jmxterm.jar -l localhost:9999# 특정 메트릭 조회get -s -b kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec Count# 모든 Broker 메트릭 조회beans -d kafka.server
댓글 (0)