Корреляции трассировок
Вы можете использовать Grafana корреляции, чтобы встраивать интерактивные ссылки корреляции в ваше представление трассировки и переходить от промежутков к связанным журналам, метрикам, профилям или внешним системам. Это руководство объясняет, как настраивать и управлять корреляциями трассировок в Grafana.
Что такое корреляции трассировок?
Корреляции трассировок позволяют определять правила, которые внедряют контекстно-зависимые ссылки в ваши промежутки трассировки. При просмотре трассировок в Explore или на панели Traces пользователи могут нажимать на эти ссылки, чтобы переходить непосредственно к соответствующим запросам или URL. Корреляции похожи на ссылки trace to logs, metrics и profiles, которые вы можете настроить для источника данных Tempo, но более гибкие.
Перед началом
Чтобы использовать корреляции трассировок, вам нужно:
- Grafana 12 или более поздняя версия
- Источник данных Tempo, настроенный в Grafana
- Доступ администратора к настройкам конфигурации или файлам провижининга в Grafana
Настройка корреляции трассировки
-
Войдите в Grafana с учётной записью администратора.
-
Перейдите в Configuration > Plugins & data > Correlations.
-
Выберите Add correlation или Add new.
-
На шаге 1 укажите label для корреляции и необязательное description.
-
На шаге 2 настройте target корреляции.
-
Выберите раскрывающийся список Type и выберите Query, чтобы связать с другим источником данных, или выберите External для пользовательского URL.
-
Для Target типа query выберите раскрывающийся список target и выберите источник данных, который должен быть запрошен при нажатии на ссылку. Определите целевой запрос.
-
Для Target типа external введите External URL.
-
Как для целей query, так и для внешних целей вы можете использовать следующие переменные на основе данных трассировки. Объектные переменные должны быть преобразованы в переменную-значение с помощью преобразования регулярным выражением.
-
-
На шаге 3 настройте источник данных корреляции:
-
Выберите ваш источник данных Tempo в раскрывающемся списке Source.
-
Введите переменную данных трассировки, которую вы используете для корреляции, в Results field.
-
При необходимости добавьте одно или несколько Transformations, чтобы преобразовать данные трассировки в дополнительные переменные. Вы можете использовать эти переменные для настройки Target корреляции.
-
-
Выберите Save, чтобы сохранить корреляцию.
Проверка корреляций в Explore
-
Откройте Explore и выберите ваш источник трассировки Tempo.
-
Выполните запрос, чтобы загрузить промежутки.
-
Наведите курсор на меню ссылок промежутка или откройте детали промежутка, чтобы увидеть кнопки ссылок корреляции.
-
Нажмите на ссылку корреляции, чтобы открыть разделённое представление или перейти к вашей целевой системе или запросу.
Примеры
Ниже приведены несколько практических конфигураций корреляции, чтобы вы могли начать.
Пример 1: Trace to logs по имени службы и идентификатору трассировки
В этом примере вы настраиваете trace to logs по имени службы и идентификатору трассировки.
-
На шаге 1 добавьте новую корреляцию с меткой Logs for this service and trace и необязательным описанием.
-
На шаге 2 настройте цель корреляции:
-
Выберите тип цели Query и выберите ваш источник данных Loki в качестве Target.
-
Определите запрос Loki, используя
serviceNameиtraceIDв качестве переменных, производных от данных промежутка:{service_name="$serviceName"} | trace_id=`$traceID` |= ``В этом запросе
service_name— единственная метка потока, используемая внутри{}. Метки потока должны быть значениями с низкой кардинальностью, которые описывают источник ваших журналов. Полеtrace_idпоявляется после конвейера|как фильтр конвейера, который выполняет поиск по содержимому журнала или структурированным метаданным без создания дополнительных потоков. Не используйте ID трассировок или другие значения с высокой кардинальностью в качестве меток потока, потому что каждое уникальное значение создаёт отдельный поток, что ухудшает производительность Loki. Дополнительную информацию см. в разделах Рекомендации по меткам и Кардинальность.
-
-
На шаге 3 настройте источник корреляции:
-
Выберите ваш источник данных Tempo в качестве Source.
-
Используйте
traceIDв качестве Results field. -
Добавьте новое преобразование, чтобы извлечь
serviceNameизserviceTagsпромежутка, используя регулярное выражение:{(?=[^\}]*\bkey":"service.name")[^\}]*\bvalue":"(.*?)".*}
-
-
Сохраните корреляцию.
Пример 2: Trace to custom URL
В этом примере вы настраиваете корреляции трассировок с пользовательским URL.
-
На шаге 1 добавьте новую корреляцию с меткой Open custom URL и необязательным описанием.
-
На шаге 2 настройте цель корреляции:
-
Выберите тип цели External.
-
Определите ваш целевой URL, используя переменные, производные от данных промежутка. В этом примере мы используем
serviceNameиtraceID.https://my-server.example.com/service=$serviceName&trace=$traceID
-
-
На шаге 3 настройте источник корреляции:
-
Выберите ваш источник данных Tempo в качестве Source.
-
Используйте
traceIDв качестве Results field. -
Добавьте новое преобразование, чтобы извлечь
serviceNameизserviceTagsпромежутка, используя регулярное выражение:{(?=[^\}]*\bkey":"service.name")[^\}]*\bvalue":"(.*?)".*}
-
-
Сохраните корреляцию.
Рекомендации
-
Давайте понятные имена: используйте описательные имена, указывающие источник и цель. Например: Trace to errors in logs.
-
Используйте метки потока с низкой кардинальностью: при нацеливании на Loki используйте только значения с низкой кардинальностью, такие как
service_name,namespaceилиcluster, внутри селектора потока{}. Помещайте значения с высокой кардинальностью, такие как ID трассировок, в фильтры конвейера (после|) или храните их как структурированные метаданные. Использование ID трассировок в качестве меток потока создаёт чрезмерное количество потоков и ухудшает производительность Loki. Дополнительную информацию см. в разделах Кардинальность и Рекомендации по меткам. Подробные рекомендации по сопоставлению атрибутов промежутка с метками Loki см. в разделе Настройка корреляции trace to logs. -
Продуманно используйте шаблоны: используйте несколько токенов
$variable, если вам нужно внедрить более одного поля.
Дальнейшие шаги
- Настройка корреляции trace to logs: связывайте промежутки с запросами журналов в Loki с сопоставлением тегов и рекомендациями по кардинальности.
- Настройка корреляции trace to metrics: связывайте промежутки с запросами метрик в Prometheus.
- Настройка корреляции trace to profiles: связывайте промежутки с данными профилирования в Grafana Pyroscope.
- Настройка источника данных Tempo: вернуться к настройкам подключения, аутентификации и потоковой передачи.