[프로메테우스] PromQL

91Savage·2022년 11월 2일
1

Server

목록 보기
10/24

PromQL

  • Prometheus의 Query 언어, 시계열 데이터 실시간 처리
  • 레이블을 사용하여 데이터 필터
  • 함수를 이용하여 결과 값 도출

https://prometheus.io/docs/prometheus/latest/querying/basics/

데이터 유형

  • Instant vector : 동 시간대 샘플 집합
  • Range vector : 특정 시간 범위의 샘플 집합
  • Scalar : 숫자 (소수점 포함)
  • String : 문자열

메트릭 유형 vs 데이터 유형

  • 메트릭 유형 : 수집되기에 앞서 원하는 결과물을 뽑아내기 위해 데이터 가공
  • 데이터 유형 : PromQL을 통해 얻어낼 수 있는 데이터 형태

ln -sf static_sd.yml prometheus.yml

vi static_sd.yml

scrape_configs:
      - job_name: 'prometheus'
        follow_redirects: false
        scrape_interval: 5s
        scrape_timeout: 1s
        static_configs:
        - targets:
          - server1:9100
          labels:
            region: KR
            env: prod
        - targets:
          - server2:9100
          labels:
            region: KR
            env: dev
        - targets:
          - server3:9100
          labels:
            region: KR
            env: prod

curl localhost:9090/-/reload -XPOST -D /dev/stdout

server1:9090/targets 에서 connection 확인

http://server1:9090/graph 에서

"node_memory_MemFree_bytes" // 가장 최근시간 데이터드의 샘플 집합

"node_memory_MemFree_bytes{instance="localhost:9100"}[1m]" 검색

1분동안 데이터를 시계열로 보여줌

PromQL 연산자

// 검색 두 가지가 동일함
count(up) by(region,env)
count by(region,env) (up)

PromQL 함수

  • increase : 주어진 범위에서의 값 차이
  • rate : 주어진 범위에서의 초당 변화량
  • sort : 오름차순 정렬/내림차순 : sorc_desc
  • time : 수행 시점의 epoch time

increase

increase(node_network_transmit_bytes_total{device="eth0"}[1m])

rate

rate(node_network_transmit_bytes_total{device="eth0"}[1m])

time

time() -node_boot_time_seconds // 현재 시간과 대상서버의 가동시점을 뺸 것, 서버의 가동시간을 초로 보여줌

sort

sort(time() -node_boot_time_seconds) //부팅 시간별로 결과값 정렬

0개의 댓글