Raft 텔레메트리
Raft 텔레메트리는 Vault 통합 스토리지에 대한 정보를 제공합니다.
출처: 문서
본문
기본 메트릭
vault.raft.apply
| Metric type |
Value |
Description |
| counter |
number |
구성된 간격의 트랜잭션 수 |
vault.raft.apply 메트릭은 Raft 내부 스토리지의 쓰기 부하를 나타내는 일반적으로 좋은 지표입니다.
vault.raft.barrier
| Metric type |
Value |
Description |
| counter |
number |
노드가 배리어(barrier)를 시작한 횟수 |
노드는 유한 상태 머신에 적용해야 하는 모든 대기 작업이 제대로 큐에 들어가도록 보장하고 싶을 때 블로킹 호출을 발행해 배리어(barrier)를 시작합니다.
vault.raft.candidate.electSelf
| Metric type |
Value |
Description |
| summary |
ms |
노드가 피어에게 투표 요청을 보내는 데 필요한 시간 |
vault.raft.commitNumLogs
| Metric type |
Value |
Description |
| gauge |
number |
단일 배치에서 유한 상태 머신 적용을 위해 처리된 로그 수 |
vault.raft.commitTime
| Metric type |
Value |
Description |
| summary |
ms |
리더 노드의 Raft 로그에 새 엔트리를 커밋하는 데 필요한 시간 |
vault.raft.compactLogs
| Metric type |
Value |
Description |
| summary |
ms |
불필요한 로그를 정리(trim)하는 데 필요한 시간 |
vault.raft.fsm.apply
| Metric type |
Value |
Description |
| summary |
number |
마지막 간격 이후 유한 상태 머신(finite state machine)이 커밋한 로그 수 |
vault.raft.fsm.applyBatch
| Metric type |
Value |
Description |
| summary |
ms |
유한 상태 머신이 가장 최근의 로그 배치를 적용하는 데 필요한 시간 |
vault.raft.fsm.applyBatchNum
| Metric type |
Value |
Description |
| counter |
number |
가장 최근 배치에서 적용된 로그 수 |
vault.raft.fsm.enqueue
| Metric type |
Value |
Description |
| summary |
ms |
유한 상태 머신이 적용할 로그 배치를 큐에 넣는 데 필요한 시간 |
vault.raft.fsm.restore
| Metric type |
Value |
Description |
| summary |
ms |
유한 상태 머신이 스냅샷에서 복원 작업을 완료하는 데 필요한 시간 |
vault.raft.fsm.snapshot
| Metric type |
Value |
Description |
| summary |
ms |
유한 상태 머신이 현재 스냅샷에 대한 상태 정보를 기록하는 데 필요한 시간 |
vault.raft.fsm.store_config
| Metric type |
Value |
Description |
| summary |
ms |
가장 최근의 Raft 구성을 저장하는 데 필요한 시간 |
vault.raft.get
| Metric type |
Value |
Description |
| summary |
ms |
기본 스토리지에서 엔트리를 검색하는 데 필요한 시간 |
vault.raft.list
| Metric type |
Value |
Description |
| summary |
ms |
기본 스토리지에서 키 목록을 검색하는 데 필요한 시간 |
vault.raft.peers
| Metric type |
Value |
Description |
| guage |
number |
Raft 클러스터 구성의 피어 수 |
vault.raft.restore
| Metric type |
Value |
Description |
| counter |
number |
노드가 복원(restore) 작업을 수행한 횟수 |
Raft 스토리지 맥락에서 복원(restore) 작업은 Raft가 상태를 복원하기 위해 외부 스냅샷을 소비하는 과정을 말합니다.
vault.raft.restoreUserSnapshot
| Metric type |
Value |
Description |
| timer |
ms |
사용자 스냅샷에서 유한 상태 머신을 복원하는 데 필요한 시간 |
vault.raft.rpc.appendEntries
| Metric type |
Value |
Description |
| timer |
ms |
노드의 원격 appendEntries 호출을 처리하는 데 필요한 시간 |
vault.raft.rpc.appendEntries.processLogs
| Metric type |
Value |
Description |
| timer |
ms |
주어진 노드에 대한 미처리(outstanding) 로그를 완전히 처리하는 데 필요한 시간 |
vault.raft.rpc.appendEntries.storeLogs
| Metric type |
Value |
Description |
| timer |
ms |
주어진 노드에 대해 마지막 append entries 요청 이후 미처리 로그를 기록하는 데 필요한 시간 |
vault.raft.rpc.installSnapshot
| Metric type |
Value |
Description |
| timer |
ms |
installSnapshot RPC 호출을 처리하는 데 필요한 시간 |
현재 follower 상태인 노드만 vault.raft.rpc.installSnapshot 메트릭을 보고합니다.
vault.raft.rpc.processHeartbeat
| Metric type |
Value |
Description |
| timer |
ms |
하트비트 요청을 처리하는 데 필요한 시간 |
vault.raft.rpc.requestVote
| Metric type |
Value |
Description |
| summary |
ms |
requestVote 호출을 완료하는 데 필요한 시간 |
vault.raft.snapshot.create
| Metric type |
Value |
Description |
| timer |
ms |
새 스냅샷을 캡처하는 데 필요한 시간 |
vault.raft.snapshot.persist
| Metric type |
Value |
Description |
| timer |
ms |
스냅샷을 만드는 동안 스냅샷 메타 정보를 디스크에 기록하는 데 필요한 시간 |
vault.raft.snapshot.takeSnapshot
| Metric type |
Value |
Description |
| timer |
ms |
현재 스냅샷을 생성·영속화하는 데 필요한 총 시간 |
대부분의 경우 vault.raft.snapshot.takeSnapshot은 vault.raft.snapshot.create + vault.raft.snapshot.persist와 거의 같습니다.
vault.raft.state.candidate
| Metric type |
Value |
Description |
| counter |
number |
Raft 서버가 선거를 시작한 횟수 |
vault.raft.state.follower
| Metric type |
Value |
Description |
| summary |
number |
구성된 간격 동안 Raft 서버가 팔로워가 된 횟수 |
노드는 다음 조건에서 follower 상태로 전환됩니다.
- when the node joins the cluster
- when a leader is elected, but the node was not elected leader
vault.raft.state.leader
| Metric type |
Value |
Description |
| counter |
number |
Raft 서버가 리더가 된 횟수 |
vault.raft.transition.heartbeat_timeout
| Metric type |
Value |
Description |
| summary |
number |
마지막으로 알려진 리더로부터 하트비트 메시지를 받지 못해 노드가 candidate 상태로 전환한 횟수 |
vault.raft.transition.leader_lease_timeout
| Metric type |
Value |
Description |
| counter |
number |
리더가 쿼럼의 노드에 접촉하지 못해 내려온(step down) 횟수 |
vault.raft.verify_leader
| Metric type |
Value |
Description |
| counter |
number |
구성된 간격 동안 노드가 여전히 리더임을 확인한 횟수 |
Autopilot metrics
참고(Note)
Autopilot은 활성 노드에서만 실행되므로 autopilot 메트릭은 현재 활성 노드에 대해서만 수집됩니다.
vault.autopilot.failure_tolerance
| Metric type |
Value |
Description |
| gauge |
nodes |
쿼럼을 초과하는 정상 노드 수 |
실패 허용치(failure tolerance)는 쿼럼을 잃지 않고 얼마나 많은 현재 정상 노드가 실패할 수 있는지 나타냅니다.
vault.autopilot.healthy
| Metric type |
Value |
Description |
| gauge |
boolean |
모든 노드가 정상인지 여부를 나타냄 |
- A value of
1 on the gauge means that Autopilot deems all nodes healthy.
- A value of
0 on the gauge means that Autopilot deems at least 1 node
비정상.
vault.autopilot.node.healthy
| Metric type |
Value |
Description |
| gauge |
boolean |
활성(active) 노드가 정상인지 여부를 나타냄 |
- A value of
1 on the gauge means that Autopilot deems the node indicated by
node_id는 정상입니다.
- A value of
0 on the gauge means that Autopilot cannot communicate with the
node_id가 가리키는 노드를 정상으로 간주하거나, 그 노드를 비정상으로 간주합니다.
Leadership change metrics
리더십 변경 메트릭은 Raft 서버의 통합 스토리지와 Raft 노드 간 네트워크 연결의 전반적인 성능을 나타냅니다.
vault.raft.leader.dispatchLog
| Metric type |
Value |
Description |
| timer |
ms |
리더 노드가 로그 엔트리를 디스크에 쓰는 데 필요한 시간 |
vault.raft.leader.dispatchNumLogs
| Metric type |
Value |
Description |
| gauge |
number |
가장 최근 배치에서 디스크에 커밋된 로그 수 |
| Metric type |
Value |
Description |
| summary |
ms |
리더가 리더 임대(leader lease)를 확인할 때 팔로워 노드에 마지막으로 접촉할 수 있었던 이후 경과 시간 |
Raft replication metrics
vault.raft.replication.appendEntries.log
| Metric type |
Value |
Description |
| summary |
number |
리더 로그와 동등성(parity)을 확립하기 위해 노드에 복제된 로그 수 |
vault.raft.replication.appendEntries.rpc
| Metric type |
Value |
Description |
| timer |
ms |
appendEntries로 리더 노드 로그 엔트리를 모든 팔로워 노드에 복제하는 데 필요한 시간 |
vault.raft.replication.heartbeat
| Metric type |
Value |
Description |
| timer |
ms |
피어가 타임아웃되지 않도록 피어에서 appendEntries를 호출하는 데 필요한 시간 |
vault.raft.replication.installSnapshot
| Metric type |
Value |
Description |
| timer |
ms |
installSnapshot RPC 호출을 처리하는 데 필요한 시간 |
현재 follower 상태인 노드만 vault.raft.replication.installSnapshot 메트릭을 보고합니다.
Storage metrics
vault.raft_storage.bolt.cursor.count
| Metric type |
Value |
Description |
| gauge |
number |
Bolt 데이터베이스에서 생성된 커서 수 |
vault.raft_storage.bolt.freelist.allocated_bytes
| Metric type |
Value |
Description |
| gauge |
bytes |
Bolt 데이터베이스 프리리스트에 할당된 총 공간 |
vault.raft_storage.bolt.freelist.free_pages
| Metric type |
Value |
Description |
| gauge |
number |
Bolt 데이터베이스 프리리스트(freelist)의 빈 페이지 수 |
vault.raft_storage.bolt.freelist.pending_pages
| Metric type |
Value |
Description |
| gauge |
number |
Bolt 데이터베이스 프리리스트의 대기 페이지 수 |
vault.raft_storage.bolt.freelist.used_bytes
| Metric type |
Value |
Description |
| gauge |
bytes |
Bolt 데이터베이스 프리리스트가 사용하는 총 공간 |
vault.raft_storage.bolt.node.count
| Metric type |
Value |
Description |
| gauge |
number |
Bolt 데이터베이스의 노드 할당 수 |
vault.raft_storage.bolt.node.dereferences
| Metric type |
Value |
Description |
| gauge |
number |
Bolt 데이터베이스의 노드 역참조 총 수 |
vault.raft_storage.bolt.page.bytes_allocated
| Metric type |
Value |
Description |
| gauge |
bytes |
Bolt 데이터베이스에 할당된 총 공간 |
vault.raft_storage.bolt.page.count
| Metric type |
Value |
Description |
| gauge |
number |
Bolt 데이터베이스의 페이지 할당 수 |
vault.raft_storage.bolt.rebalance.count
| Metric type |
Value |
Description |
| gauge |
number |
Bolt 데이터베이스가 수행한 노드 리밸런스 수 |
vault.raft_storage.bolt.rebalance.time
| Metric type |
Value |
Description |
| summary |
ms |
Bolt 데이터베이스가 노드를 리밸런스하는 데 필요한 시간 |
vault.raft_storage.bolt.spill.count
| Metric type |
Value |
Description |
| gauge |
number |
Bolt 데이터베이스가 넘친(spill) 노드 수 |
vault.raft_storage.bolt.spill.time
| Metric type |
Value |
Description |
| summary |
ms |
Bolt 데이터베이스가 넘침(spill)에 쓴 총 시간 |
vault.raft_storage.bolt.split.count
| Metric type |
Value |
Description |
| gauge |
number |
Bolt 데이터베이스가 분할한 노드 수 |
vault.raft_storage.bolt.transaction.currently_open_read_transactions
| Metric type |
Value |
Description |
| gauge |
number |
Bolt DB의 프로세스 내 읽기 트랜잭션 수 |
vault.raft_storage.bolt.transaction.started_read_transactions
| Metric type |
Value |
Description |
| gauge |
number |
Bolt DB가 시작한 읽기 트랜잭션 수 |
vault.raft_storage.bolt.write.count
| Metric type |
Value |
Description |
| gauge |
number |
Bolt 데이터베이스가 수행한 쓰기 수 |
vault.raft_storage.bolt.write.time
| Metric type |
Value |
Description |
| counter |
ms |
Bolt 데이터베이스가 디스크에 쓰는 데 소비한 누적 총 시간 |
vault.raft_storage.follower.applied_index_delta
| Metric type |
Value |
Description |
| gauge |
number |
에코가 보고한 리더 적용 인덱스와 팔로워 적용 인덱스의 차이 |
vault.raft_storage.follower.last_heartbeat_ms
| Metric type |
Value |
Description |
| gauge |
ms |
팔로워가 마지막으로 하트비트 요청을 받은 이후 경과 시간 |
vault.raft_storage.stats.applied_index
| Metric type |
Value |
Description |
| gauge |
number |
유한 상태 머신에 마지막으로 적용되거나 fsm_pending queue에 추가된 Raft 로그의 최고 인덱스 |
vault.raft_storage.stats.commit_index
| Metric type |
Value |
Description |
| gauge |
number |
노드의 디스크에 커밋된 마지막 Raft 로그 인덱스 |
vault.raft_storage.stats.fsm_pending
| Metric type |
Value |
Description |
| gauge |
number |
유한 상태 머신이 적용하도록 노드가 큐에 넣은 Raft 로그 수 |
vault.raft-storage.delete
| Metric type |
Value |
Description |
| timer |
ms |
삭제 경로에 로그 엔트리를 삽입하는 데 필요한 시간 |
vault.raft-storage.entry_size
| Metric type |
Value |
Description |
| summary |
bytes |
로그 적용 중 Raft 엔트리의 총 크기 |
vault.raft-storage.get
| Metric type |
Value |
Description |
| timer |
ms |
유한 상태 머신에서 주어진 경로의 값을 검색하는 데 필요한 시간 |
vault.raft-storage.list
| Metric type |
Value |
Description |
| timer |
ms |
유한 상태 머신에서 프리픽스 아래의 모든 엔트리를 나열하는 데 필요한 시간 |
vault.raft-storage.put
| Metric type |
Value |
Description |
| timer |
ms |
영속 경로에 로그 엔트리를 삽입하는 데 필요한 시간 |
vault.raft-storage.transaction
| Metric type |
Value |
Description |
| timer |
ms |
단일 로그에 작업을 삽입하는 데 필요한 시간 |
Write-ahead logging (WAL) metrics
실험적(Experimental)
vault.raft.wal.head-truncations
| Metric type |
Value |
Description |
| counter |
number |
헤드에서 잘려진(truncated) 로그 엔트리 수 |
헤드에서(즉, 가장 오래된 엔트리에서) 잘려진 로그 엔트리 수를 셉니다.
시간에 따른 헤드 절단(truncation)의 변화율을 추적하면 개별 truncate 호출이 스파이크로 나타납니다.
실험적(Experimental)
vault.raft.wal.tail-truncations
| Metric type |
Value |
Description |
| counter |
number |
테일에서 잘려진 로그 엔트리 수 |
테일에서(즉, 가장 최신 엔트리에서) 잘려진 로그 엔트리 수를 셉니다.
시간에 따른 테일 절단의 변화율을 추적하면 개별 truncate 호출이 스파이크로 나타납니다.
실험적(Experimental)
vault.raft.wal.log-entries-read
| Metric type |
Value |
Description |
| counter |
number |
GetLog() 호출 수 |
실험적(Experimental)
vault.raft.wal.log-entries-written
| Metric type |
Value |
Description |
| counter |
number |
기록된 엔트리 수 |
실험적(Experimental)
vault.raft.wal.log-entry-bytes-read
| Metric type |
Value |
Description |
| counter |
number |
디코딩 전에 세그먼트에서 읽은 로그 엔트리 바이트 수 |
log-entry-bytes-read 카운터는 기술적으로 과대 추정입니다. 헤더, 인덱스 엔트리, 버퍼에 들어가지 못할 만큼 큰 엔트리에 대한 2차 읽기의 바이트를 포함하기 때문입니다.
실험적(Experimental)
vault.raft.wal.log-entry-bytes-written
| Metric type |
Value |
Description |
| counter |
number |
Codec으로 인코딩한 후의 로그 엔트리 바이트 수 |
log-entry-bytes-written 카운터는 기술적으로 과대 추정입니다. 헤더와 인덱스 엔트리의 바이트를 포함하기 때문입니다.
실험적(Experimental)
vault.raft.wal.stable-gets
| Metric type |
Value |
Description |
| counter |
number |
StableStore.Get() 또는 GetUint64() 호출 수 |
실험적(Experimental)
vault.raft.wal.stable-sets
| Metric type |
Value |
Description |
| counter |
number |
StableStore.Set() 또는 SetUint64() 호출 수 |
실험적(Experimental)
vault.raft.wal.log-appends
| Metric type |
Value |
Description |
| counter |
number |
StoreLog() 호출 수 |
StoreLog() 호출로 로그에 추가된 엔트리 배치 수를 셉니다.
실험적(Experimental)
vault.raft.wal.segment-rotations
| Metric type |
Value |
Description |
| counter |
number |
Vault가 새 세그먼트 파일로 전환한 횟수 |
실험적(Experimental)
vault.raft.wal.last-segment-age-seconds
| Metric type |
Value |
Description |
| gauge |
seconds |
세그먼트 생성과 시일(seal) 사이의 초 수 |
last-segment-age-seconds 게이지는 세그먼트가 생성된 시점과 시일(seal)된 시점 사이의 초 수를 보여줍니다. Vault가 세그먼트를 회전할 때마다 이 게이지는 리셋되며, 쓰기가 얼마나 빨리 디스크를 채우는지에 대한 대략적인 추정을 제공합니다.
더 알아보기 (Learn more)