OpenMetrics 탐색기
이 문서는 OpenMetrics 탐색기 메뉴에서 PromQL 쿼리로 메트릭을 조회하고 차트·테이블로 시각화하는 방법을 안내합니다. 처음 PromQL을 쓰는 사용자도 단계적으로 따라 할 수 있도록 기본 → 함수 → 실전 예제 순서로 정리했습니다.
주요 기능
- PromQL 쿼리를 통한 메트릭 조회
- Graph/Table 뷰로 데이터 시각화
- 시간 범위 선택 시 자동으로 PromQL에 시간 입력
- 실시간 메트릭 모니터링
화면 구성
- 상단: 시간 범위 선택기, 쿼리 입력창
- 중앙: Graph/Table/Stacked Bar 뷰 전환 버튼
- 하단: 조회 결과 표시 (그래프 또는 테이블)
왜 PromQL이 필요한가요?
OpenMetrics는 Prometheus 메트릭 포맷을 기반으로 다양한 시스템과 애플리케이션의 시계열 지표를 수집합니다. Prometheus는 오픈소스 모니터링 도구로, CPU 사용률, 메모리 사용량, HTTP 요청 수, 에러율 등과 같은 수치 기반의 시간 흐름 데이터를 메트릭 지표로 저장합니다.
이러한 지표들은 대부분 수초 단위로 지속적으로 수집되며, 시간에 따라 끊임없이 변화하는 '시계열 데이터(time-series data)'의 형태를 가집니다.
하지만 단순히 데이터를 수집하는 것만으로 "지금 서비스가 정상인가?", "에러 비율이 평소보다 높아졌는가?", "어떤 API가 느려졌는가?" 같은 의미 있는 분석이 어렵습니다.
그래서 OpenMetrics 탐색기에서 수집된 메트릭을 분석할 수 있는 쿼리 언어가 필요하고, 그 역할을 하는 것이 바로 PromQL(Prometheus Query Language)입니다.
PromQL을 사용하면 다음과 같은 분석이 가능합니다.
- 실시간 모니터링: 현재 시스템 상태를 즉시 확인 (현재 CPU 사용률, 활성 사용자 수 등)
- 추세 분석: 시간에 따른 변화 패턴 파악 (최근 1시간 동안 초당 요청 수 증가율)
- 비교 분석: 여러 서버나 서비스 간의 지표 비교 (서버별 에러율, 지역별 응답 시간)
- 집계 및 계산: 복잡한 수학 연산과 통계 계산 (전체 에러율, 평균 응답 시간, 상위 10개 느린 API)
- 알림 조건 설정: 특정 임계값 초과 시 자동 알림 (에러율 5% 이상, 메모리 사용률 90% 이상)
PromQL 사용자 가이드
쿼리 실행 방식
표 | PromQL 쿼리 실행 방식
| 쿼리 | 설명 |
|---|---|
| Instant Query (즉시 쿼리) | 특정 시점의 데이터를 조회함. Table 탭에서 사용됨 |
| Range Query (범위 쿼리) | 시작 시간과 종료 시간 사이의 데이터를 일정한 간격 으로 조회함 |
데이터 타입
PromQL 표현식은 4가지 타입으로 평가됩니다.
표 | PromQL 데이터 타입
| 타입 | 설명 |
|---|---|
| Instant Vector | 각 시계열에서 단일 샘플을 포함하는 시계열 집합 (모두 동일한 타임스탬프) |
| Range Vector | 각 시계열에서 시간 범위의 데이터 포인트를 포함하는 시계열 집합 |
| Scalar | 단순한 숫자 값 |
| String | 단순한 문자열 값 |
기본 사용법
1. 메트릭 선택(Instant Vector Selectors)
기본 메트릭 조회
nginx_http_response_count_total
레이블 필터링
nginx_http_response_count_total{status="200"}
여러 레이블 조건
nginx_http_response_count_total{method="GET", status="200"}
2. 레이블 매칭 연산자
표 | 레이블 매칭 연산자
| 연산자 | 설명 |
|---|---|
| = | 레이블 값이 정확히 일치 |
| != | 레이블 값이 일치하지 않음 |
| =~ | 레이블 값이 정규표현식과 일치 |
| !~ | 레이블 값이 정규표현식과 일치하지 않음 |
정규표현식 예제
# staging, testing, development 환경만 조회
nginx_http_response_count_total{environment=~"staging|testing|development"}
# GET 메소드를 제외한 모든 메소드
nginx_http_response_count_total{method!="GET"}
# rep로 시작하는 replica 조회
nginx_http_response_count_total{replica=~"rep.*"}