프로파일 데이터 쿼리

프로파일 데이터 쿼리 (Query profile data)

오픈소스 Grafana Profiles Drilldown 앱이나 내장 Pyroscope 데이터 소스 쿼리 에디터로 프로파일 데이터를 쿼리할 수 있어요. 또한 Grafana 대시보드에 플레임 그래프 패널을 임베드할 수도 있어요.

출처: 문서

본문

Profiles Drilldown

Grafana Profiles Drilldown은 오픈소스 연속 프로파일링 플랫폼인 Pyroscope와 원활하게 통합되도록 설계된 네이티브 Grafana 애플리케이션이에요. 쿼리 없는 부드러운 경험으로 프로파일링 데이터를 탐색·분석하게 해줘요. Grafana Cloud나 자신의 Grafana 인스턴스에서 사용할 수 있어요.

이용 사례

프로파일링 데이터를 보고, 분석하고, 비교하는 여러 가지 모드가 있어요. 주요 이용 사례는 다음과 같아요: 특정 서비스의 성능 문제 조사(반응적), 전반적 병목·리소스 핫스팟 발견(능동적). Profiles Drilldown은 능동적·반응적 이용 사례를 특별히 지원하는 직관적인 인터페이스를 제공해요. 모든 서비스가 어떻게 작동하는지에 대한 전체적인 뷰와, 더 표적화된 근본 원인 분석을 위한 드릴다운 기능을 모두 얻을 수 있어요. 프로파일을 분석하고 로그·메트릭·트레이싱 같은 다른 전통적 신호로는 얻을 수 없는 인사이트를 제공하는 편리한 플랫폼이에요.

Pyroscope 쿼리 에디터

Pyroscope 데이터 소스 쿼리 에디터는 프로파일 유형 선택기, 라벨 선택기, 접히는 옵션에 접근할 수 있게 해줘요. Profiles Drilldown처럼 쿼리 에디터도 데이터를 시각화하는 플레임 그래프를 제공해요.

라벨 선택기 구문

라벨 선택기는 Prometheus와 유사한 구문을 사용해요. 하나 이상의 라벨 매처를 콤마로 구분해 중괄호로 감싸요. 각 매처는 라벨 이름, 연산자, 큰따옴표 값으로 구성돼요.

연산자 설명
= 값과 정확히 일치하는 라벨 선택
!= 값과 일치하지 않는 라벨 선택
=~ 정규식과 일치하는 라벨 선택
!~ 정규식과 일치하지 않는 라벨 선택

일반적인 라벨 선택기 예시:

{service_name="my-service"}
{service_name="my-service", namespace="production"}
{service_name=~"cart.*"}
{service_name="checkout", namespace!="staging"}

라벨 선택기를 비워 두거나 {}로 설정하면 라벨로 필터링하지 않고 선택한 프로파일 유형의 모든 프로파일을 쿼리해요.

쿼리 옵션

옵션 설명
Query Type 쿼리가 반환하는 데이터 유형 설정: 플레임 그래프 데이터는 Profile, 타임시리즈 데이터는 Metric, 또는 Both. Both는 Explore에서만 선택 가능. 대시보드 패널은 하나의 시각화만 허용
Group by 라벨 하나 이상으로 메트릭 데이터를 그룹화. Group by 라벨이 없으면 메트릭 데이터가 모든 라벨에 걸쳐 단일 타임시리즈로 집계. 메트릭 데이터에만 적용되며 프로파일 결과는 변경하지 않음
Limit Group by 설정 시 반환되는 최대 타임시리즈 수 설정. 반환되는 시리즈는 항상 기간 동안 총 집계 데이터의 내림차순 값으로 정렬. 프로파일 쿼리에는 적용 안 됨
Span ID 프로파일을 검색할 스팬 ID 설정. 특정 트레이스 스팬과 연관된 프로파일을 볼 수 있음. Trace to profiles 지원. 예: 64f170a95f537095
Max Nodes 플레임 그래프에 렌더링되는 최대 노드 수 설정. 값이 낮을수록 작은 노드를 집계해 큰 프로파일의 성능이 향상. 기본값은 16384
Annotations 샘플링·스로틀링 이벤트 같은 프로파일링 애노테이션을 타임시리즈 결과에 포함. Pyroscope가 서비스 수집을 줄이거나 제한한 시점 식별에 사용
Exemplars

profilesExemplars 기능이 활성화되면 Options 섹션에 Exemplars 토글이 나타나요. Exemplar는 개별 프로파일 샘플을 메트릭 그래프의 포인트에 연결해, 타임시리즈의 스파이크에서 그것을 생성한 특정 프로파일로 이동할 수 있게 해줘요. 이 기능은 일반 공개이며 기본으로 활성화돼 있어요.

Heatmap

profilesHeatmap 기능이 활성화되면 Heatmap 토글이 나타나요. 히트맵은 시간에 따른 프로파일 샘플의 분포를 시각화해 많은 프로파일에서 패턴과 이상치를 발견하는 데 도움을 줘요. Heatmap 활성화 시 Heatmap Type 옵션으로 샘플 집계 방식을 선택할 수 있어요.

참고: profilesHeatmap 기능은 실험적이에요. 실험적 기능은 변경될 수 있고 향후 릴리스에서 제거될 수 있어요. profilesHeatmap 기능 토글로 활성화하세요.

UTF-8 라벨 이름

pyroscopeUTF8LabelNames 기능이 활성화되면 라벨 선택기가 UTF-8 라벨 이름을 지원해요. 점 같은 문자를 포함하는 라벨 이름은 큰따옴표로 감싸세요, 예: {"k8s.namespace"="production"}. 이 기능은 공개 미리보기이며 기본으로 활성화돼 있어요.

쿼리 예시

서비스의 높은 CPU 사용량 조사 — process_cpu:cpu:nanoseconds:cpu:nanoseconds 프로파일 유형을 선택하고 영향을 받는 서비스로 필터링:

{service_name="checkout"}

Explore에서 Query Type을 Both로 설정하면 CPU 플레임 그래프와 CPU 사용량 타임시리즈를 나란히 볼 수 있어요.

환경 간 메모리 할당 비교 — memory:alloc_space:bytes:space:bytes 프로파일 유형을 선택하고 Query Type을 Metric, Group by를 namespace로 설정:

{service_name="cart"}

메트릭 그래프가 네임스페이스별 별도 타임시리즈를 보여줘 productionstaging 같은 환경 간 할당 동작을 비교할 수 있어요.

Goroutine 증가 분석 — goroutine:goroutine:count:goroutine:count 프로파일 유형을 선택해 goroutine 수와 생성 위치 확인:

{service_name=~"api.*"}

특정 트레이스 스팬의 프로파일 보기 — 프로파일 유형을 선택하고 Query Type을 Profile로, Span ID 필드에 스팬 ID(예: 64f170a95f537095)를 입력. 플레임 그래프가 그 스팬과 연관된 프로파일 데이터만 보여줘요. 이 예시는 Trace to profiles를 지원해요.

프로파일 쿼리 결과

프로파일은 플레임 그래프로 시각화할 수 있어요. Pyroscope는 선택한 시간 범위에 걸쳐 집계된 프로파일을 반환해요. 플레임 그래프의 절대 값은 시간 범위가 커질수록 커지지만 상대 값은 의미 있게 유지돼요. 시간 범위를 확대해 단일 스크레이프 간격까지 더 높은 세분도의 프로파일을 얻을 수 있어요.

메트릭 쿼리 결과

메트릭 결과는 선택한 프로파일 유형의 시간에 따른 집계 합계 값을 나타내요. 이로써 스크레이프된 프로파일 값의 스파이크를 빠르게 보고 특정 시간 범위로 확대할 수 있어요.

더 알아보기 (Learn more)