Редактор запросов Jaeger
В этом документе объясняется, как использовать редактор запросов Jaeger для поиска трассировок, выполнения запросов по идентификатору трассировки, визуализации зависимостей сервисов и импорта файлов трассировок.
Общие сведения о выполнении запросов к источникам данных в Grafana см. в разделе Query and transform data.
Прежде чем начать
- Убедитесь, что вы настроили источник данных Jaeger.
- Проверьте, что подключение работает, нажав Save & test в настройках источника данных.
Типы запросов
Редактор запросов Jaeger поддерживает следующие типы запросов:
- Search: поиск трассировок по сервису, операции, тегам и длительности.
- TraceID: запрос конкретной трассировки по её идентификатору.
- Dependency graph: визуализация зависимостей сервисов в пределах диапазона времени.
- Import trace: загрузка файла трассировки JSON для визуализации.
Поиск трассировок
Чтобы найти трассировки:
- Выберите Search в селекторе Query type.
- Заполните форму поиска:
Запрос по идентификатору трассировки
Чтобы запросить конкретную трассировку:
- Выберите TraceID в селекторе Query type.
- Введите идентификатор трассировки в поле Trace ID.
- Нажмите Shift+Enter, чтобы выполнить запрос.
Визуализация графа зависимостей
Тип запроса dependency graph отображает зависимости сервисов в виде Node Graph. Он показывает, как сервисы взаимодействуют друг с другом и объём вызовов между ними.
Чтобы визуализировать граф зависимостей:
- Выберите Dependency graph в селекторе Query type.
- Установите диапазон времени дашборда на период, который хотите проанализировать.
- Выполните запрос.
Граф зависимостей использует диапазон времени дашборда для запроса к конечной точке /api/dependencies Jaeger. Grafana отображает результат в виде Node Graph с:
- Nodes: каждый узел представляет сервис.
- Edges: каждое ребро представляет вызовы между сервисами, с количеством вызовов в качестве метки ребра.
Note
В вашем экземпляре Jaeger должны быть доступны данные о зависимостях. Если граф пуст, убедитесь, что Jaeger собирает и обрабатывает информацию о зависимостях для выбранного диапазона времени.
Импорт трассировки
Вы можете загрузить файл JSON, содержащий одну трассировку, и визуализировать её в Grafana. Если файл содержит несколько трассировок, Grafana визуализирует первую.
Чтобы импортировать трассировку:
- Нажмите Import trace в редакторе запросов.
- Выберите файл JSON в формате трассировки Jaeger.
Пример JSON трассировки
Файл JSON должен соответствовать формату трассировки Jaeger с массивом data, содержащим объекты трассировок:
{
"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 (экспериментально)
Jaeger предлагает альтернативный метод запроса данных, использующий их службу gRPC поверх HTTP. Подробные сведения об API и требованиях к настройке см. в документации API Jaeger.
Через конечную точку gRPC поддерживаются следующие запросы:
- Поиск сервисов
- Поиск операций
- Поиск по идентификатору трассировки
Чтобы включить запросы gRPC для Jaeger в Grafana, включите флаг функции jaegerEnableGrpcEndpoint. Эта функция является экспериментальной. Клиентам Grafana Cloud следует обратиться в службу поддержки, чтобы запросить доступ и оставить отзыв об этой функции.
Использование переменных шаблонов
Редактор запросов Jaeger поддерживает переменные шаблонов Grafana для создания динамических переиспользуемых дашбордов. Вы можете использовать переменные шаблонов в следующих полях запроса:
- Service Name
- Operation Name
- Trace ID
- Tags
- Min Duration
- Max Duration
Используйте стандартный синтаксис переменных Grafana, такой как $variable или ${variable}, в этих полях. Например, задайте для Service Name значение $service, чтобы пользователи дашборда могли выбирать сервис в раскрывающемся списке.