Jaeger 쿼리 편집기
Jaeger 쿼리 편집기 (Jaeger query editor)
이 문서는 Jaeger 쿼리 편집기로 트레이스를 검색하고, 트레이스 ID로 쿼리하고, 서비스 의존성을 시각화하고, 트레이스 파일을 가져오는 방법을 설명해요.
출처: 문서
본문
Grafana에서 데이터 소스 쿼리에 대한 일반적인 정보는 Query and transform data 문서를 참고하세요.
시작하기 전에: Jaeger 데이터 소스를 구성했는지 확인하고, 데이터 소스 설정에서 Save & test 를 클릭해 연결이 작동하는지 확인하세요.
쿼리 유형 (Query types)
Jaeger 쿼리 편집기는 다음 쿼리 유형을 지원합니다:
| 쿼리 유형 | 설명 |
|---|---|
| Search | 서비스, 작업(operation), 태그, 기간으로 트레이스 찾기 |
| TraceID | ID로 특정 트레이스 쿼리 |
| Dependency graph | 시간 범위 내 서비스 의존성 시각화 |
| Import trace | JSON 트레이스 파일 업로드로 시각화 |
트레이스 검색 (Search for traces)
- Query type 선택기에서 Search 를 선택합니다.
- 검색 폼을 작성합니다:
| 필드 | 설명 |
|---|---|
| Service Name | 드롭다운 목록에서 서비스 선택 또는 입력해 필터링. 템플릿 변수 지원 |
| Operation Name | 선택한 서비스의 작업 선택. All 을 선택하면 모든 작업 쿼리. 서비스를 선택하기 전까지 비활성화됨 |
| Tags | error=true db.statement="select * from User" 같은 logfmt 형식으로 태그 입력 |
| Min Duration | 이 값보다 긴 트레이스 필터링. 1.2s, 100ms, 500us 같은 형식 사용 |
| Max Duration | 이 값보다 짧은 트레이스 필터링. Min Duration과 같은 형식 사용 |
| Limit | 반환할 최대 트레이스 수 |
트레이스 ID로 쿼리 (Query by trace ID)
- Query type 선택기에서 TraceID 를 선택합니다.
- Trace ID 필드에 트레이스 ID를 입력합니다.
- Shift+Enter 를 눌러 쿼리를 실행합니다.
의존성 그래프 시각화 (Visualize the dependency graph)
의존성 그래프 쿼리 유형은 서비스 의존성을 Node Graph로 표시합니다. 서비스가 어떻게 통신하는지와 호출량을 보여줘요.
- Query type 선택기에서 Dependency graph 를 선택합니다.
- 대시보드 시간 범위를 분석하려는 기간으로 설정합니다.
- 쿼리를 실행합니다.
의존성 그래프는 대시보드 시간 범위를 사용해 Jaeger의 /api/dependencies 엔드포인트를 쿼리합니다. Grafana는 결과를 Node Graph로 표시합니다:
- 노드(Nodes): 각 노드는 서비스를 나타냅니다.
- 엣지(Edges): 각 엣지는 서비스 간 호출을 나타내며, 호출 수가 엣지 라벨로 표시됩니다.
참고: Jaeger 인스턴스에 의존성 데이터가 있어야 해요. 그래프가 비어 있다면 선택한 시간 범위에 대해 Jaeger가 의존성 정보를 수집·처리하고 있는지 확인하세요.
트레이스 가져오기 (Import a trace)
단일 트레이스를 포함하는 JSON 파일을 업로드해 Grafana에서 시각화할 수 있어요. 파일에 여러 트레이스가 있으면 Grafana는 첫 번째 트레이스를 시각화합니다.
- 쿼리 편집기에서 Import trace 를 클릭합니다.
- Jaeger 트레이스 형식의 JSON 파일을 선택합니다.
JSON 파일은 data 배열에 트레이스 객체를 포함하는 Jaeger 트레이스 형식을 따라야 해요:
{
"data": [
{
"traceID": "2ee9739529395e31",
"spans": [
{
"traceID": "2ee9739529395e31",
"spanID": "2ee9739529395e31",
"flags": 1,
"operationName": "CAS",
"references": [],
"startTime": 1616095319593196,
"duration": 1004,
"tags": [
{
"key": "sampler.type",
"type": "string",
"value": "const"
}
],
"logs": [],
"processID": "p1",
"warnings": null
}
],
"processes": {
"p1": {
"serviceName": "loki-all",
"tags": [
{
"key": "jaeger.version",
"type": "string",
"value": "Go-2.25.0"
}
]
}
},
"warnings": null
}
],
"total": 0,
"limit": 0,
"offset": 0,
"errors": null
}
gRPC 엔드포인트로 데이터 쿼리 (experimental)
Jaeger는 HTTP를 통해 gRPC 서비스를 사용하는 대체 쿼리 방법을 제공합니다. API와 설정 요구사항에 대한 자세한 내용은 Jaeger API 문서를 참고하세요. gRPC 엔드포인트로 지원되는 쿼리는 다음과 같아요:
- 서비스 검색
- 작업 검색
- 트레이스 ID 검색
Grafana에서 Jaeger gRPC 쿼리를 활성화하려면 jaegerEnableGrpcEndpoint 기능 플래그를 활성화하세요. 이 기능은 실험적이에요. Grafana Cloud 고객은 지원팀에 접근을 요청하고 이 기능에 대한 피드백을 제공해야 합니다.
템플릿 변수 사용 (Use template variables)
Jaeger 쿼리 편집기는 Grafana 템플릿 변수를 지원해 동적·재사용 가능한 대시보드를 만들 수 있어요. 다음 쿼리 필드에서 템플릿 변수를 사용할 수 있습니다:
- Service Name
- Operation Name
- Trace ID
- Tags
- Min Duration
- Max Duration
이 필드에서 $variable 또는 ${variable} 같은 표준 Grafana 변수 구문을 사용합니다. 예를 들어 Service Name 을 $service 로 설정하면 대시보드 사용자가 드롭다운 목록에서 서비스를 선택할 수 있어요.