[prometheus] record.yml으로 새로운 prometheus rule 생성하기

sujin·2022년 10월 18일
0

prometheus

목록 보기
2/2

prometheus.yml에서 rule file 경로 등록

prometheus.yml 에서 rule_files에 경로를 등록하여 rule을 생성할 수 있다.

prometheus.yml을 통해서 metric data를 긁어오는 간격, rule file, alert manager, scrape해올 job에 대한 config등을 등록 할 수 있다. rule을 새롭게 만들고 싶지 않다면 rule file 경로를 등록하지 않으면 된다.

  • prometheus.yml
rule_files:
	- './record.yml'

다음과 같이 등록한다. 코드에서도 알 수 있듯이 record.yml은 prometheus.yml과 동일한 위치에 존재해야한다.

rule file 만들기

https://prometheus.io/docs/prometheus/latest/configuration/recording_rules/ 참고

  • basic

     groups:
      - name: example
        rules:
      - record: job:http_inprogress_requests:sum
         expr: sum by (job) (http_inprogress_requests)

    example이라는 이름을 가진 그룹에 rules를 등록할 수 있는데 record로 등록한다.
    expr에 작성해야하는 것을 record를 통해서 정의함으로써 "가독성"을 높이며 "구분이 쉽게"만들 수 있다.
    sum by (job) (http_inprogress_requests) 라는 prometheus query 구문을 record로 만들어 query시에 record에 정의한 것처럼 작성하면 expr에 작성한 uery와 동일한 값을 가져온다.

  • 예시를 들어보자.
    나는 node-exporter의 5분단위의 평균 cpu 사용량을 뽑아내고 싶다.

    100 - (avg by (service) (rate(node_cpu_seconds_total{mode="idle"}[5m]))*100) 을 통해서 5분동안의 cpu 평균 사용률을 체크할 것이다. 이렇게 매번 query를 code상으로 진행하다보면 가독성이 낮아지고 복잡한 코드를 만들게 된다. 따라서 우리는 해당 query를 record로 만들어 사용해야한다. 나는 record를 UsageCpu로 정의하였고 expr에 위의 query를 넣어 recroding rule을 작성하였다.

    추가로 다음과 같이 작성할 수 있을 것이다.

    groups:
    	- name: record
       rules:
       	record: UsageCpu
           expr: 100 - (avg by (service) (rate(node_cpu_seconds_total{mode="idle"}[5m]))*100)
           record: UsageMemory
           expr: ((node_memory_MemTotal_bytes{}-node_memory_MemAvailable_bytes{})/node_memory_MemTotal_bytes{})*100
           

작성한 record.yml을 prometheus.yml과 동일한 위치에 저장한다. 이후 prometheus.yml에 위에서 살펴본 것처럼 rule_files 경로를 등록하고 prometheus server에 접속해 record 항목을 조회하면 2개의 record rule이 만들어져있는 것을 확인할 수 있을 것이다.

0개의 댓글