inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실습으로 배우는 프로메테우스 (Prometheus Stack)

6.4.복잡한 PromQL을 손쉽게 조회하도록 해주는 기록 규칙(Recording Rules)

Recording Rules에 label matcher 활용하기

해결된 질문

387

eodahee

작성한 질문수 1

1

안녕하세요. 강의 잘 듣고 있습니다!

혹시 Recording Rules에 label matcher를 동적으로 사용하는 방법도 있을까요?(실무에 적용하려면 필요한 방법 같아 질문드립니다.)

label에 대한 value들이 매우 많은 상황이라면 expr은 거의 동일하기 때문에 여러 rule를 생성하는 것은 옳지 않은 것 같습니다.

예를들어 아래와 같은 방식입니다.

record : container:memory_working_set:topk3{pod=~"$pod"}
expr : topk(3, sum(container_memory_working_set_bytes{pod=~"$pod"}/1024/1024) by (pod))

kubernetes prometheus

답변 1

1

문성주

안녕하세요. eodahee 님

결론을 먼저 말씀드리자면 기록 규칙(record rule)에 레이블 매처를 사용할 수 있는 방법은 없습니다.

이렇게 말씀드린 이유는 아래 문서에서 말하는 내용을 근거로 합니다.

문서 내용을 요약하여서 설명 드리면, 기록 규칙은 프로메테우스 서버를 통해서 쿼리를 실행할 때, 기록 규칙을 통해 미리 사전에 계산된 메트릭을 조회하여 프로메테우스 서버의 부하를 낮추기 위해서 사용합니다.

따라서, 문의 주신 내용에 따라서 레이블 셀렉터를 생성해서 expr을 쓸 경우에는 모든 조건에 대해서 기록 규칙을 작성해야 합니다.

record : container:memory_working_set:topk3{pod=~"$pod"}
expr : topk(3, sum(container_memory_working_set_bytes{pod=~"$pod"}/1024/1024) by (pod))

여기서 질문자 님께서 우려하시는 부분이 기록 규칙을 만들기 위해서 특정 패턴에 부합하는 조건을 모두 기록 규칙을 작성해야 하는가? 로 보여집니다.

이 문제를 해결하기 위해서 오픈소스 커뮤니티에서는 데이터 템플리팅 언어(Data Templating Language)를 사용합니다.

대표적으로 구글이 제공하는 jsonnetcuelang이라고 하는 언어가 존재합니다.

부가적으로 저희가 실습에서 사용하는 helm 또한 데이터 템플리팅 도구로 볼 수 있습니다.

이러한 언어로 생성되어야 하는 기록 규칙에 대한 패턴을 작성해서 expr과 record를 생성(Generate) 하는 과정을 통해 번거로움을 해소할 수 있습니다.

대표적으로 오픈소스 커뮤니티에서는 위에 설명 드린 데이터 템플리팅 언어로 mixin을 제공하여 이와 같은 구성의 번거로움 과정을 해결하는 사례가 있습니다.

궁금증을 해결하시는데 도움이 되었으면 좋겠습니다.

오늘 하루도 즐거운 하루 보내시기 바랍니다.

감사합니다.

문성주 드림

2

eodahee

아하 데이터 템플리팅 언어로 해결 가능하군요..! 좋은 답변 감사드립니다🙂

남은 강의도 열심히 공부하겠습니다!

thanos 관련 강의는 고려 중이신지 궁금합니다.

0

77

3

k get ipaddresspools.metallb.io -A No resources found

0

80

1

설치 과정 문의

0

82

2

Unable to connect to the server: dial tcp 192.168.1.10:6443: i/o timeout

0

148

3

vmware fusion 설치

0

335

4

vagrant up 실행 시 에러

0

154

2

Mac m3, vmware fusion k8s, prometheus 설치 문제

0

188

1

Apple Silicon에서 버츄얼 박스 세팅

0

202

2

prometheus 설치 방법 문의드립니다.

0

374

2

habor metric 노출 관련 질문

0

178

2

external-ip가 pending 상태

0

176

2

kubectl 명령어 실행시

0

266

1

ssh 연결 타임아웃

0

268

1

[4.5] - 익스포터의 종류 내용

0

148

1

launchctl-load-vmware-utility 에러

1

707

2

operator alertmanager 연결 관련 문의

0

274

1

[A.001] prometheus-force-installer.sh 내용중 설치경로 변경요청건

0

246

1

[7.1][7.2] OS 교체에 따른 yum -> apt-get 변경 요청 건

0

183

1

[6.3] create-certificate.sh, 5.docker-image-pullpush-to-harbor.sh 실행시 에러발생건

0

382

2

[2.11] prometheus-installer-15s.sh 설치시 repo edu not found 발생 이슈

0

260

1

tabby터미널 창이 안뜨는 문제

0

697

1

맥(arm)으로 환경 구성시 필요한 사양이 궁금합니다.

0

254

1

helm으로 프로메테우스 설치 시 PVC 관련 질문

0

516

2

인프라 설치 파일을 어디서 받아야하나요?

0

286

1