index

software metric

소프트웨어 메트릭은 소프트웨어의 품질, 성능, 생산성, 유지보수성 등을 정량적으로 측정하기 위해 사용되는 지표를 말한다

소프트웨어 개발 과정과 운영 과정에서 모두 사용하며 다음과 같은 목적으로 사용한다

메트릭 목적

주요 메트릭스 유형

metrics in monitoring

모니터링에서 메트릭을 측정한다는 것은 특정 관점에 수치화된 데이터를 수집하고 분석한다는 의미이다

애플리케이션, 서버, 네트워크 등에서 객관적으로 측정 가능한 데이터를 수집하고 그래프, 대시보드, 알림 등의 형태로 분석하거나 평가한다

이를 통해 성능 분석, 문제 탐지, 가용성 등을 파악하거나 운영 효율성을 높일 수 있다

모니터링에서 사용되는 메트릭의 주요 목적은 다음과 같다

metric details

metric collection target type

시스템 메트릭: 서버 및 인프라 리소스 사용량 수집 - cpu 사용률, 메모리 사용량, 디스크 i/o, 네트워크 트래픽 등

애플리케이션 메트릭: 애플리케이션 성능과 상태를 수집 - 요청 수, 응답 시간, 에러율 등

비즈니스 메트릭: 비즈니스 관련 지표 - 활성 사용자 수, 주문 건수, 매출 등

특성에 따른 메트릭 분류

카운터(counter): 초기화 전까지 감소하지 않고 증가만 하는 값 - 요청 수, 에러 발생 횟수 등

게이지(guage): 증가, 감소할 수 있는 실시간 상태 값 - cpu 사용률, 메모리 사용량 등

히스토그램(histogram): 값의 분포를 구간별로 집계 - 응답 시간 분포 (0-100ms, 100-200ms 등)

요약(summary): 통계적인 요약 데이터 (평균, 백분위) - 평균 응답 시간, 95 백분위 응답 시간 등

시간 특성에 따른 메트릭 분류

현재 상태(current state): 현재 시점의 상태 - cpu 사용률, 메모리 사용량 등

이벤트 발생(event count): 특정 이벤트 발생 횟수 - 요청 수, 오류 발생 수 등

시간 경과(time series): 시간에 따른 값의 변화 추적 - 시간별 트래픽, 초당 요청 수 등

metrics data collection methods

pull: 모니터링 시스템이 주기적으로 데이터 수집 - prometheus가 대상 애플리케이션에서 메트릭 수집

push: 대상 시스템이 모니터링 서버로 데이터 전송 - statsd, graphite

metric collection tools

spring boot actuator: 스프링 부트 애플리케이션의 기본 메트릭 제공 - 요청 수, 응답 시간, 에러율 등

micrometer: 스프링 부트 애플리케이션의 메트릭 수집 라이브러리 - prometheus, grafana와 통합 가능

prometheus: 시계열(time series) 데이터 수집 및 저장 - pull 방식, grafana와 통합 가능

statsd: 애플리케이션에서 메트릭을 push 방식으로 수집 - graphite, datadog 등과 연동

metric visualization tools

grafana: 실시간 대시보드 시각화 및 알림 설정 - prometheus, graphite, elasticsearch 등과 연동

kibana: elasticsearch 로그 및 메트릭 시각화 - elk stack

alertmanager: prometheus와 연동하여 알림 관리 - 임계값 초과 시 슬랙, 이메일 등 알림

metric usecases

application performance monitoring

spring boot actuator + prometheus + grafana

메트릭: 요청 수, 응답 시간, 에러율, cpu/메모리 사용량 등

활용 방법