Pyroscope 데이터 소스 문제 해결

Pyroscope 데이터 소스 문제 해결 (Troubleshoot Pyroscope data source issues)

이 문서는 Pyroscope 데이터 소스를 구성하거나 사용할 때 겪을 수 있는 일반적인 문제에 대한 해결책을 제공해요. 연결·구성, 인증, 쿼리, 플레임 그래프, 템플릿 변수, Profiles Drilldown, Trace to profiles, 성능 오류로 나눠 설명합니다.

출처: 문서

본문

연결 및 구성 오류

"Data source is not working" 또는 연결 실패

원인 해결
잘못된 URL URL이 Pyroscope 인스턴스를 가리키는지 확인. 자체 관리 배포의 기본 포트는 4040(예: http://localhost:4040)
Pyroscope 서비스가 실행되지 않음 Pyroscope 백엔드가 실행·접근 가능한지 확인. curl이나 브라우저로 URL 연결 테스트
네트워크 연결 문제 Grafana 서버에서 Pyroscope 엔드포인트로의 네트워크 연결 확인. 방화벽 규칙이 필요한 포트의 아웃바운드 연결을 허용하는지 확인
마이크로서비스 모드 라우팅 마이크로서비스 모드라면 URL이 요청을 올바르게 라우팅하는 게이트웨이/프록시를 가리키는지 확인. Helm 인그레스 구성 참고
TLS/SSL 인증서 문제 HTTPS라면 인증서가 유효하고 Grafana 서버가 신뢰하는지 확인. 자체 서명 인증서는 데이터 소스에 TLS 설정 구성

URL 형식 문제 / "Connection refused" 또는 타임아웃 / SSL/TLS 오류 / 프라이빗 연결 또는 리버스 프록시 문제

URL 형식이 올바른지, 포트·프로토콜이 맞는지, 프록시 설정과 네트워크 경로를 확인하세요.

인증 오류

"Authentication failed" 또는 "Unauthorized"

원인 해결
잘못된 자격 증명 사용자 이름·비밀번호 또는 API 키가 올바른지 확인
만료된 자격 증명 새 자격 증명을 생성하고 데이터 소스 구성 업데이트
잘못된 인증 유형 배포에 맞는 인증 방법(Basic auth, API key, 로컬 설정은 인증 없음) 선택했는지 확인
인증 헤더 누락 커스텀 인증이면 데이터 소스 설정에서 필요한 헤더가 올바르게 구성됐는지 확인

Grafana Cloud 액세스 정책 및 토큰 문제

  • 원인: Grafana Cloud Profiles는 사용자 비밀번호가 아니라 액세스 정책 토큰으로 인증해요. 토큰은 profiles:read 스코프를 포함하고 올바른 스택을 대상으로 하는 액세스 정책에 속해야 해요. 잘못된 스코프의 토큰이나 다른 스택용으로 만든 토큰은 인증에 실패하거나 다른 테넌트의 데이터를 반환해요. 토큰과 연결 URL은 스택별로 다르며 마이그레이션 중에 이전되지 않아요.
  • 해결: 올바른 스코프와 스택을 대상으로 하는 새 토큰을 만들고 연결 URL을 확인하세요.

쿼리 오류

"No data" 또는 빈 결과

원인 해결
시간 범위에 데이터 없음 대시보드 시간 범위 확장. 선택한 기간에 프로파일링 데이터가 없을 수 있음
애플리케이션이 프로파일을 보내지 않음 애플리케이션이 프로파일을 Pyroscope로 보내도록 구성됐는지 확인. Pyroscope 에이전트/SDK 구성 확인
잘못된 프로파일 유형 선택 드롭다운에서 다른 프로파일 유형 선택. 모든 프로파일 유형이 모든 애플리케이션에 있는 건 아님
라벨 선택기가 너무 제한적 필터를 제거/수정해 쿼리 확장. 데이터 존재를 확인하려면 필터 없이 시작
잘못된 서비스/애플리케이션 선택 service_name 라벨이 애플리케이션 구성과 일치하는지 확인
프로파일 유형이나 앱 미선택 쿼리 에디터에서 프로파일 유형/앱을 선택했는지 확인. 둘 다 없으면 데이터 없음

참고: 데이터 소스 연결 테스트는 성공하는데 어떤 쿼리에 대해서도 프로파일이 없다면, 보통 데이터 소스가 아니라 수집(ingestion) 쪽 문제예요. 데이터 소스는 Pyroscope에서 프로파일을 읽기만 할 뿐 수집·전송하지 않아요. Grafana Alloy나 OpenTelemetry Collector 같은 애플리케이션·SDK·수집기가 프로파일을 Pyroscope 백엔드로 보내는지 확인하세요.

"Profile type not found" 또는 빈 프로파일 유형 선택기 / 라벨 이름·값이 로드되지 않음 / 쿼리 구문 오류

프로파일 유형이 데이터 소스에 있는지, 라벨 구문을 확인하고 유효한 쿼리 예시를 참고하세요:

{service_name="my-app"}
{service_name="my-app", env="production"}
{service_name=~"my-app.*"}

긴 시간 범위 쿼리가 최근 데이터만 반환

오래된 데이터가 보존됨에도 쿼리가 최근 며칠 데이터만 반환하면, 쿼리 시간 범위가 서버 측 쿼리 한도를 초과하는 경우가 많아요. Grafana Cloud Profiles에서 가장 흔히 보고돼요. "쿼리 시간 범위 및 보존 한도"를 참고하세요.

플레임 그래프 문제

  • 플레임 그래프가 렌더링되지 않음: 데이터와 프로파일 유형을 확인하세요.
  • 큰 시간 범위에서 타임아웃/로드 실패: 큰 시간 범위의 플레임 그래프 렌더링은 Pyroscope 백엔드가 많은 프로파일을 병합해야 해 쿼리 시간과 메모리가 증가해요. 크거나 고카디널리티 범위는 결과가 반환되기 전에 요청 타임아웃을 초과할 수 있어요. 시간 범위를 줄이거나 프로파일 밀도를 낮추세요.
  • 플레임 그래프가 상세 없이 집계 데이터만 표시: 시간 범위를 확대해 더 높은 세분도를 얻으세요.
  • 플레임 그래프와 상호작용 불가: 프로파일 유형과 라벨 선택을 확인하세요.

템플릿 변수 오류

  • 변수가 값을 반환하지 않음: 쿼리 유형·프로파일 유형·라벨 설정을 확인하세요.
  • 변수가 예상대로 필터링하지 않음: =~ 연산자 사용과 변수 형식을 확인하세요.

Profiles Drilldown 문제

  • Profiles Drilldown 사용 불가: Grafana 버전과 플러그인 설치를 확인하세요.
  • 서비스/프로파일이 나타나지 않음: 데이터 소스와 데이터 수집을 확인하세요.

Trace to profiles 문제

Trace to profiles는 데이터 소스에서 가장 구성에 민감한 기능이에요. 대부분의 문제는 데이터 소스 오설정보다 충족되지 않은 사전 요구 사항에서 옵니다. 모든 전제 조건(데이터 소스 구성, pyroscope.profile.id 속성, 언어 SDK 계측)을 확인하세요.

  • 스팬 프로파일이 나타나지 않음: pyroscope.profile.id 속성과 브리지 구성을 확인하세요.
  • 프로파일이 트레이스 스팬과 일치하지 않음: 태그·시간 범위가 일치하는지 확인하세요.
  • eBPF 기반 수집에서 스팬 프로파일 사용 불가: 스팬 프로파일링은 프로파일링 샘플을 활성 트레이스 스팬과 연관시키는데, 이는 언어 SDK와 OpenTelemetry 스팬-프로파일링 브리지가 필요해요. eBPF 기반 수집은 샘플을 개별 스팬과 연관시킬 수 없으므로 스팬 프로파일을 생성하지 않아요.
  • 스팬 ID가 아닌 스팬 이름/트레이스 ID로 스팬 프로파일 필터링: 스팬-프로파일링 브리지는 profiling 샘플에 span_nametrace_id를 라벨링해요. SDK에 따라 프로파일링 컨텍스트가 트레이스의 루트 스팬에만 붙고 자식 스팬이 상속할 수 있어요. span_id는 고카디널리티라 신뢰할 수 있는 상관 라벨이 아니에요.
  • .NET 프로파일러가 OpenTelemetry 자동 계측과 충돌: .NET CLR은 프로세스에 한 번에 프로파일러 하나만 붙일 수 있어요. Pyroscope .NET 프로파일러와 OpenTelemetry 자동 계측은 각각 별도의 CLR 프로파일러에 의존하므로 충돌해요.
  • 로그를 프로파일과 상관: Grafana는 Trace to profiles를 지원하지만 로그-프로파일 직접 상관은 없어요.

성능 문제

  • 느린 쿼리 또는 타임아웃: 시간 범위와 라벨 선택을 좁히세요.
  • 브라우저의 높은 메모리 사용: Max Nodes를 낮추거나 시간 범위를 줄이세요.

Grafana Cloud 관련 문제

쿼리 시간 범위 및 보존 한도

  • 원인: Pyroscope는 데이터 보존 기간과 분리된(종종 더 짧은) 서버 측 쿼리 한도를 적용해요. 이 한도는 Grafana 데이터 소스가 아니라 Pyroscope 쿼리 프론트엔드가 적용하므로 데이터 소스가 변경·재정의할 수 없어요.
한도 기본값 설명
querier.max-query-lookback 7d 현재 시간에서 얼마나 과거까지 쿼리할 수 있는지. 이 창보다 오래된 데이터 요청은 실패하지 않고 범위가 허용 창으로 조용히 잘려 데이터가 누락된 것처럼 보임
querier.max-query-length 24h 단일 쿼리의 최대 시간 폭. 이 범위를 초과하는 요청은 거부됨

보존이 보통 쿼리 창보다 길기 때문에 프로파일이 보존되지만 조회할 수 없는 경우가 있어요. 예를 들어 Grafana Cloud Profiles는 무료 요금제 14일, 유료 요금제 30일 보존하지만 기본 쿼리 창은 7일이에요.

참고: 표시된 기본값은 Pyroscope OSS 기본값이에요. Grafana Cloud와 자체 관리 배포는 다른 값을 구성할 수 있어요.

디버그 로깅 활성화

문제 해결을 위해 상세 오류 정보를 캡처하려면 Grafana 로그 레벨을 DEBUG로 설정하세요.

더 알아보기 (Learn more)