sonumb

VictoriaMetrics 함수 본문

개발자 이야기

VictoriaMetrics 함수

sonumb 2025. 8. 19. 12:59

VictoriaMetrics 함수들

함수명 함수 문법과 설명 예시와 그의 설명&해석 의의
ascent_over_time ascent_over_time(series[d])
시간 윈도우 내에서 상승한 값들의 합계를 계산
ascent_over_time(cpu_usage[5m])
→ CPU 사용률이 증가한 부분들만 합산
예: [10, 15, 12, 20] → (15-10) + (20-12) = 13
CPU 사용률, 메모리 사용량 등이 얼마나 증가했는지 순증가분만 측정하고 싶을 때
changes_prometheus changes_prometheus(series[d])
Prometheus의 changes 함수와 유사하지만 1e-12 이하 변화는 무시
changes_prometheus(counter[1h])
→ 카운터 값이 실제로 변한 횟수 반환
미세한 부동소수점 오차는 변화로 간주하지 않음
메트릭이 실제로 의미있게 변화한 횟수를 정확히 측정하고 싶을 때
count_values_over_time count_values_over_time("label", series[d])
각 값의 출현 횟수를 세어 새로운 레이블로 반환
count_values_over_time("status", http_responses[1h])
→ 각 응답 코드별로 새로운 시리즈 생성
status="200": 150, status="404": 5 등
HTTP 상태 코드별, 에러 타입별 등 값의 분포를 히스토그램처럼 보고 싶을 때
count_eq_over_time count_eq_over_time(series[d], scalar)
특정 값과 같은 샘플의 개수
count_eq_over_time(service_status[1h], 1)
→ 서비스가 정상(1) 상태였던 횟수
예: 60개 샘플 중 50개가 1이면 50 반환
특정 상태나 값이 몇 번 발생했는지 세고 싶을 때
count_gt_over_time count_gt_over_time(series[d], scalar)
임계값보다 큰 샘플의 개수
count_gt_over_time(cpu_usage[5m], 80)
→ CPU 사용률이 80% 초과한 횟수
성능 임계치 위반 빈도 측정
성능 임계치를 초과한 빈도를 모니터링하고 싶을 때
decreases_over_time decreases_over_time(series[d])
값이 감소한 횟수를 계산
decreases_over_time(memory_available[1h])
→ 가용 메모리가 줄어든 횟수
메모리 해제 패턴 분석 가능
리소스 감소 패턴이나 해제 빈도를 분석하고 싶을 때
default_rollup default_rollup(series[d])
마지막 샘플 값을 반환 (기본 rollup 동작)
default_rollup(temperature[1m])
→ 1분 윈도우의 마지막 온도 값
현재 상태를 나타내는 기본값
시계열의 현재 상태최신 값을 확인하고 싶을 때
delta_prometheus delta_prometheus(series[d])
첫 값과 마지막 값의 차이 (보간 없음)
delta_prometheus(counter[5m])
→ 5분간 카운터 증가분
Prometheus delta와 달리 보간하지 않음
정확한 순증가분을 보간 없이 단순히 계산하고 싶을 때
deriv_fast deriv_fast(series[d])
첫 번째와 마지막 샘플로 빠른 미분 계산
deriv_fast(disk_usage[1h])
→ 디스크 사용량 증가 속도 (bytes/sec)
간단하고 빠른 변화율 계산
시계열의 변화 속도를 빠르게 근사치로 계산하고 싶을 때
descent_over_time descent_over_time(series[d])
감소한 값들의 합계를 계산
descent_over_time(queue_size[5m])
→ 큐 크기가 감소한 총량
예: [100, 80, 90, 70] → (100-80) + (90-70) = 40
큐 처리량, 백로그 감소량 등 감소분의 총합을 측정하고 싶을 때
duration_over_time duration_over_time(series[d], max_interval)
최대 간격 이하의 지속 시간 합계
duration_over_time(service_up[1h], 300)
→ 5분 이하 간격으로 서비스가 활성화된 총 시간
긴 다운타임은 제외하고 계산
서비스 실제 가동 시간을 정확히 측정하고 싶을 때
distinct_over_time distinct_over_time(series[d])
고유한 값들의 개수
distinct_over_time(user_count[1h])
→ 1시간 동안 관찰된 서로 다른 사용자 수
중복 제거된 고유값 카운트
고유 사용자, 고유 에러 등 중복 제거된 개수를 알고 싶을 때
first_over_time first_over_time(series[d])
첫 번째 유효한 샘플 값
first_over_time(startup_time[1h])
→ 시간 윈도우 내 첫 번째 측정값
시작 상태나 초기값 확인
시스템 시작 상태초기 조건을 확인하고 싶을 때
geomean_over_time geomean_over_time(series[d])
기하평균 계산
geomean_over_time(latency[5m])
→ 응답 시간의 기하평균
곱셈적 증가 패턴에 적합한 평균
응답 시간, 처리율 등 곱셈적 특성을 가진 메트릭의 평균을 구하고 싶을 때
histogram_over_time histogram_over_time(series[d])
자동 버킷팅 히스토그램 생성
histogram_over_time(response_time[1h])
→ 응답시간을 자동으로 버킷화
vmrange 레이블로 범위 구분
메트릭의 분포를 자동으로 히스토그램화해서 보고 싶을 때
hoeffding_bound_lower/upper hoeffding_bound_lower(phi, series[d])
Hoeffding 부등식 기반 신뢰구간
hoeffding_bound_upper(0.95, latency[1h])
→ 95% 신뢰도로 지연시간 상한선
통계적 이상치 탐지에 활용
메트릭의 통계적 신뢰구간을 계산해서 이상치를 탐지하고 싶을 때
ideriv ideriv(series[d])
카운터 리셋을 고려한 순간 미분
ideriv(requests_total[5m])
→ 초당 요청 증가율 (리셋 고려)
카운터 재시작 시에도 정확한 비율
카운터의 순간 변화율을 리셋에 관계없이 정확히 구하고 싶을 때
increase_prometheus increase_prometheus(series[d])
Prometheus 스타일 증가량 (보간 없음)
increase_prometheus(http_requests[1h])
→ 1시간간 HTTP 요청 증가량
보간 없는 순수 증가분
정확한 증가량을 보간 없이 단순히 계산하고 싶을 때
increase_pure increase_pure(series[d])
0부터 시작한다고 가정한 순증가량
increase_pure(new_counter[5m])
→ 새로 생성된 카운터의 순증가량
NaN을 0으로 처리
새로운 카운터의 증가량을 0 기준으로 계산하고 싶을 때
increases_over_time increases_over_time(series[d])
값이 증가한 횟수
increases_over_time(memory_usage[1h])
→ 메모리 사용량이 증가한 횟수
메모리 할당 빈도 측정
리소스 증가 패턴이나 할당 빈도를 분석하고 싶을 때
integrate integrate(series[d])
시간에 대한 적분값 계산
integrate(power_consumption[1h])
→ 1시간간 총 전력 소비량
값 × 시간 구간의 누적합
총 소비량이나 누적 작업량을 시간 가중으로 계산하고 싶을 때
lag lag(series[d])
마지막 샘플과 현재 시간의 차이
lag(heartbeat[5m])
→ 마지막 하트비트 이후 경과 시간
데이터 지연 시간 측정
데이터가 얼마나 오래된 것인지, 지연 시간을 측정하고 싶을 때
lifetime lifetime(series[d])
첫 샘플부터 마지막 샘플까지의 지속시간
lifetime(session_duration[1h])
→ 세션이 지속된 총 시간
활성 기간 측정
세션, 연결 등이 얼마나 오래 지속되었는지 알고 싶을 때
mad_over_time mad_over_time(series[d])
중앙값 절대 편차 (MAD)
mad_over_time(response_time[1h])
→ 응답시간의 중앙값 기준 편차
이상치에 덜 민감한 분산 측도
평균보다 안정적인 분산 측도로 데이터의 퍼짐 정도를 알고 싶을 때
median_over_time median_over_time(series[d])
중앙값 계산
median_over_time(latency[5m])
→ 지연시간의 중앙값
이상치에 덜 영향받는 중앙 경향
이상치의 영향을 받지 않는 전형적인 값을 알고 싶을 때
mode_over_time mode_over_time(series[d])
최빈값 계산
mode_over_time(error_code[1h])
→ 가장 자주 발생한 에러 코드
동점시 작은 값 선택
가장 흔한 값이나 주요 패턴을 찾고 싶을 때
outlier_iqr_over_time outlier_iqr_over_time(series[d])
IQR 기반 이상치 탐지
outlier_iqr_over_time(cpu_usage[1h])
→ 마지막 값이 IQR 범위를 벗어나면 해당 값 반환
사분위수 기반 이상치 탐지
통계적으로 이상한 값이 있는지 탐지하고 싶을 때
range_over_time range_over_time(series[d])
최댓값과 최솟값의 차이
range_over_time(temperature[24h])
→ 일일 온도 변화 폭
변동성의 절대적 크기
메트릭의 변동 폭이나 변동성 크기를 절대값으로 알고 싶을 때
rate_over_sum rate_over_sum(series[d])
총합을 시간으로 나눈 비율
rate_over_sum(bytes_transferred[1h])
→ 시간당 평균 전송량
sum_over_time / 시간 윈도우
평균 처리율이나 단위 시간당 총량을 계산하고 싶을 때
rate_prometheus rate_prometheus(series[d])
Prometheus 스타일 비율 (보간 없음)
rate_prometheus(requests_total[5m])
→ 초당 요청 비율 (보간 없음)
단순 증가분 / 시간
정확한 비율을 보간 없이 단순히 계산하고 싶을 때

Rollup 함수들

함수명 함수 문법과 설명 예시와 그의 설명&해석 의의
rollup rollup(series[d], "op")
min, max, avg를 동시에 계산
rollup(cpu_usage[1h])
→ 3개 시리즈 생성: rollup="min", "max", "avg"
한 번에 여러 통계량 제공
CPU 사용률의 최솟값, 최댓값, 평균을 한번에 보고 싶을 때
rollup_candlestick rollup_candlestick(series[d])
OHLC (시가,고가,저가,종가) 계산
rollup_candlestick(stock_price[1h])
→ rollup="open", "high", "low", "close"
캔들스틱 차트용 데이터
주가, 메트릭의 OHLC 패턴을 차트로 시각화하고 싶을 때
rollup_delta rollup_delta(series[d])
연속된 값들의 차이에 대한 min, max, avg
rollup_delta(memory_usage[1h])
→ 메모리 변화량의 최소/최대/평균
변화 패턴 분석
메트릭 변화량의 분포를 상세히 분석하고 싶을 때
rollup_deriv rollup_deriv(series[d])
미분값들에 대한 min, max, avg
rollup_deriv(network_traffic[30m])
→ 네트워크 변화율의 통계량
트래픽 변화 속도 분석
메트릭 변화 속도의 분포를 파악하고 싶을 때
rollup_increase rollup_increase(series[d])
카운터 증가량에 대한 rollup_delta
rollup_increase(requests_total[1h])
→ 요청 증가량의 최소/최대/평균
카운터 리셋 고려
카운터의 증가 패턴을 리셋 고려해서 분석하고 싶을 때
rollup_rate rollup_rate(series[d])
비율들에 대한 rollup_deriv
rollup_rate(errors_total[1h])
→ 에러율의 최소/최대/평균 비율
비율 변화의 통계량
비율 변화의 분포를 카운터 리셋 고려해서 분석하고 싶을 때
rollup_scrape_interval rollup_scrape_interval(series[d])
스크랩 간격에 대한 min, max, avg
rollup_scrape_interval(up[1h])
→ 모니터링 간격의 통계량
데이터 수집 품질 분석
모니터링 품질이나 수집 간격의 일관성을 분석하고 싶을 때

기타 유틸리티 함수들

함수명 함수 문법과 설명 예시와 그의 설명&해석 의의
scrape_interval scrape_interval(series[d])
평균 스크랩 간격 계산
scrape_interval(prometheus_metrics[1h])
→ 평균 15초마다 수집됨을 확인
모니터링 설정 검증
모니터링 간격이 설정대로 작동하는지 확인하고 싶을 때
share_eq_over_time share_eq_over_time(series[d], value)
특정 값의 비율
share_eq_over_time(service_status[1h], 1)
→ 서비스가 정상(1)이었던 비율
예: 0.95 = 95% 가동률
가동률이나 특정 상태의 비율을 백분율로 알고 싶을 때
stale_samples_over_time stale_samples_over_time(series[d])
Stale NaN 샘플 개수
stale_samples_over_time(old_metrics[1h])
→ 더이상 수집되지 않는 메트릭 수
데이터 품질 모니터링
데이터 수집 중단이나 메트릭 소실을 탐지하고 싶을 때
sum2_over_time sum2_over_time(series[d])
제곱합 계산
sum2_over_time(error_rate[1h])
→ 에러율 제곱의 합계
분산 계산의 중간 단계
분산이나 표준편차 계산의 중간 단계로 사용하고 싶을 때
tfirst_over_time tfirst_over_time(series[d])
첫 번째 샘플의 타임스탬프
tfirst_over_time(alert_fired[1h])
→ 알럿이 처음 발생한 시각
이벤트 시작 시점 추적
이벤트 시작 시각이나 첫 발생 시점을 추적하고 싶을 때
tlast_over_time tlast_over_time(series[d])
마지막 샘플의 타임스탬프
tlast_over_time(heartbeat[5m])
→ 마지막 하트비트 시각
최종 활동 시점 확인
마지막 활동 시각이나 최종 수신 시점을 확인하고 싶을 때
tlast_change_over_time tlast_change_over_time(series[d])
마지막 변화 시점
tlast_change_over_time(config_version[24h])
→ 설정이 마지막으로 변경된 시각
변경 사항 추적
마지막 변화 시점을 추적해서 변경 사항을 모니터링하고 싶을 때
tmax_over_time tmax_over_time(series[d])
최댓값이 발생한 시각
tmax_over_time(cpu_usage[1h])
→ CPU 최고점이 발생한 시각
피크 발생 시점 분석
성능 피크최고점 발생 시각을 분석하고 싶을 때
tmin_over_time tmin_over_time(series[d])
최솟값이 발생한 시각
tmin_over_time(available_memory[1h])
→ 메모리 최소점 발생 시각
리소스 부족 시점 분석
리소스 부족이나 최저점 발생 시각을 분석하고 싶을 때
zscore_over_time zscore_over_time(series[d])
마지막 값의 Z-score
zscore_over_time(response_time[1h])
→ 현재 응답시간이 평균에서 몇 표준편차 떨어져 있는지
통계적 이상치 탐지
현재 값이 통계적으로 정상 범위에 있는지 판단하고 싶을 때

 

반응형