Примеры запросов TraceQL
Используйте эти запросы TraceQL в Grafana Explore с источником данных Tempo. Настройте имена служб, маршруты и значения атрибутов в соответствии с вашей средой.
Эти примеры используют семантические соглашения OpenTelemetry. Если ваше инструментирование использует другие имена атрибутов, подставьте их в запросы.
Полный синтаксис TraceQL см. в разделе Создание запроса TraceQL. Расширенную коллекцию рецептов см. в TraceQL cookbook for Grafana Cloud Traces.
Tip
Если запрос не возвращает результатов, расширьте диапазон времени и убедитесь, что выбран правильный источник данных Tempo. Предпочитайте внутренние поля уровня трассировки, такие как
trace:durationиtrace:rootService, для более быстрых запросов.
Поиск промежутков с ошибками
Фильтруйте по статусу ошибки или кодам ошибок HTTP:
{ status = error }
{ span.http.status_code >= 500 }
{ span.http.status_code > 399 }
Поиск медленных запросов
Фильтруйте по длительности промежутка. Распространённые пороги — 1 секунда и 5 секунд:
{ duration > 1s }
{ duration > 5s }
Фильтруйте конкретную конечную точку по длительности:
{ span.http.url = "/api/checkout" && duration > 2s }
Поиск исключений по типу
Запрашивайте события исключений, записанные в промежутках.
Данные об исключениях используют область event, потому что OpenTelemetry записывает исключения как события промежутков:
{ event.exception.message =~ "context cancelled" }
{ event.exception.type = "NotFoundException" }
Найдите промежутки с ошибками, у которых есть сообщение об исключении:
{ status = error && event.exception.message != "" }
Фильтрация по службе
Выбирайте промежутки из конкретной службы или сопоставляйте службы по шаблону. Вы можете использовать представление Service Graph, чтобы определить, у каких служб высокая частота ошибок или задержка, а затем запросить эти службы с помощью TraceQL.
{ resource.service.name = "checkout" }
{ resource.service.name =~ "payment.*" && status = error }
Поиск ошибок и медленных промежутков вместе
Комбинируйте фильтры статуса ошибки и длительности, чтобы выявить вероятные первопричины:
{ resource.service.name = "api" && status = error && duration > 1s }
Анализ зависимостей служб
Найдите ошибки на конкретном пути API:
{ span.http.url =~ ".*/api/.*" && span.http.status_code >= 500 }
Используйте оператор потомка (>>), чтобы найти трассировки, где служба frontend вызывает нижестоящую службу, которая выдаёт ошибку:
{ resource.service.name = "frontend" } >> { resource.service.name = "database" && status = error }
Запрос метрик частоты и количества
Запускайте их в режиме Metrics в Explore. Запросы метрик TraceQL имеют ограничение диапазона времени по умолчанию в 24 часа:
{ } | rate()
{ status = error } | rate()
{ resource.service.name = "api" } | count_over_time()
{ duration > 1s } | rate()
Фильтрация по региону или среде
Сужайте результаты до конкретного облачного региона или среды развёртывания:
{ resource.cloud.region = "us-east-1" && status = error }
{ resource.deployment.environment = "production" && duration > 2s }
Использование переменных дашборда
Заменяйте жёстко заданные значения на
переменные дашборда, когда используете эти запросы на панелях.
Например, используя переменную $service:
{ resource.service.name = "$service" && status = error }
Дополнительные ресурсы
- TraceQL cookbook for Grafana Cloud Traces — расширенная коллекция рецептов с дополнительными примерами
- Создание запроса TraceQL — полный синтаксис, области и операторы TraceQL
- Запрос данных трассировки — режимы и параметры редактора запросов
- Service Graph и представление Service Graph — визуализируйте зависимости служб