Dev48
ЯЗЫК
  • О нас
  • Услуги
  • Индустрии
  • Технологии
  • Статьи
  • Контакты
Забронировать звонок
    Главная/Статьи/Svyazyvanie trassirovok soedinyaem tochki mezhdu trassirovkami vashego prilozhen
Dev48
info@dev48.org+375 29 320-40-96WhatsApp@isky_by

© 2026 · All rights reserved.

Связывание трассировок: соединяем точки между трассировками вашего приложения и запросами к базе данных

Источник: Grafana Labs•4 ноября 2026 г. в 00:07

Связывание трассировок: соединяем точки между трассировками вашего приложения и запросами к базе данных

Используйте Database Observability в Grafana Cloud для объединения телеметрии приложений с инструментированием OpenTelemetry и телеметрии баз данных — без утомительного сопоставления вручную временных меток и логов.

2026-11-03•5 мин

Когда запрос приложения замедляется, трассировка может показать вызов базы данных. Поиск стоящего за ним запроса к БД может быть утомительным и требовать переключения между трассировками и телеметрией базы данных, а также ручного сопоставления временных меток или текста запроса.

В Grafana Cloud приложение Database Observability уже предоставляет единую точку обзора всей телеметрии вашей базы данных, включая выборки запросов, историю производительности и планы выполнения. Но что, если вы могли бы переходить от этого вызова базы данных в трассировке прямо к деталям ее запроса?

В прошлом году семантические соглашения OpenTelemetry для баз данных были стабилизированы, предоставив всем нам надежный общий язык для описания операций с базами данных. Эта основа открыла путь к тому, что мы называем связыванием трассировок (trace linkage), которое теперь стало общедоступным (Generally Available) в Database Observability!

Что такое связывание трассировок?

С помощью связывания трассировок мы стремимся обеспечить связь между приложениями с инструментированием OpenTelemetry и телеметрией базы данных, собираемой с помощью Alloy. Другими словами, когда вы предоставляете нам эти ранее разрозненные элементы головоломки, мы сделаем все возможное, чтобы предоставить вам как можно больше вспомогательной информации между этими двумя элементами. И мы сделаем это без необходимости утомительно сопоставлять вручную временные метки и логи.

На спане базы данных в трассировке вы увидите ссылку на текст запроса. При клике по ней приложение ищет связь между вашим запросом к базе данных и нашим специализированным представлением ваших наиболее релевантных данных в приложении Database Observability. Вы можете изучить данные выборки выполнения запросов или ознакомиться с исторической производительностью запроса вместе с его сопутствующей схемой и планом выполнения.

Эта связь опирается на атрибуты базы данных, которые ваше инструментирование OpenTelemetry передает уже сейчас. Grafana Cloud Traces на базе Tempo сохраняют эти атрибуты, а связывание трассировок использует текст запроса, систему базы данных и имя базы данных, чтобы связать спан базы данных с соответствующим контекстом запроса в Database Observability.

Мы поддерживаем стабильные соглашения, такие как db.query.text, и их устаревший эквивалент db.statement, поэтому существующее инструментирование может продолжать приносить пользу по мере того, как команды переходят на стабильные соглашения.

Как это работает?

Первоначальная идея связывания трассировок возникла из следующего вопроса: какой общий контекст может связать инструментирование приложения с телеметрией, собираемой из базы данных?

Ответом стало использование контекста трассировки: ID трассировки (trace ID) и ID спана (span ID). С одной стороны у нас есть трассировка приложения со спанами, представляющими выполнение запроса. Со стороны Database Observability мы собираем телеметрию из базы данных, касающуюся выполнения запросов. Пока собираемая нами телеметрия содержит те же trace ID и span ID, мы можем установить связь между трассировкой приложения и Database Observability.

Это привело нас к sqlcommenter, проекту с открытым исходным кодом, переданному сообществу OpenTelemetry. Его идея (восхитительно) проста: позволить оператору SQL переносить с собой часть контекста трассировки в комментарии. При включенном распространении контекста трассировки sqlcommenter внедряет ID трассировки и ID спана приложения в комментарий в конце оператора SQL. Это делается на уровне отдельного выполнения запроса, так что это похоже на общую нить, которая позволяет нам проследить путь от спана трассировки до конкретного выполнения запроса.

Затем мы ищем trace ID и span ID в логах, сгенерированных нами в компоненте Alloy для Database Observability: наш компонент извлекает traceparent из комментария SQL и включает его в логи выборок запросов.

Выход за рамки простого совпадения traceparent

Тем не менее, включение sqlcommenter не гарантирует, что Alloy захватил именно это выполнение SQL. Это может зависеть от того, насколько кратковременным является запрос или как часто Alloy опрашивает базу данных. Даже если вы готовы использовать sqlcommenter, поддерживаются далеко не все движки баз данных, и это может иметь недостатки для кэшей баз данных. Это означает, что у вас могут быть трассировки, для которых мы не можем найти выборку запроса в Database Observability, по крайней мере, не исключительно с помощью sqlcommenter.

Мы можем выйти за рамки сопоставления на основе sqlcommenter, используя сам оператор запроса. Когда мы не можем найти точное совпадение, мы ищем совпадающий текст запроса в телеметрии, собранной Alloy.

Звучит просто, но один и тот же запрос может выглядеть по-разному с каждой стороны. Инструментирование OpenTelemetry не всегда записывает операторы одинаково: в зависимости от используемого языка и инструментирования, литеральные значения могут сохраняться или маскироваться, а заполнители параметров могут принимать различные формы. Между тем, движки баз данных применяют собственную нормализацию к тексту запроса, который собирает Alloy. Мы учитываем эти различия, а также форматирование и комментарии, чтобы найти совпадение.

Даже когда мы не можем указать вам на точное выполнение, вы все равно можете изучить выборки и историческую производительность, которые мы собрали для этого запроса! Это позволяет нам установить значимую связь между вашими трассировками и Database Observability даже без sqlcommenter.

Связывание трассировок может стать отличным инструментом для быстрого соединения телеметрии базы данных и приложения, поэтому мы рады предложить вам попробовать его уже сегодня. Если ваше приложение уже заинструментировано с помощью OpenTelemetry SDK, отправляющего трассировки в Grafana Cloud, и вы уже настроили Database Observability, ознакомьтесь с нашей документацией по настройке связывания трассировок, чтобы начать работу.

Если Database Observability уже собрала запрос, а спан базы данных уже включает его текст в db.query.text или устаревшем db.statement, велика вероятность, что связывание трассировок сможет сопоставить спан с этим запросом без дополнительного инструментирования приложения.

После того как вы попробовали сопоставление по тексту запроса, вы можете дополнительно пойти дальше и сопоставить трассировку с конкретным выполнением запроса с помощью sqlcommenter, как подробно описано в этом блоге. Это повышает точность сопоставления; точные совпадения остаются наилучшими из возможных (best-effort), так как Alloy может не делать выборку для данного выполнения.

А если вы не знаете, с чего начать, обратитесь за помощью к Grafana Assistant, используя естественный язык.

← Все статьи

О чём эта статья

Ещё в разделе «Разработка ПО»

Все →
Представление IBM Cloud Secrets Manager Vault Dedicated: HashiCorp Vault Enterprise под управлением IBM
HashiCorp

Представление IBM Cloud Secrets Manager Vault Dedicated: HashiCorp Vault Enterprise под управлением IBM

Лучшие конструкторы приложений с ИИ 2026: сравнение платформ с генерацией кода и без кода
Bubble

Лучшие конструкторы приложений с ИИ 2026: сравнение платформ с генерацией кода и без кода

Идеи маркетинговых кампаний для Черной пятницы на 2026 год
Activecampaign

Идеи маркетинговых кампаний для Черной пятницы на 2026 год

10 примеров писем на Киберпонедельник для вдохновения в вашей кампании 2026 года
Activecampaign

10 примеров писем на Киберпонедельник для вдохновения в вашей кампании 2026 года

Как composable CDP вписывается в стек B2C MarTech
Iterable

Как composable CDP вписывается в стек B2C MarTech

Принятие решений о времени отправки: как Iterable выбирает время отправки для каждого пользователя
Iterable

Принятие решений о времени отправки: как Iterable выбирает время отправки для каждого пользователя

Ещё от Grafana Labs

Объединение Alloy и OpenTelemetry: движок OTel теперь доступен в публичной предварительной версии
Grafana Labs

Объединение Alloy и OpenTelemetry: движок OTel теперь доступен в публичной предварительной версии

Центр инструментирования в Grafana Cloud: проще начать, легче держать под контролем
Grafana Labs

Центр инструментирования в Grafana Cloud: проще начать, легче держать под контролем

Часто задаваемые вопросы об Agent Observability: поймите ценность мониторинга, оценки и улучшения ваших ИИ-агентов
Grafana Labs

Часто задаваемые вопросы об Agent Observability: поймите ценность мониторинга, оценки и улучшения ваших ИИ-агентов

Оценка AI-моделей для наблюдаемости: o11y-bench присоединяется к индексу Specialized Intelligence от Fireworks и получает версию 1.1
Grafana Labs

Оценка AI-моделей для наблюдаемости: o11y-bench присоединяется к индексу Specialized Intelligence от Fireworks и получает версию 1.1

Релиз Grafana 13.3: управление переменными между дашбордами, обмен результатами с помощью Notebooks, обновление пользовательского интерфейса и многое другое
Grafana Labs

Релиз Grafana 13.3: управление переменными между дашбордами, обмен результатами с помощью Notebooks, обновление пользовательского интерфейса и многое другое

Анализ производительности баз данных с помощью Grafana Assistant
Grafana Labs

Анализ производительности баз данных с помощью Grafana Assistant