소개
PromQL 기본 사항에 대한 실습에 오신 것을 환영합니다. Prometheus 는 강력한 오픈 소스 모니터링 및 알림 도구이며, 그 쿼리 언어인 PromQL 은 Prometheus 의 핵심입니다. PromQL 을 사용하면 시계열 데이터를 실시간으로 선택하고 집계할 수 있습니다.
이 실습에서는 Node Exporter 로부터 메트릭을 적극적으로 수집하는 Prometheus 서버로 구성된 사전 구성된 환경에서 작업하게 됩니다. 여러분의 목표는 이 데이터를 쿼리하기 위한 PromQL 의 기본 구문을 학습하는 것이며, 간단한 메트릭 선택부터 시작하여 함수와 필터를 사용한 더 고급 쿼리로 진행할 것입니다.
제공된 환경 이해하기
이 단계에서는 실습 환경에 익숙해집니다. 설정 프로세스에서 이미 두 개의 Docker 컨테이너가 시작되었습니다. 별도의 설정 작업은 필요하지 않습니다.
두 컨테이너는 다음과 같습니다.
node-exporter: 이 컨테이너는 실행 중인 호스트 머신에서 다양한 하드웨어 및 커널 관련 메트릭을 노출하는 역할을 합니다.prometheus: 이것은 Prometheus 서버 자체입니다.node-exporter로부터 메트릭을 "스크랩"(수집) 하여 시계열 데이터베이스에 저장하도록 구성되어 있습니다.
터미널에서 docker ps 명령을 실행하여 두 컨테이너가 모두 실행 중인지 확인할 수 있습니다.
docker ps
다음과 유사한 출력을 볼 수 있으며, prometheus 및 node-exporter 컨테이너가 모두 "Up" 상태로 나열됩니다.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
486db39ca176 prom/prometheus "/bin/prometheus --c…" 9 seconds ago Up 8 seconds 0.0.0.0:9090->9090/tcp, :::9090->9090/tcp prometheus
3f02110c8fde prom/node-exporter "/bin/node_exporter" 11 seconds ago Up 8 seconds 0.0.0.0:9100->9100/tcp, :::9100->9100/tcp node-exporter
이는 모니터링 스택이 준비되었음을 확인시켜 줍니다. 다음 단계에서는 Prometheus 사용자 인터페이스에 액세스하여 이러한 메트릭 쿼리를 시작합니다.
Prometheus UI 에서 Expression Browser 접근
이 단계에서는 Prometheus 웹 UI 에 접속하여 PromQL 쿼리를 실행하는 주요 도구인 Expression Browser 를 찾습니다.
Prometheus 컨테이너의 웹 서버는 9090 포트에서 실행되며, 실습 환경에서 자동으로 접근 가능하도록 설정되어 있습니다.
- LabEx 인터페이스에서
+버튼을 클릭하고 Web Service를 선택합니다. - 포트에
9090을 입력하고 나타나는 새 탭을 엽니다.
이 작업을 통해 실습 환경 내 별도의 탭에서 Prometheus UI 가 열립니다. 기본적으로 Graph 페이지에 접속하게 됩니다. 이 페이지에서 Expression이라고 표시된 텍스트 입력 필드를 볼 수 있습니다. 이곳이 바로 이 실습에서 모든 PromQL 쿼리를 입력하고 실행할 Expression Browser 입니다.

이제 쿼리를 실행할 위치를 알았으니, 첫 번째 쿼리를 작성할 준비가 되었습니다.
node_cpu_seconds_total 과 같은 기본 쿼리 실행
이 단계에서는 메트릭을 선택하기 위한 첫 번째 기본 PromQL 쿼리를 실행합니다. PromQL 에서 가장 간단한 쿼리는 메트릭 이름 자체입니다. 이렇게 하면 해당 메트릭 이름을 가진 모든 시계열 (time series) 이 선택됩니다.
이전 단계에서 열었던 Prometheus UI 의 Expression Browser 로 이동합니다.
- Expression 입력 필드에 다음 메트릭 이름을 입력합니다.
node_cpu_seconds_total
- Execute 버튼을 클릭합니다.
실행 후 그래프 아래의 Table 보기에서 결과를 확인합니다. 시계열 목록이 표시됩니다.
node_cpu_seconds_total{cpu="0", instance="node-exporter:9100", job="node", mode="idle"} 3456.78
node_cpu_seconds_total{cpu="0", instance="node-exporter:9100", job="node", mode="iowait"} 12.34
node_cpu_seconds_total{cpu="0", instance="node-exporter:9100", job="node", mode="system"} 56.78
...
이 결과에 대해 자세히 살펴보겠습니다.
node_cpu_seconds_total: 이것은 메트릭 이름입니다. CPU 가 다양한 모드에서 보낸 총 시간을 추적하는counter를 나타냅니다.{cpu="0", mode="idle", ...}: 이것은 레이블 (labels) 입니다. 레이블은 시계열을 고유하게 식별하는 키 - 값 쌍입니다. 여기서는 각 CPU 코어 (cpu="0") 와 각 모드 (mode="idle",mode="system"등) 에 대한 다른 시계열을 볼 수 있습니다.3456.78: 이것은 해당 특정 시계열에 대해 기록된 최신 값입니다. 카운터이므로 이 값은 시간이 지남에 따라 증가하기만 합니다.
참고: 최신 값이 보이지 않으면 페이지 오른쪽 모서리에 있는 Labby 대화 상자를 클릭하여 임시로 닫으십시오.
특정 메트릭의 모든 시계열에 대해 Prometheus 를 성공적으로 쿼리했습니다.
rate 함수 및 레이블 필터 적용
이 단계에서는 레이블 필터와 rate() 함수를 사용하여 쿼리를 개선하고 더 의미 있는 데이터를 얻습니다. 카운터의 원시 값은 종종 유용하지 않으며, 우리는 일반적으로 변화율에 더 관심이 있습니다.
먼저, 결과를 필터링하여 idle 모드에서 소비된 CPU 시간만 보도록 하겠습니다. 이는 쿼리에 중괄호 {}를 사용하여 레이블 선택자 (label selector) 를 추가하여 수행할 수 있습니다.
- Expression Browser 에 다음 쿼리를 입력하고 실행합니다.
node_cpu_seconds_total{mode="idle"}
이 쿼리는 이제 mode 레이블이 정확히 idle인 시계열만 반환합니다.
다음으로, 이 카운터의 초당 변화율을 계산해 보겠습니다. 이를 위해 rate() 함수를 사용합니다. rate() 함수는 변화율을 계산할 기간을 알아야 합니다. 이는 *범위 벡터 선택자 (range vector selector)*를 사용하여 지정하며, 예를 들어 지난 5 분 동안은 [5m]과 같이 사용합니다.
- 이제 쿼리를
rate()함수로 감싸고 5 분 범위 선택자를 추가하도록 수정합니다. 최종 쿼리를 실행합니다.
rate(node_cpu_seconds_total{mode="idle"}[5m])
이 고급 쿼리에 대해 자세히 살펴보겠습니다.
node_cpu_seconds_total{mode="idle"}: 이것은 원하는 메트릭과 레이블을 필터링하는 *순간 벡터 선택자 (instant vector selector)*입니다.[5m]: 이것은 *범위 선택자 (range selector)*이며, Prometheus 에게 선택된 시계열에 대해 지난 5 분간의 모든 데이터 포인트를 가져오도록 지시합니다.rate(...): 이것은 5 분간의 데이터 범위를 가져와 카운터가 증가한 초당 평균 변화율을 계산하는 함수입니다.
결과는 더 이상 큰 카운터 값이 아니라, 일반적으로 0 과 1 사이의 값 (단일 CPU 코어의 경우) 입니다. 0.95라는 값은 지난 5 분 동안 CPU 가 평균적으로 95% 유휴 상태였다는 것을 의미합니다. 이는 모니터링에 훨씬 더 유용한 정보입니다.
요약
PromQL 기본 사항에 대한 이 실습을 완료하신 것을 축하드립니다! 라이브 Prometheus 인스턴스를 성공적으로 쿼리하고 원시 데이터를 의미 있는 정보로 변환했습니다.
이 실습에서는 다음을 배웠습니다.
- Prometheus UI 에서 Expression Browser 로 이동하는 방법.
- 메트릭에 대한 모든 시계열을 선택하기 위한 기본 쿼리 실행 방법.
- 메트릭 이름과 고유한 레이블 집합을 포함한 시계열의 구조 이해.
- 레이블 선택자 (
{...}) 를 사용하여 시계열 필터링. rate()함수와 범위 벡터 선택자 ([5m]) 를 사용하여 카운터의 변화율 계산.
이것들은 Prometheus 작업을 위한 기본적인 구성 요소입니다. 여기에서부터 PromQL 이 제공하는 다양한 다른 함수와 연산자를 탐색하여 강력하고 통찰력 있는 모니터링 대시보드와 알림을 구축할 수 있습니다.



