IT заметки по программированию
IT заметки по программированию
IT заметки по программированию
IT заметки по программированию

Описание синтаксиса TraceQL в Grafana

TraceQL — это язык запросов, используемый в Grafana Tempo для фильтрации и анализа трассировок. Он позволяет выбирать трейсы и их части (спаны) на основе заданных условий. Ниже приводится описание синтаксиса TraceQL, ключевых элементов языка и примеры использования.


Основы синтаксиса TraceQL

  1. Структура запроса
    • Запрос состоит из выражения фильтрации и опциональной команды обработки:
  1. Фильтр
    Фильтрует трейсы или спаны на основе атрибутов, временных интервалов, названий или значений.
  2. Обработка
    Выполняет дополнительные операции, такие как ограничение количества результатов (limit), агрегация, группировка.

Фильтрация (Filter Expressions)

Фильтр задаётся в фигурных скобках {} и может включать условия по атрибутам, времени, статусу и т.д.

Базовый фильтр

  • {}:
    Возвращает все трейсы.
  • {attribute_name="value"}:
    Возвращает трейсы, у которых атрибут attribute_name равен "value".
  • {duration_ms > 1000}:
    Возвращает трейсы с длительностью больше 1 секунды.

Операторы сравнения

= Равно
!= Не равно
< > Меньше / Больше
<= >= Меньше или равно / Больше или равно
=~ Регулярное выражение
!~ Регулярное выражение (не соответствует)

Примеры:

Логические операторы

AND И
OR Или
NOT Не

Атрибуты трассировки

Вы можете фильтровать по стандартным и пользовательским атрибутам:

  • Стандартные атрибуты:
    • service.name: Название сервиса.
    • span.name: Название спана.
    • duration_ms: Длительность в миллисекундах.
    • status.code: Код статуса трейса.
  • Пользовательские атрибуты: Атрибуты, добавленные вами в процессе трассировки, например:
     

Команды обработки (Pipeline Commands)

Команды обработки применяются после фильтрации с использованием оператора |.

Ограничение количества результатов

  • limit <число>:
    Ограничивает количество возвращаемых трейсов.
     

Агрегация

  • count():
    Возвращает количество трейсов.
     

Выбор полей

  • fields():
    Возвращает только указанные атрибуты.
     

Сортировка

  • sort <поле> [asc|desc]:
    Сортирует трейсы по указанному полю.

Примеры запросов TraceQL

  1. Получить все трейсы:
     
  2. Фильтровать трейсы по имени сервиса:
     
  3. Выбрать трейсы с длительностью более 2 секунд:
     
  4. Найти трейсы с ошибками (status.code=2 — означает ошибки):
     
  5. Сортировать трейсы по длительности:
     
  6. Посчитать количество трейсов:
     
  7. Комбинировать фильтры:
     
  8. Найти трейсы с конкретным методом HTTP:
     
  9. Ограничить результаты до 5 трейсов:
     

Полезные советы

  1. Тестируйте фильтры последовательно. Начинайте с простых запросов {} и постепенно добавляйте фильтры.
  2. Используйте логические операторы. Упрощайте сложные запросы, комбинируя условия через AND, OR, NOT.
  3. Фокусируйтесь на атрибутах. Заранее продумывайте, какие атрибуты полезны для фильтрации и анализа, и добавляйте их в трассировке.
  4. Анализируйте ошибки. Используйте status.code или пользовательские теги для быстрого выявления проблемных трейсов.

TraceQL — мощный инструмент для анализа трассировок в Grafana Tempo. Он позволяет глубоко исследовать данные, определять проблемы и оптимизировать ваши сервисы.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *