PromQL을 이용한 서버 모니터링
프로메테우스와 그라파나 설치는 아래 글을 참고하였습니다 !
설치 후 프로메테우스와 그라파나를 실행시켜 줍니다.
cd lightweight-kubernetes-sandbox-cli
bash packages/prometheus/helm.sh --open prom
bash packages/prometheus/helm.sh --open grafana
프로메테우스에 접속하면 첫화면에 아래와 같은 화면이 뜰겁니다
처음에는 Graph 메뉴가 열려있는데 PromQL을 입력하는 쿼리 입력기, PromQL을 실행하는 버튼인 Execute, 그리고 PromQL로 추출한 매트릭 데이터를 시각화해주는 Graph메뉴와 글로 보여주는 Table메뉴 등이 있습니다.
그리고 Status메뉴에서 Targets메뉴로 들어가면 프로메테우스 서버가 수집하는 대상의 상태를 확인가능 합니다.
PromQL 사용법
그럼 PromQL을 이용해서 메트릭 데이터를 가져와보겠습니다!
Graph메뉴에서 아래와 같이 입력합니다
up{job="mysqld-exporter"}
up은 대상이 작동하고 있는지 알려주고, up이라는 메트릭 대상을 검색한 후, job이 mysqld-exporter라는 조건을 추가합니다.
다음 쿼리문이 성공했으면 결과의 오른쪽에서 볼 수 있듯이 1이 나옵니다.
위에서 검색된 결과를 보면 레이블이 container, endpoint, instance, job, namespace, pod, service로 7개가 나온것을 볼 수 있습니다.
검색 조건을 바꿔서 예를 들어 up{instance="10.42.2.85:9104"}로 추출하여도 같은 결과가 나오는 것을 볼 수 있습니다!
메트릭 값의 종류
메트릭 값의 종류에는 카운터, 게이지, 히스토그램, 서머리 타입이 있습니다.
우선 카운터(Counter)란 누적된 값을 표현하는데 사용하는 메트릭 타입으로 이벤트나 오류 등이 급증하는 구간을 파악하기 좋습니다
그리고 게이지(Gauge)는 특정 시점의 값을 표현하는 데 사용하는 메트릭 타입으로 CPU온도나 메모리 사용량 등이 조회하는 순간의 값이 중요해서 주로 사용합니다.
그리고 히스토그램(Histogram)은 사전에 미리 정의한 구간에 있는 메트릭 값의 빈도를 측정하고, 서머리(Summary) 역시 구간안에 있는 메트릭 값의 빈도를 측정하는데 히스토그램과 다른 점은 구간이 지정되는 것이 아니라 프로메테우스 자체적으로 0~1 사이로 구간을 미리 정해 놓습니다.
메트릭 레이블 매처
=, !=, =~, !~와 같이 레이블에 조건을 줘서 검색하는 방법을 레이블 매처(Label Matchers)라 합니다~
=은 레이블 값과 조건에 넣은 값이 같은 결과를 추출합니다.
up{job="mysqld-exporter"}라고 검색하면 job이 mysqld-exporter인 메트릭을 검색합니다
!=은 반대로 레이블 값과 조건에 넣은 값이 다른 결과를 추출합니다
up{job!="mysqld-exporter"}라 검색하면 job이 mysqld-exporter가 아닌 메트릭을 검색합니다
=~은 조건에 맞는 메트릭을 검색합니다
up{job=~"m.+"}이라고 검색하면 job이 m으로 시작하는 메트릭을 검색합니다.
마지막으로 !~는 =~와 반대로 조건에 맞는 메트릭을 제외한 결과를 검색합니다.
up{job!~"m.+"}라 검색할 시 job이 m으로 시작하지 않는 메트릭 데이터를 검색합니다.
PromQL 연산자
PromQL 연산자는 크게 4종류가 있습니다.
첫번째로 비교 연산자에는 ==, !=, >, >=, <, <= 등이 있습니다.
그리고 논리 연산자에는 and, or, unless가 있습니다. and는 교집합, or은 합집합, unless는 차집합입니다.
다음으로 산술 연산자로는 사칙연산(+, -, *, /), 나머지(%), 지수(^)가 있습니다.
마지막으로 집계 연산자로는 평균(avg), 합계(sum), 계수(count)가 있습니다.
비교 연산자
아래와 같이 입력하면 restart한 적이 있는 것만 추출 가능합니다.
kube_pod_container_status_restarts_total>0
PromQL 함수
PromQL에서 사용하는 함수는 아래와 같이 있습니다.
종류 | 용도 | 함수 |
연산 함수 | 수학 연산에 사용 | abs(절댓값), ceil(올림), floor(내림), round(반올림), predict_linear(예측값) |
변환 함수 | 데이터 타입 간 변환에 사용 | scalar(스칼라로 변환), vertor(벡터로 변환), rate(변화율), irate(순간 변화율) 등 |
집계 함수 | 수집된 레인지 벡터의 데이터 집계를 위해 사용 | avg_over_time(평균), sum_over_time(합계), count_over_time(계수) 등 |
참고자료
'Server' 카테고리의 다른 글
[Server] GitHubActions와 Docker 로 CICD 구축하기 (0) | 2024.05.10 |
---|---|
[Server] Docker 이미지를 사용해 EC2 서버에 Spring Boot 배포해보기! (0) | 2024.05.10 |
[Server] Amazon EC2 인스턴스 생성하기 (0) | 2024.05.10 |
[Server] docker 이미지 업로드 시 request access to the resource is denied 오류 발생 할 때 해결법 (0) | 2024.05.10 |
댓글