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 지표·모니터링 전반은 모니터링 문서를 참고해요.