Prometheus PromQL document 훑어보기
Metric types
Counter
다시 시작할 때 값 증가하거나 0으로 재설정 할 수 있는 누적되는 매트릭
구간별로 변화율 파악에 사용하여 특정 값이 어느 정도로 빠르게 증가 추세를 보이고 있는지 확인 할 수 있음
- 사용 예시 매트릭: 요청 수, 완료된 작업 수, 오류 수 등을 나타낼 수 있음
- 사용되면 안 되는 경우: 감소 할 수 있는 값(실행 중인 프로세스 수)
Gauge
임의로 오르내릴 수 있는 단일 수치를 나타내는 매트릭
일반적으로 온도나 현재 메모리 사용량과 같은 측정 값에 사용됨
Histogram
https://prometheus.io/docs/concepts/metric_types/#histogram
Summary
https://prometheus.io/docs/concepts/metric_types/#summary
Data types
Instant vector
특정 시점에 대한 시계열 집합, 모두 동일한 타임스탬프를 가짐
Range vector
시간 경과에 따른 범위를 포함하는 시계열 집합
Scalar
a simple numeric floating point value
String
a simple string value; currently unused
Selectors
Label Matcher
- =: Equal
- !=: Not equal
- =~: Regex-match
- !~: Not regex-match
Modifier
- offset
- offset modifier를 사용하면 instant, range vector의 time offset을 수정 할 수 있음
- 5분전 데이터 표시
http_requests_total offset 5m // modifier는 selector 바로 다음에 사용해야 함 sum(http_requests_total{method="GET"} offset 5m) // GOOD. sum(http_requests_total{method="GET"}) offset 5m // INVALID.
- @modifier
- 특정 시점(유닉스 시간)의 데이터를 쿼리 할 수 있음
http_requests_total @ 1609746000
- 특정 시점(유닉스 시간)의 데이터를 쿼리 할 수 있음
Operators
Binary operators
Arithmetic binary operators
- + (addition)
- - (subtraction)
- * (multiplication)
- / (division)
- % (modulo)
- ^ (power/exponentiation)
Comparison binary operators
- == (equal)
- != (not-equal)
- > (greater-than)
- < (less-than)
- >= (greater-or-equal)
- <= (less-or-equal)
Logical/set binary operators
- and (교집합)
- or (합집합)
- unless (차집합)
- ex) exception은 None 인데 status는 200 이 아닌 집합
http_server_requests_seconds_count{exception="None"} unless http_server_requests_seconds_count{status="200"}
- ex) exception은 None 인데 status는 200 이 아닌 집합
Aggregation operators
- sum (calculate sum over dimensions)
- min (select minimum over dimensions)
- max (select maximum over dimensions)
- avg (calculate the average over dimensions)
- count (count number of elements in the vector)
- bottomk (smallest k elements by sample value)
- topk (largest k elements by sample value)
without, by 절
- without: 입력한 label을 결과에서 제거
- by: without과 반대로 by절에 나열되지 않은 label 삭제
Functions
- rate()
- range vector에서 시계열의 평균 증가율 계산
- irate()
- range vector에서 시계열의 순간 증가율 계산
- 마지막 두 데이터를 사용하여계산
- predict_linear()
- range vertor를 기반으로 [simple linear regression]를 사용하여 지금부터 일정 시간 이후에 값을 예측
// 10분간 메모리 사용량을 사용하여 1시간 후 데이터 예측 predict_linear(jvm_memory_used_bytes[10m], 3600)
- range vertor를 기반으로 [simple linear regression]를 사용하여 지금부터 일정 시간 이후에 값을 예측
- <aggregation>_over_time()
참고
Prometheus 설치 없이 PromQL 조회 해보기
PromLens 데모페이지에 접속하면 PromQL을 사용해 데이터를 조회 해볼 수 있다.
PromQL을 학습할때 유용하다.
PromQL Cheat Sheet
기본적인 쿼리 사용 예시를 볼 수 있게 정리해둔 페이지: PromQL Cheat Sheet