etcd 3.5는 Prometheus 포맷의 메트릭을 제공하며, 클러스터의 상태와 성능을 모니터링하는 데 필수적인 여러 지표들을 포함하고 있습니다. 이러한 지표들은 클라이언트, 서버, Raft, 디스크 등 다양한 측면을 포괄합니다.
etcd 메트릭은 크게 Counter, Gauge, Histogram의 세 가지 유형으로 나뉩니다.
아래 표는 etcd 3.5에서 중요한 메트릭 지표, 값의 단위, 그리고 일반적인 운영 기준값을 요약한 것입니다. 운영 기준값은 클러스터의 워크로드와 환경에 따라 달라질 수 있으므로, 초기 벤치마킹을 통해 자신의 환경에 맞는 최적의 기준을 설정하는 것이 중요합니다.
| 지표명 (Metric Name) | 값 단위 | 유형 | 주요 지표 설명 | 운영 기준값 (권장) |
|---|---|---|---|---|
etcd_server_leader_changes_seen_total | 횟수 | Counter | 리더 교체가 발생한 총 횟수. 빈번한 리더 교체는 클러스터 불안정성(네트워크 지연, 리소스 부족 등)을 나타냄. | 0에 가까운 값. 잦은 증가가 발생하면 문제 원인 파악 필요. |
etcd_server_proposals_failed_total | 횟수 | Counter | Raft 제안(proposals)이 실패한 총 횟수. 쿼럼(Quorum) 실패, 느린 팔로워 등으로 인해 발생. | 0에 가까운 값. 0이 아니면 문제가 있는 것으로 간주. |
etcd_disk_wal_fsync_duration_seconds | 초 (seconds) | Histogram | WAL(Write-Ahead Log)이 디스크에 동기화되는 데 걸린 시간. etcd의 성능과 안정성에 가장 중요한 지표 중 하나. | 99%ile 값이 10ms (0.01초) 미만이어야 함. 50ms 이상은 심각한 불안정성 경고. |
etcd_disk_backend_commit_duration_seconds | 초 (seconds) | Histogram | etcd 백엔드 데이터베이스에 변경 사항이 커밋되는 데 걸린 시간. | 99%ile 값이 25ms (0.025초) 미만이어야 함. |
etcd_mvcc_db_total_size_in_bytes | 바이트 (bytes) | Gauge | etcd 데이터베이스의 총 크기. etcd는 키, 값 뿐만 아니라 수정 이력도 저장하므로 크기 관리가 중요. | auto-compaction 및 defragmentation을 통해 쿼터(quota)의 80% 미만으로 유지 권장. |
etcd_network_peer_round_trip_time_seconds | 초 (seconds) | Histogram | etcd 멤버 간의 네트워크 왕복 시간. 클러스터의 안정성과 직접적인 관련이 있음. | 99%ile 값이 50ms (0.05초) 미만이어야 함. |
etcd_server_has_leader | 불리언 (0 또는 1) | Gauge | 현재 클러스터에 리더가 존재하는지 여부. 1은 리더가 있음을, 0은 리더가 없음을 의미. | 항상 1이어야 함. 0이 되면 클러스터가 동작하지 않음. |
etcd_server_proposals_pending | 횟수 | Gauge | 현재 처리 대기 중인 Raft 제안의 수. | 0에 가까운 값. 높은 값이 지속되면 클러스터가 과부하 상태일 수 있음. |
etcd_server_proposals_committed_total | 횟수 | Counter | 성공적으로 커밋된 총 Raft 제안의 수. | 증가율을 모니터링하여 클러스터의 워크로드를 파악하는 데 사용. |
etcd_server_proposals_applied_total | 횟수 | Counter | 성공적으로 적용된 총 Raft 제안의 수. | committed 값과 비교하여 차이가 발생하면 문제가 있을 수 있음. |
etcd_debugging_store_watchers: 현재 etcd 데이터를 감시(watch) 중인 쿼리 수.etcd_server_quota_backend_bytes: etcd 데이터베이스의 스토리지 할당량. 이 값에 도달하면 쓰기 작업이 거부되므로, 주기적인 백업과 압축(compaction)이 중요합니다.etcd_debugging_mvcc_slow_watcher_total: 동기화되지 않은(느린) watcher의 수. watcher가 너무 느리면 etcd가 느려질 수 있습니다.운영 팁:
fdatasync를 호출합니다. 이 작업이 느리면 클러스터의 안정성이 떨어집니다. SSD 또는 NVMe 드라이브와 같이 낮은 디스크 지연 시간을 가진 스토리지를 사용하는 것이 필수적입니다.etcdctl defrag 명령어를 사용하여 데이터베이스를 주기적으로 조각 모음하면 공간을 효율적으로 관리할 수 있습니다.etcdctl snapshot을 통해 정기적으로 etcd 데이터를 백업하는 것이 재해 복구에 매우 중요합니다.