Parca 쿼리 편집기

Parca 쿼리 편집기 (Parca query editor)

Parca 쿼리 편집기로 연속 프로파일링(continuous profiling) 데이터를 조회하고 시각화하는 방법을 알려드릴게요. 프로파일 유형 선택기, 자동완성 라벨 선택기, 쿼리 동작을 제어하는 접이식 옵션을 제공합니다.

경고: 이 플러그인은 더 이상 사용되지 않는(deprecated) 상태이며, 앞으로는 중요한 보안 업데이트만 받아요. 지원은 2027년 1월 2일에 종료됩니다.

출처: 문서

본문

시작하기 전에

쿼리 편집기 접근

  1. Grafana에 로그인 → 왼쪽 메뉴에서 Explore 선택
  2. 데이터 소스 드롭다운에서 Parca 데이터 소스 선택

대시보드 패널을 편집할 때 Parca 데이터 소스를 선택해도 접근할 수 있어요.

프로파일 유형 선택기

캐스케이딩 드롭다운에서 프로파일 유형을 선택하세요. 첫 단계는 이름별 그룹, 두 번째 단계는 샘플 유형을 보여줘요. 예: process_cpu 프로파일은 cpusamples 샘플 유형을 가질 수 있어요. 프로파일 유형을 선택해야 쿼리가 유효하며, 쿼리 실행 시 선택하지 않으면 Grafana가 데이터를 반환하지 않아요.

프로파일 유형 ID 형식

각 프로파일 유형의 ID 형식은 name:sampleType:sampleUnit:periodType:periodUnit입니다. Delta 프로파일 유형에는 추가 :delta 접미사가 붙어요. 이 ID를 직접 만들 필요는 없고 캐스케이딩 드롭다운이 선택을 처리해줘요.

프로파일 유형 ID 설명
process_cpu:samples:count:cpu:nanoseconds 샘플 수를 측정하는 CPU 프로파일
memory:alloc_objects:count:space:bytes 할당 객체를 측정하는 메모리 프로파일
process_cpu:cpu:nanoseconds:cpu:nanoseconds:delta 나노초를 측정하는 Delta CPU 프로파일

라벨 선택기

라벨 선택기로 프로파일을 라벨로 필터링할 수 있어요. 편집기는 라벨 이름·값 모두 자동완성을 제공합니다.

문법

Parca는 Prometheus와 유사한 구문을 사용해요. {key="value"} 형식으로 중괄호 안에 라벨 매처를 넣으세요.

연산자 설명 예시
= 같음 {job="my-service"}
!= 같지 않음 {job!="test-service"}
=~ 정규 표현식 일치 {job=~"prod-.*"}
!~ 부정 정규 표현식 일치 {job!~"test-.*"}

여러 라벨 매처를 콤마로 결합할 수 있어요:

{job="my-service", instance=~"10.0.0.*"}

라벨 선택기를 비워두면 선택된 유형의 모든 프로파일을 필터 없이 쿼리해요. 추가 문법은 Parca 문서를 참고하세요.

자동완성

{, ,, [, (, =, ~, 공백, " 문자로 자동완성이 트리거됩니다.

  • 라벨 이름: 중괄호 안이나 콤마 뒤 입력 시 제안
  • 라벨 값: 라벨 이름 뒤에 =="를 입력한 뒤 제안

키보드 단축키

단축키 동작
Shift + Enter 현재 입력으로 쿼리 실행

쿼리 유형

Options 섹션을 펼쳐 쿼리 유형을 선택하세요. 쿼리 유형이 반환 데이터와 시각화 방식을 제어해요.

쿼리 유형 설명
Metric 시계열로 시각화되는 집계 메트릭 데이터 반환
Profile 플레임 그래프로 시각화되는 병합 프로파일 반환
Both 메트릭·프로파일 데이터 모두 반환. Explore에서만 가능

참고: Both 옵션은 Explore에서만 사용할 수 있어요. 대시보드 패널은 시각화 유형을 하나만 지원하므로 Metric 또는 Profile만 선택할 수 있어요. Both로 설정된 쿼리를 Explore에서 대시보드로 옮기면 Grafana가 자동으로 Profile로 바꿉니다.

쿼리에서 템플릿 변수 사용

라벨 선택기 필드는 Grafana 템플릿 변수를 지원해요. $job$instance 같은 변수를 동적·재사용 가능한 대시보드에 쓸 수 있습니다. 자세한 내용은 Parca 템플릿 변수를 참고하세요.

쿼리 예시

특정 서비스의 CPU 프로파일 쿼리:

  1. 프로파일 유형 process_cpu > cpu 선택
  2. 라벨 선택기로 서비스 필터링: {job="my-service"}
  3. 쿼리 유형 Profile로 플레임 그래프, 또는 Metric으로 시간에 따른 CPU 사용량 보기

인스턴스 간 프로파일 비교:

  1. 프로파일 유형 process_cpu > samples 선택
  2. 서비스·인스턴스 필터링: {job="my-service", instance="10.0.0.1:7070"}
  3. 두 번째 쿼리(+ Add query) 추가, 다른 인스턴스: {job="my-service", instance="10.0.0.2:7070"}
  4. 둘 다 Metric으로 설정해 인스턴스 간 시계열 비교

메모리 할당 핫스팟 찾기:

  1. 프로파일 유형 memory > alloc_objects 선택
  2. (선택) 서비스 필터: {job="api-gateway"}
  3. 쿼리 유형 Profile로 어떤 함수가 객체를 가장 많이 할당하는지 보여주는 플레임 그래프 보기
  4. 시간 범위를 조정해 특정 인시던트 구간으로 좁히기

프로파일 쿼리 결과

프로파일은 플레임 그래프로 시각화돼요. 플레임 그래프 문서를 참고하세요. Parca는 선택된 시간 범위에 걸쳐 집계된 프로파일을 반환해요. 시간 범위가 커지면 플레임 그래프의 절대값도 커지지만 상대값은 의미를 유지합니다. 단일 Parca 스크랩 간격 지점까지 시간 범위를 확대해 더 높은 세부도의 프로파일을 얻을 수 있어요.

플레임 그래프는 다음 컬럼을 표시합니다.

컬럼 설명
level 콜 스택에서 함수의 깊이
value 자식 함수를 포함한 누적 값
self 이 함수에만 해당하는 값
label 함수 이름 또는 심볼

단위는 Parca에서 Grafana 형식으로 자동 매핑돼요: nanosecondsns로, count는 짧은 숫자로 표시.

메트릭 쿼리 결과

메트릭 결과는 선택된 프로파일 유형의 시간에 따른 집계 값을 나타내요. Parca는 각 라벨 조합마다 별도의 시계열을 반환하므로 스크랩된 프로파일 값의 급증을 빠르게 식별하고 특정 시간 범위로 확대해 조사할 수 있어요. 시계열 값 필드는 프로파일 유형 ID의 샘플 유형 이름을 따릅니다. 예: process_cpu:samples:count:cpu:nanoseconds 쿼리는 samples라는 값 필드를 생성.

더 알아보기 (Learn more)