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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions