Pulsar 통계

Pulsar 통계 (Pulsar stats)

Pulsar가 노출하는 토픽 통계와 내부 통계 필드를 정리했어요. 토픽의 상태와 성능을 파악하려면 이 지표들을 이해하는 것이 중요해요. 각 필드가 무엇을 의미하는지 하나씩 설명해드릴게요.

출처: 문서

본문

토픽 통계 (Topic stats)

다음 표는 토픽의 통계를 정리한 것이에요. 이 통계를 얻는 방법에 대한 자세한 내용은 Get stats를 참고해요.

note

아래 모든 통계는 브로커 재시작이나 토픽 언로드 시 0으로 리셋되지만, 별표 *로 표시된 통계는 예외예요(*로 표시된 값은 변경 없이 유지돼요).

Stat Description
msgRateIn 모든 로컬 및 복제 퍼블리셔의 게시 비율 합(초당 메시지)
msgThroughputIn 모든 로컬 및 복제 퍼블리셔의 게시 비율 합(초당 바이트)
msgRateOut 모든 로컬 및 복제 컨슈머의 디스패치 비율 합(초당 메시지)
msgThroughputOut 모든 로컬 및 복제 컨슈머의 디스패치 비율 합(초당 바이트)
averageMsgSize 마지막 간격 동안 게시된 메시지의 평균 크기(바이트)
storageSize* 토픽에 대한 BookKeeper와 계층형 저장소(tiered storage)의 레저 저장 크기 합(바이트)
offloadedStorageSize* 토픽에 대한 계층형 저장소의 저장 크기 합(바이트). 참고: 토픽의 총 저장 크기 = storageSize이며, offloadedStorageSize를 포함해요.
earliestMsgPublishTimeInBacklogs* 백로그에서 가장 오래된 메시지의 게시 시간(밀리초)
bytesInCounter 토픽에 게시된 총 바이트
msgInCounter 토픽에 게시된 총 메시지
bytesOutCounter 이 토픽에서 컨슈머에게 전달된 총 바이트. 비-영속 구독(리더)으로의 전달을 포함해요. 이는 단조 증가 카운터이며 구독 해지나 리더 닫기에도 리셋되지 않아서, 토픽 수준 값이 현재 subscriptions에 보고된 구독들의 bytesOutCounter 합보다 클 수 있어요(닫힌 리더와 해지된 영속 구독은 통계에 더 이상 나타나지 않지만, 그들이 소비한 바이트는 여전히 여기서 계산돼요).
msgOutCounter 이 토픽에서 컨슈머에게 전달된 총 메시지. 비-영속 구독(리더)으로의 전달을 포함해요. 이는 단조 증가 카운터이며 구독 해지나 리더 닫기에도 리셋되지 않아서, 토픽 수준 값이 현재 subscriptions에 보고된 구독들의 msgOutCounter 합보다 클 수 있어요(닫힌 리더와 해지된 영속 구독은 통계에 더 이상 나타나지 않지만, 그들이 소비한 메시지는 여전히 여기서 계산돼요).
msgChunkPublished 청크(chunked) 메시지가 게시된 토픽
backlogSize* 추정된 총 미소비(백로그) 크기(바이트)
oldestBacklogMessageAgeSeconds 가장 오래된 미승인(즉 백로그) 메시지의 나이(초), 게시 시간으로부터 경과된 시간으로 측정. 이 값은 매 백로그 쿼터 검사 간격마다 기록되므로 마지막 검사에서 본 값을 나타내요.
oldestBacklogMessageSubscriptionName 가장 오래된 미승인 메시지를 포함하는 구독의 이름. 이 값은 매 백로그 쿼터 검사 간격마다 기록되므로 마지막 검사에서 본 값을 나타내요.
backlogQuotaLimitSize 토픽 백로그 쿼터의 크기(바이트)
backlogQuotaLimitTime 토픽 백로그 나이(시간) 쿼터(초)
waitingPublishers 배타적 접근 모드에서 큐에 대기 중인 퍼블리셔 수
deduplicationStatus 토픽의 메시지 중복 제거 상태
topicEpoch 토픽 에포크 또는 설정되지 않았으면 비어 있음
filteredEntriesCount 토픽의 건너뛴 엔트리 수
nonContiguousDeletedMessagesRanges 비-연속 삭제 메시지 범위 수
nonContiguousDeletedMessagesRangesSerializedSize 비-연속 삭제 메시지 범위의 직렬화된 크기
ownerBroker 이 토픽을 소유한 브로커
publishers 토픽의 모든 로컬 퍼블리셔 목록(0부터 수천 개까지)
subscriptions 토픽에 대한 모든 로컬 구독 목록
replication 이 토픽의 교차 시설(cross-colo) 복제 통계

프로듀서 통계 (Producer stats)

Stat Description
producerId 이 토픽에서 이 프로듀서의 내부 식별자
producerName 클라이언트 라이브러리가 생성한 이 프로듀서의 내부 식별자
address 이 프로듀서 연결의 IP 주소와 소스 포트
connectedSince 이 프로듀서가 생성되거나 마지막으로 재연결된 타임스탬프
accessMode 프로듀서가 요구하는 토픽 접근 유형
msgRateIn 이 퍼블리셔가 게시하는 총 메시지 비율(초당 메시지)
msgThroughputIn 이 퍼블리셔가 게시하는 메시지의 총 처리량(초당 바이트)
averageMsgSize 마지막 간격 동안 이 퍼블리셔의 평균 메시지 크기(바이트)
chunkedMessageRate 이 퍼블리셔가 게시하는 청크 메시지의 총 비율
clientVersion 이 프로듀서의 클라이언트 라이브러리 버전
metadata 이 퍼블리셔와 연관된 메타데이터(key/value 문자열)

구독 통계 (Subscription stats)

Stat Description
my-subscription 이 구독의 이름. 클라이언트가 정의해요.
msgRateOut 이 구독에서 전달되는 총 메시지 비율(초당 메시지)
msgThroughputOut 이 구독에서 전달되는 총 처리량(초당 바이트)
msgBacklog 구독 백로그의 메시지 수
type 이 구독의 유형
msgRateExpired TTL 때문에 이 구독에서 디스패치되지 않고 버려지는 메시지 비율
lastExpireTimestamp 마지막 메시지 만료 타임스탬프
lastConsumedFlowTimestamp 마지막 flow 명령을 받은 타임스탬프
lastConsumedTimestamp 컨슈머들의 모든 소비 타임스탬프 중 가장 최신
lastAckedTimestamp 컨슈머들의 모든 승인 타임스탬프 중 가장 최신
msgRateRedeliver 이 구독에서 재전달되는 총 메시지 비율(초당 메시지)
chunkedMessageRate 청크 메시지 디스패치 비율
earliestMsgPublishTimeInBacklog* 구독 백로그에서 가장 오래된 메시지의 게시 시간(밀리초)
msgBacklogNoDelayed 지연 메시지를 포함하지 않는 구독 백로그의 메시지 수
blockedSubscriptionOnUnackedMsgs 미승인 메시지 임계값에 도달해 구독이 차단되었는지 확인하는 플래그
msgDelayed 현재 추적 중인 지연 메시지 수
unackedMessages 구독의 미승인 메시지 수. 미승인 메시지는 컨슈머에게 보내졌지만 아직 승인되지 않은 메시지예요. 이 필드는 개별 메시지 승인을 추적하는 구독을 사용할 때만 의미가 있어요.
activeConsumerName 단일 활성 컨슈머 구독(예: failover 또는 exclusive)에서 활성인 컨슈머의 이름
totalMsgExpired 이 구독에서 만료된 총 메시지
lastMarkDeleteAdvancedTimestamp 마지막 MarkDelete 위치가 전진한 타임스탬프
durable 구독이 영속인지 일시적인지(예: 리더)
replicated 구독 상태가 다른 지역 간에 동기화 상태로 유지되는지 표시
allowOutOfOrderDelivery Key_Shared 구독에서 순서가 어긋난 전달이 허용되는지 여부
keySharedMode Key_Shared 구독 모드의 옵션. AUTO_SPLIT 또는 STICKY를 포함해요.
consumersAfterMarkDeletePosition Key_Shared 구독의 recentlyJoinedConsumers를 가져옴
drainingHashesCount Key_Shared AUTO_SPLIT 순서 구독의 draining 상태에 있는 현재 해시 수
drainingHashesClearedTotal Key_Shared AUTO_SPLIT 순서 구독의 연결된 컨슈머들에 대해 draining 상태에서 지워진 총 해시 수
drainingHashesUnackedMessages Key_Shared AUTO_SPLIT 순서 구독의 모든 draining 해시에 대한 총 미승인 메시지 수
filterProcessedMsgCount EntryFilter가 처리한 메시지 수
filterAcceptedMsgCount EntryFilter가 승인한 메시지 수
filterRejectedMsgCount EntryFilter가 거부한 메시지 수
filterRescheduledMsgCount EntryFilter가 재예약한 메시지 수
bytesOutCounter 컨슈머에게 전달된 총 바이트
msgOutCounter 컨슈머에게 전달된 총 메시지
backlogSize* 이 구독의 백로그 크기(바이트)
nonContiguousDeletedMessagesRanges 비-연속 삭제 메시지 범위 수
nonContiguousDeletedMessagesRangesSerializedSize 비-연속 삭제 메시지 범위의 직렬화된 크기
consumers 이 구독의 연결된 컨슈머 목록

컨슈머 통계 (Consumer stats)

Stat Description
consumerName 클라이언트 라이브러리가 생성한 이 컨슈머의 내부 식별자
msgRateOut 컨슈머에게 전달되는 총 메시지 비율(초당 메시지)
msgThroughputOut 컨슈머에게 전달되는 총 처리량(초당 바이트)
availablePermits 클라이언트 라이브러리의 수신 큐에서 컨슈머가 공간을 가진 메시지 수. 0이면 클라이언트 라이브러리의 큐가 가득 차고 receive()가 호출되지 않음을 의미. 0이 아니면 이 컨슈머가 디스패치된 메시지를 받을 준비가 되었음을 의미해요.
unackedMessages 컨슈머의 미승인 메시지 수. 미승인 메시지는 컨슈머에게 보내졌지만 아직 승인되지 않은 메시지예요. 이 필드는 개별 메시지 승인을 추적하는 구독을 사용할 때만 의미가 있어요.
blockedConsumerOnUnackedMsgs 미승인 메시지 임계값에 도달해 컨슈머가 차단되었는지 확인하는 플래그
lastConsumedTimestamp (비권장) 컨슈머가 마지막으로 메시지를 읽은 타임스탬프
lastConsumedTime 컨슈머가 마지막으로 메시지를 읽은 시간
lastAckedTimestamp (비권장) 컨슈머가 마지막으로 메시지를 승인한 타임스탬프
lastAckedTime 컨슈머가 마지막으로 메시지를 승인한 시간
address 이 컨슈머 연결의 IP 주소와 소스 포트
connectedSince 이 컨슈머가 생성되거나 마지막으로 재연결된 타임스탬프
clientVersion 이 컨슈머의 클라이언트 라이브러리 버전
bytesOutCounter 컨슈머에게 전달된 총 바이트
msgOutCounter 컨슈머에게 전달된 총 메시지
msgRateRedeliver 이 컨슈머가 재전달하는 총 메시지 비율(초당 메시지)
chunkedMessageRate 이 컨슈머에게 전달되는 총 청크 메시지 비율
avgMessagesPerEntry 컨슈머가 소비한 엔트리당 평균 메시지 수
readPositionWhenJoining (비권장) 컨슈머가 합류할 때 커서의 읽기 위치
drainingHashesCount Key_Shared AUTO_SPLIT 순서 구독의 draining 상태에 있는 현재 해시 수
drainingHashesClearedTotal Key_Shared AUTO_SPLIT 순서 구독의 이 컨슈머에 대해 draining 상태에서 지워진 총 해시 수
drainingHashesUnackedMessages Key_Shared AUTO_SPLIT 순서 구독의 모든 draining 해시에 대한 총 미승인 메시지 수
drainingHashes Key_Shared AUTO_SPLIT 순서 구독의 이 컨슈머의 draining 해시
keyHashRanges 이 컨슈머가 Key_Shared 구독 모드를 사용할 때 할당된 해시 범위(subscriptionKeySharedUseClassicPersistentImplementation이 true로 설정될 때 사용)
keyHashRangeArrays 이 컨슈머가 Key_Shared 구독 모드를 사용할 때 할당된 해시 범위(subscriptionKeySharedUseClassicPersistentImplementation이 false로 설정될 때 사용)
metadata 이 컨슈머와 연관된 메타데이터(key/value 문자열)

복제 통계 (Replication stats)

Stat Description
msgRateIn 원격 클러스터에서 받은 총 메시지 비율(초당 메시지)
msgThroughputIn 원격 클러스터에서 받은 총 처리량(초당 바이트)
msgRateOut 복제-구독자에게 전달되는 총 메시지 비율(초당 메시지)
msgThroughputOut 복제-구독자에게 전달되는 총 처리량(초당 바이트)
msgRateExpired 만료되는 총 메시지 비율(초당 메시지)
replicationBacklog 원격 클러스터로 복제되기를 대기 중인 메시지 수
connected 아웃바운드 복제기가 연결되어 있는지 여부
replicationDelayInSeconds 연결되어 있을 때 가장 오래된 메시지가 연결을 통해 전송되기를 기다린 시간
inboundConnection 원격 클러스터의 퍼블리셔 연결이 이 브로커에 연결된 IP와 포트
inboundConnectedSince 원격 클러스터에 메시지를 게시하는 데 사용되는 TCP 연결. 로컬 퍼블리셔가 연결되어 있지 않으면 이 연결은 1분 후 자동으로 닫혀요.
outboundConnection 아웃바운드 복제 연결의 주소
outboundConnectedSince 아웃바운드 연결을 설정한 타임스탬프

토픽 내부 통계 (Topic internal stats)

다음 표는 토픽 내부의 통계를 정리한 것이에요. 이 통계를 얻는 방법에 대한 자세한 내용은 Get stats를 참고해요.

Stat Description
entriesAddedCounter 이 브로커가 이 토픽을 로드한 이후 게시된 메시지 수
numberOfEntries 추적되는 총 메시지 수
totalSize 모든 메시지의 총 저장 크기(바이트)
currentLedgerEntries 현재 쓰기 위해 열려 있는 레저에 기록된 메시지 수
currentLedgerSize 현재 쓰기 위해 열려 있는 레저에 기록된 메시지의 크기(바이트)
lastLedgerCreatedTimestamp 마지막 레저가 생성된 시간
lastLedgerCreationFailureTimestamp 마지막 레저가 실패한 시간
waitingCursorsCount 따라잡혀서 새 메시지가 게시되기를 기다리는 커서 수
pendingAddEntriesCount 완료를 기다리는 쓰기 요청(비동기)이 있는 메시지 수
lastConfirmedEntry 성공적으로 기록된 마지막 메시지의 ledgerid:entryid. entryid가 -1이면 레저가 열려 있거나 열려 있지만 아직 쓰여진 엔트리가 없음을 의미해요.
state 커서 레저의 상태. state가 LedgerOpened이면 게시된 메시지를 저장하기 위해 레저가 열려 있음을 의미해요.
ledgers 이 토픽에서 메시지를 보관하는 모든 레저의 순서 목록
cursors 이 토픽의 모든 커서 목록. 토픽 통계의 각 구독에는 커서가 있어요.
markDeletePosition ack 위치: 구독자가 승인한 마지막 메시지. 이 위치 앞의 모든 메시지는 구독자가 승인했어요.
readPosition 메시지를 읽기 위한 구독자의 최신 위치
waitingReadOp 구독이 토픽에 게시된 최신 메시지를 읽고 새 메시지가 게시되기를 기다릴 때 true
pendingReadOps 진행 중인 BookKeeper 읽기 요청 수
messagesConsumedCounter 이 브로커가 이 토픽을 로드한 이후 이 커서가 승인한 엔트리(메시지가 아님 — 엔트리는 메시지 배치를 포함할 수 있어요) 수
cursorLedger 현재 markDeletePosition을 영속적으로 저장하는 데 사용되는 레저
cursorLedgerLastEntry 현재 markDeletePosition을 영속적으로 저장하는 데 사용되는 마지막 entryid
individuallyDeletedMessages 승인이 순서가 어긋나게 이루어질 때 markDeletePosition과 readPosition 사이에 승인된 메시지의 범위
lastLedgerSwitchTimestamp 커서 레저가 롤오버된 마지막 시간
schemaLedgers 이 토픽 스키마의 모든 레저 순서 목록
compactedLedger 토픽 컴팩션 후 미-승인 메시지를 보관하는 레저
ledgerId 이 레저의 ID
entries 이 레저에 속한 총 엔트리 수
size 이 레저에 기록된 메시지의 크기(바이트)
offloaded 이 레저가 오프로드되었는지 여부. 컴팩트된 토픽 레저의 경우 값은 false예요.
metadata 레저 메타데이터

더 알아보기 (Learn more)

  • 이 통계를 얻는 방법은 Get stats 문서를 참고해요.
  • 토픽 통계 명령 상세는 manage topics 문서를 참고해요.
  • Pulsar 지표·모니터링 전반은 모니터링 문서를 참고해요.