반응형
Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
Tags
- Pointer
- 커널
- Windows via c/c++
- newSQL
- getopts
- 한빛미디어
- 긴옵션
- 함수포인터
- UNIX Internals
- go
- 약어
- FreeBSD
- 포인터변수
- 구조와 원리
- TiDB
- SQLite
- Programming
- Preprocessor
- TiKV
- Golang
- Symbol
- UNIX
- bash
- 전처리기
- DBMS 개발
- 포인터
- DBMS
- OS 커널
- 컴퓨터 강좌
- kernel
Archives
- Today
- Total
sonumb
VictoriaMetrics 함수 본문
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]) → 현재 응답시간이 평균에서 몇 표준편차 떨어져 있는지 통계적 이상치 탐지 |
현재 값이 통계적으로 정상 범위에 있는지 판단하고 싶을 때 |
반응형