Skip to content

metric server 견고화 + /metric추가 #143

@kwonkwonn

Description

@kwonkwonn

Summary

로그 및 메트릭 수직 수요가 부상하면서 견고한 메트릭 서버 설치가 필요해짐.

Details

shell 스크립트 검토

  • api/metric 추가해서 pull 받을 엔드포인트 뚫어놓기
  • 커스텀 메트릭 고려

메트릭 수집 정의서

1. HTTP API 메트릭

메트릭명 타입 설명 분류
http_requests_total Counter 엔드포인트별 HTTP 요청 누적 수 (labels: method, endpoint, status_code) 공통
http_request_duration_seconds Histogram API 요청 처리 레이턴시 (label: endpoint) 공통
http_requests_in_flight Gauge 현재 동시 처리 중인 API 요청 수 공통

2. VM 라이프사이클 메트릭

메트릭명 타입 설명 분류
kws_vm_total Gauge 현재 상태별 VM 개수 (label: state — Running, Stopped 등) 코어
kws_vm_create_total Counter VM 생성 오퍼레이션 수행 누적 횟수 코어
kws_vm_delete_total Counter VM 삭제 오퍼레이션 수행 누적 횟수 코어
kws_vm_shutdown_total Counter VM 종료 오퍼레이션 수행 누적 횟수 코어
kws_vm_create_duration_seconds Histogram VM 생성 완료까지 소요된 시간 코어
kws_vm_operation_errors_total Counter 오퍼레이션 수행 중 발생한 에러 수 (label: operation) 코어

3. 스냅샷 메트릭

메트릭명 타입 설명 분류
kws_snapshot_create_total Counter 스냅샷 생성 누적 횟수 (label: type) 코어
kws_snapshot_delete_total Counter 스냅샷 삭제 누적 횟수 (label: type) 코어
kws_snapshot_revert_total Counter 스냅샷 복구 누적 횟수 (label: type) 코어

4. 시스템 컴포넌트 메트릭

메트릭명 타입 설명 분류
kws_domcon_registered_domains Gauge Domain Controller(DomCon)에 등록된 VM 수 코어
kws_libvirt_connection_up Gauge Libvirt 데몬과의 연결 상태 (정상: 1, 비정상: 0) 코어

5. 인프라 수집 메트릭 (node_exporter / libvirt-exporter)

5-1. CPU & 하이퍼바이저

수집 방법 타겟 메트릭 설명 분류
node_exporter cpufreq/ 코어별 CPU 주파수 현황 공통
node_exporter proc/stat CPU 사용률 (User / System / Iowait / Steal) 공통
node_exporter Steal time 다른 VM에 의해 CPU 자원을 선점당해 대기한 시간 공통
libvirt-exporter kvm_exits, kvm_halt_exits 하이퍼바이저 컨텍스트 스위칭 빈도 추적

5-2. 메모리

수집 방법 타겟 메트릭 설명 분류
node_exporter sys/kernel/mm/ksm/ KSM(커널 동일 페이지 병합)을 통한 메모리 절약량 공통

5-3. 스토리지

수집 방법 타겟 메트릭 설명 분류
node_exporter Disk I/O 스토리지 Read/Write IOPS, Throughput 및 Latency 공통

5-4. 네트워크

수집 방법 타겟 메트릭 설명 분류
node_exporter vNIC / Bridge 브리지 및 virtio-net의 Tx/Rx Bytes, Packet Drop 공통

5-5. VM 개별 (Per-VM)

수집 방법 타겟 메트릭 설명 분류
libvirt-exporter VM Resources 개별 VM 단위의 CPU, 메모리, 디스크 I/O, 네트워크 사용량
위의 메트릭에 대해 진행할 예정

Additional Context

코어 2번에서 테스트 한 후에 3,4 번에 붙일 예정.
맘 같아선 main 을 3,4, 번에 밀고 싶지만 아직 완전한 검증인 이루어지지 않음.
그래서 3,4 번 위에 체리픽해서 올린 이후에 새로운 버전 나오면 붙일 예정( metric endpoint 를 새롭게 만드는 거라 충돌 범위 거의 x)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions