Kafka Metrics(broker)

yoon__0_0·2024년 9월 9일
0

수업연관공부

목록 보기
7/7

핵심 모니터링 지표들

Broker

MessagesInPerSec

  • 프로메테우스에서는 kafka_server_brokertopicmetrics_messagesin_total 이걸로 표시됨.
  • 초당 유입되는 메세지 count
  • 많을 수록 처리 성능이 높음

BytesInPerSec, BytesOutPerSec

  • BytesInPerSec : kafka_server_brokertopicmetrics_bytesin_total
  • BytesOutPerSec : kafka_server_brokertopicmetrics_bytesout_total
  • 초당 유입 & 유출되는 byte 으로 많을수록 처리성능이 높음

RequestsPerSec

  • 초당 요청 건수
  • producer : kafka_server_brokertopicmetrics_totalproducerequests_total

TotalTimeMS

  • 하나의 요청을 처리하는데 소요된 전체 시간
  • 구간별로 분할하여 측정할 수 있음.
  • QueueTimeMs, LocalTimeMs, RemoteTimeMs, RemoteTimeMs

요청의 유형

  • request로 구분
  1. Produce : 데이터를 전송하는 요청
  • quantile : 분포를 특정한 백분위수로 나눈 값으로 해당 요청이 완료되는데 걸린 시간 중 중앙값을 의미함.
  • quantile= 0.99 : 상위 1%의 요청시간으로 거의 모든 요청이 얼마나 빨리 처리되었는지 확인할수 있으며, 많이 사용되는 지표이다.
  1. Fetch-consumer : consumer가 데이터를 가져오는 요청
  • Consumer
  1. Fetch-follower : follower가 새로운 데이터를 복제하기 위한 요청

TotalTimeMs구성

  • Queue: 요청 큐에 대기한 시간 => kafka_network_requestmetrics_requestqueuetimems
    • 높은 값은(대기 시간이 길어지는 현상) I/O thread 가 부족하거나 CPU 부하 예상
  • Local: Leader에 의해 처리된 시간(원본) => kafka_network_requestmetrics_localtimems
    • 높은 값은 disk i/o가 낮음을 의미
  • Remote : follower에 의해 처리된 시간 (복제) => kafka_network_requestmetrics_remotetimems
    • 원격 client에서 요청을 기다리는 시간
    • 높은값은 네트워크 연결이 늦어짐
    • fetch 요청에서 이미 값이 높은 것은 가져올 데이터가 많지 않음을 의미 할수 있음.
  • Response 응답을 보낸 시간
    • kafka_network_requestmetrics_responsesendtimems : client 요청에 응답한 시간으로 높은 값은 NW thread 또는 CPU가 부족하거나, NW 부하가 높음을 의미
    • kafka_network_requestmetrics_responsequeuetimems : 요청이 응답 큐에서 대기하는 시간으로 높은 값은 NW thread가 부족함을 의미

TotalTimeMs의 Bottleneck 확인 metrics
1. responsequeuesize

  • kafka_network_requestchannel_responsequeuesize
  • 응답 큐에 쌓여있는 응답 메시지 수
  • 지속적으로 증가한다면 브로커가 클라이언트 요청을 적시에 응답하지 못하고 있음을 알수 있음.
  1. requestqueuesize
  • kafka_network_requestchannel_requestqueuesize
  • 요청 큐의 크기
  • 이상적으로 0에 근접해야함
  • 순간적으로 커질수는 있지만, 지속적으로 큰 값이 오면 정상적인 처리는 아님
  1. networkprocessoravgidlepercent
  • kafka_network_socketserver_networkprocessoravgidlepercent
  • Network thread가 idle 상태인 평균시간
  • 낮을수록 thread가 많은 작업을 하고 있음을 뜻함
  1. requesthandleravgidle_percent
  • kafka_server_kafkarequesthandlerpool_requesthandleravgidle_percent
  • I/O thread가 idle 상태인 평균 시간
  1. logflushrateandtimems
  • kafka_log_logflushstats_logflushrateandtimems
  • kafka log의 page cache의 flush 가 발생하는 주기
  • disk 속도가 느린지, page cache가 잘못 설정되었는지 확인가능

cluster healt check

IsrShrinksPerSec

  • kafka_server_replicamanager_isrshrinks_total
  • ISR이 줄어드는 비율
  • 만약 broker가 중지되면 ISR개수가 줄어들 것

UnderReplicatedPartitions

  • kafka_server_replicamanager_underreplicatedpartitions
  • 항상 0이 되어야함
  • 0보다 크다면, 복제가 제대로 되고 있지 않음을 의미

브로커 측면에서 보는 Consumer

consumerlag

  • kafka_server_fetcherlagmetrics_consumerlag
  • 브로커 측에서 특정 파티션에 대해 컨슈머 그룹의 lag을 측정하는 것
  • 이는 브로커 측면에서 컨슈머가 읽지 않은 메시지수를 파악하는데 사용 됨.
profile
신윤재입니다

0개의 댓글