Устранение неполадок источника данных Tempo
В этом документе приведены решения распространённых проблем, с которыми вы можете столкнуться при настройке или использовании источника данных Tempo в Grafana.
Область применения этого руководства
Это руководство охватывает проблемы, связанные с подключением Grafana к Tempo и использованием функций источника данных. Оно применимо к следующим конфигурациям:
- Самостоятельно размещённая Grafana + самостоятельно размещённый Tempo — вы управляете как Grafana (OSS или Enterprise), так и Tempo.
- Grafana Cloud + Cloud Traces — вы используете Grafana Cloud с управляемым бэкендом Tempo (Grafana Cloud Traces). Некоторые конфигурации (потоковая передача, генератор метрик) обрабатываются автоматически.
- Grafana Cloud + самостоятельно размещённый Tempo через PDC — вы используете Grafana Cloud, но подключаетесь к собственному экземпляру Tempo через Private data source connect.
Там, где шаги по устранению неполадок различаются между этими конфигурациями, руководство указывает это. Разделы, помеченные Grafana Cloud only или self-managed Tempo, применяются только к этим средам.
Ресурсы для устранения неполадок Tempo
По проблемам с самим Tempo (а не с источником данных) обратитесь к документации продукта Tempo:
- Устранение неполадок Tempo — общее устранение неполадок Tempo, включая сбои приёма данных и серверные ошибки.
- Не удаётся найти трассировки — трассировки отсутствуют из-за проблем с приёмом, выборкой или хранением.
- Ошибка «too many requests» — лимиты ёмкости запросов и ошибки 429.
- Проблемы запросов — серверные сбои запросов, плохие блоки и настройка производительности.
Ресурсы для устранения неполадок трассировки в Grafana Cloud
Дополнительные ресурсы для Grafana Cloud:
- Устранение неполадок Grafana Cloud Traces, которое охватывает быстрые проверки, проблемы приёма данных, TraceQL и поиск, граф служб, экземпляры, а также ограничение частоты и повторные попытки.
- Исследование трассировок с помощью Grafana Assistant — используйте Grafana Assistant, чтобы помочь устранить любые проблемы.
- Устранение неполадок сбора трассировок с помощью Alloy
- Устранение ошибок с генератором метрик в Cloud Traces
Ошибки подключения
Эти ошибки возникают, когда Grafana не может установить или поддерживать подключение к экземпляру Tempo.
Не удалось подключиться к Tempo
Сообщение об ошибке: Failed to connect to Tempo или dial tcp: connection refused
Причина: Grafana не может достичь экземпляра Tempo. Обычно это означает, что процесс Tempo не запущен, URL в настройках источника данных неверен или правило сетевого уровня блокирует подключение.
Решение:
- Убедитесь, что экземпляр Tempo запущен и доступен с сервера Grafana.
- Проверьте, что URL верен в
конфигурации источника данных. HTTP-порт Tempo по умолчанию —
3200. Распространённые ошибки в URL включают:- Добавление завершающих сегментов пути, например
/apiили/tempo, к URL самостоятельно размещённого Tempo. Правильный формат —http://<HOST>:3200без пути. Суффикс/tempoиспользуется только для URL Grafana Cloud Traces. - Использование gRPC-порта (
9095) вместо HTTP-порта (3200). URL источника данных Tempo должен быть HTTP-конечной точкой. Grafana выводит gRPC-соединение для потоковой передачи из того же URL. - Примеры формата URL по средам см. в разделе Подключение.
- Добавление завершающих сегментов пути, например
- Убедитесь, что нет правил брандмауэра, блокирующих подключение между Grafana и Tempo.
- Пользователям Grafana Cloud, подключающимся к самостоятельно размещённому экземпляру Tempo, убедитесь, что вы настроили Private data source connect, если Tempo не является общедоступным.
- Убедитесь, что протокол (HTTP или HTTPS) соответствует вашей конфигурации Tempo.
Тайм-аут подключения
Сообщение об ошибке: Connection timed out или context deadline exceeded
Причина: Подключение к Tempo истекло по тайм-ауту до получения ответа. Это может произойти, когда сетевая задержка высока, Tempo перегружен или промежуточное устройство (балансировщик нагрузки, прокси) разрывает подключение до того, как Tempo ответит.
Решение:
- Проверьте сетевую задержку между Grafana и Tempo.
- Убедитесь, что Tempo не перегружен и не испытывает проблем с производительностью. Если у вас установлены дашборды Tempo mixin, проверьте их на предмет насыщения ресурсов или повышенных частот ошибок.
- Увеличьте настройку Timeout в конфигурации источника данных в разделе Additional settings.
- Проверьте, не истекает ли по тайм-ауту подключение на каких-либо сетевых устройствах (балансировщиках нагрузки, прокси).
- Для больших запросов трассировок рассмотрите возможность уменьшения диапазона времени или добавления более конкретных фильтров.
Сбои подключения TLS/SSL
Сообщение об ошибке: TLS handshake failed или x509: certificate signed by unknown authority
Причина: Есть несоответствие между настройками TLS в Grafana и тем, что поддерживает или требует экземпляр Tempo. Например, Tempo может представить самоподписанный сертификат, которому сервер Grafana доверяет, или имя хоста в сертификате не совпадает с URL.
Решение:
- Убедитесь, что у Tempo есть действительный TLS-сертификат, если включён HTTPS.
- Проверьте, что сертификат доверен сервером Grafana.
- Если используется самоподписанный сертификат, настройте TLS/SSL Auth Details в настройках источника данных.
- Убедитесь, что Common Name (CN) или Subject Alternative Name (SAN) сертификата соответствует имени хоста, используемому в URL.
Дополнительную информацию о настройке шифрования TLS с Tempo см. в разделе Настройка связи TLS.
Ошибки аутентификации
Эти ошибки возникают при проблемах с учётными данными или разрешениями.
Аутентификация не удалась
Сообщение об ошибке: 401 Unauthorized или 403 Forbidden
Причина: Учётные данные аутентификации недействительны или у пользователя нет разрешения на доступ к Tempo. Эта ошибка появляется, когда вы выбираете Save & test или при выполнении запроса.
Решение:
- Убедитесь, что учётные данные аутентификации (имя пользователя/пароль или API-ключ) верны в настройках источника данных.
- Проверьте, что у пользователя или сервисной учётной записи есть требуемые разрешения.
- Убедитесь, что выбранный в источнике данных метод аутентификации соответствует тому, что ожидает Tempo.
- Для Grafana Cloud убедитесь, что ваш токен Cloud Access Policy имеет область действия
traces:read. Инструкции по настройке см. в разделе Создание токена Cloud Access Policy. Чтобы найти URL вашего стека и учётные данные, см. Поиск URL, пользователя и пароля вашего стека. - Для самостоятельно размещённого Tempo убедитесь, что учётные данные соответствуют настроенным в блоке
serverTempo или обратном прокси.
Save and test возвращает 404
Сообщение об ошибке: Tempo echo endpoint returned status 404 при выборе Save & test
Причина: Проверка работоспособности Grafana достигает сервера, но конечная точка api/echo возвращает 404. Наиболее распространённая причина — неверные сегменты пути в URL (такие как /api или /tempo на самостоятельно размещённом экземпляре), которые смещают запрос проверки работоспособности на несуществующий путь. 404 также может возникнуть, когда обратный прокси перед Tempo отклоняет запросы, содержащие неожиданные заголовки базовой аутентификации.
Решение:
- Убедитесь, что URL не включает завершающих сегментов пути. Для самостоятельно размещённого Tempo URL должен быть
http://<HOST>:3200без пути. Правильный формат см. в разделе Подключение. - Если между Grafana и Tempo находится обратный прокси, проверьте, не возвращает ли 404 прокси. Сам Tempo игнорирует неожиданные заголовки аутентификации, но прокси может их отклонить.
- Если Tempo не требует аутентификации, выберите No authentication в настройках источника данных.
- Проверьте, что учётные данные аутентификации введены в правильные поля. Для Grafana Cloud поле User — это ID экземпляра (не ваш логин Grafana), а Password — токен Cloud Access Policy.
Проблемы мультиарендной аутентификации
Сообщение об ошибке: Unauthorized при использовании мультиарендного Tempo
Причина: ID арендатора (заголовок X-Scope-OrgID) отсутствует или неверен. Этот заголовок должен быть задан как на пути записи (в конфигурации вашего Alloy или OpenTelemetry Collector), так и на пути чтения (в настройках источника данных Grafana), чтобы маршрутизировать данные к правильному арендатору.
Решение:
- В настройках источника данных Tempo убедитесь, что заголовок
X-Scope-OrgIDнастроен в разделе Authentication > HTTP Headers. Шаги настройки источника данных см. в разделе Мультиарендность. - На пути записи убедитесь, что тот же заголовок
X-Scope-OrgIDзадан в конфигурации вашего Alloy или OpenTelemetry Collector, чтобы трассировки принимались под правильным арендатором. - Проверьте, что у аутентифицированного пользователя есть доступ к указанному арендатору.
- Для кросс-арендных запросов убедитесь, что все указанные арендаторы доступны.
Дополнительную информацию см. в разделах Включение мультиарендности и ID арендаторов.
Ошибки запросов
Эти ошибки возникают при проблемах с запросами TraceQL или поиском трассировок.
Трассировка не найдена
Сообщение об ошибке: Trace not found или trace ID not found
Причина: Указанный ID трассировки не существует в Tempo или вышел за пределы настроенного периода хранения. Распространённые причины включают:
- Выборка (Sampling): головная или хвостовая выборка в вашем конвейере инструментирования (Alloy, OpenTelemetry Collector) могла отбросить трассировку до того, как она достигла Tempo. Это самая распространённая причина отсутствующих трассировок.
- Хранение: трассировки доступны только в течение срока, установленного в конфигурации хранения Tempo. Для пользователей Grafana Cloud применяются периоды хранения по умолчанию, если вы не свяжетесь с поддержкой для их изменения.
- Сбой приёма: трассировка могла не быть успешно принята из-за лимитов частоты, ошибок или неправильно настроенных конвейеров.
Решение:
-
Убедитесь, что ID трассировки верен и полон.
-
Проверьте конфигурацию выборки в Alloy или OpenTelemetry Collector. Если включена головная или хвостовая выборка, трассировка могла быть намеренно отброшена. Рекомендации см. в разделе Стратегии выборки.
-
Проверьте, что трассировка находится в пределах настроенного периода хранения Tempo.
-
Если используются ограничения диапазона времени, расширьте диапазон времени в настройках TraceID query.
-
Включите Use time range in query в настройках TraceID query и настройте значения временного сдвига, чтобы искать в более широком диапазоне.
-
Убедитесь, что трассировка была успешно принята Tempo. Вы можете выполнить широкий запрос, чтобы проверить наличие недавних трассировок:
{ } | count() > 0Если это возвращает результаты, трассировки принимаются, но ваш конкретный ID трассировки мог быть отброшен выборкой или выйти из срока хранения. Дополнительные примеры запросов см. в TraceQL cookbook.
-
Пользователям Grafana Cloud см. Устранение неполадок TraceQL и поиска на предмет запросов TraceQL, которые могут помочь исследовать отсутствующие трассировки.
Синтаксические ошибки TraceQL
Сообщение об ошибке: parse error или unexpected token
Причина: Запрос TraceQL содержит синтаксические ошибки.
Решение:
- Убедитесь, что запрос следует синтаксису TraceQL.
- Проверьте, что все фигурные скобки, круглые скобки и кавычки сбалансированы.
- Убедитесь, что имена атрибутов правильно отформатированы с правильной областью. Используйте точечную нотацию для атрибутов промежутка или ресурса, например
span.http.status_codeилиresource.service.name. - Используйте конструктор запросов Search, чтобы генерировать допустимые запросы TraceQL, если вы не знакомы с синтаксисом.
- Убедитесь, что операторы используются правильно. Поддерживаемые операторы включают
=,!=,=~,!~,>,<,>=,<=.
Запрос не возвращает результатов
Причина: Запрос допустим, но не соответствует ни одной трассировке.
Решение:
- Расширьте диапазон времени, чтобы искать в более широком периоде.
- Убедитесь, что имена и значения атрибутов существуют в ваших трассировках.
- Проверьте, что имена атрибутов совпадают точно, так как они чувствительны к регистру.
- Используйте конструктор запросов Search, чтобы исследовать доступные атрибуты и значения.
- Начните с более широкого запроса и постепенно добавляйте фильтры, чтобы сузить результаты.
- Попробуйте Grafana Traces Drilldown, приложение без запросов, которое позволяет исследовать данные трассировки с помощью метрик RED без написания TraceQL.
- Учтите, что поиск Tempo недетерминирован — идентичные запросы могут возвращать разные результаты, потому что Tempo сканирует параллельно и возвращает первые совпадающие трассировки. Подробности см. в разделе Понимание поведения поиска.
- Убедитесь, что трассировки принимаются в Tempo, запросив известный ID трассировки.
Трассировки не появляются после успешного подключения
Причина: Save & test проходит успешно, но выполнение запросов в Explore не возвращает трассировок. Подключение источника данных действительно, но никакие данные трассировки не достигают Tempo, или запросы не соответствуют никаким принятым данным.
Решение:
- Убедитесь, что ваши приложения инструментированы и что ваш коллектор (Alloy, OpenTelemetry Collector) пересылает промежутки в Tempo. Проверьте журналы коллектора на предмет ошибок отправки, отклонённых промежутков или потерь.
- Пользователям Grafana Cloud, которые отправляют трассировки с помощью Alloy, см. Устранение неполадок отправки трассировок с помощью Alloy на предмет проблем на стороне приёма.
- Убедитесь, что диапазон времени запроса охватывает период, когда трассировки были сгенерированы. Данные трассировки появляются только для окна, в котором промежутки были приняты.
- Для мультиарендных настроек убедитесь, что заголовок
X-Scope-OrgIDодинаков как на пути записи (коллектор), так и на пути чтения (источник данных Grafana). Несовпадение приводит к тому, что трассировки принимаются под одним арендатором, а запрашиваются под другим. - Попробуйте широкий запрос, например
{}, с коротким недавним диапазоном времени, чтобы подтвердить, что какие-либо трассировки существуют в Tempo. Если это возвращает результаты, фильтры вашего исходного запроса слишком узки.
Тайм-аут запроса
Сообщение об ошибке: context deadline exceeded или query timeout
Причина: Запрос выполнялся слишком долго. Поиск трассировок сканирует необработанные данные трассировки за выбранный диапазон времени, поэтому широкие запросы за длительные периоды могут превысить лимиты тайм-аута.
Решение:
- Уменьшите диапазон времени, чтобы ограничить объём сканируемых данных.
- Добавьте более конкретные фильтры, чтобы сузить область поиска.
- По возможности используйте индексированные атрибуты в ваших запросах для более быстрого поиска.
- Для самостоятельно размещённого Tempo увеличьте тайм-аут запроса в конфигурации сервера Tempo, если это уместно.
- Если вам нужны агрегированные данные (частоты, количества, длительности), а не отдельные трассировки, рассмотрите использование
запросов метрик TraceQL (например,
{ } | rate()) или предварительно вычисленных метрик из генератора метрик, которые оптимизированы для агрегированных рабочих нагрузок.
Запрос метрик TraceQL не удаётся
Сообщение об ошибке: localblocks processor not found или metrics-generator not configured
Причина: Запросы метрик TraceQL (такие как { } | rate() или { } | count_over_time()) требуют, чтобы процессор local-blocks был активен в конфигурации генератора метрик Tempo. Этот процессор отделён от процессоров service-graphs и span-metrics и должен быть включён независимо.
Решение:
-
Для самостоятельно размещённого Tempo активируйте процессор
local-blocksв конфигурации overrides. Путь конфигурации зависит от вашей версии Tempo и метода развёртывания:- Стандартный:
overrides.metrics_generator_processors: ["local-blocks"] - Более новые версии и Helm:
overrides.defaults.metrics_generator.processors: [local-blocks]
Шаги настройки и требуемую конфигурацию см. в разделе Настройка метрик TraceQL.
- Стандартный:
-
Для Grafana Cloud процессор
local-blocksвключён по умолчанию. Если вы всё ещё видите эту ошибку, свяжитесь с поддержкой Grafana. -
Убедитесь, что генератор метрик запущен и работоспособен, проверив журналы генератора метрик Tempo на предмет ошибок.
Проблемы с потоковой передачей
Потоковая передача отображает результаты запросов TraceQL по мере их появления. Без потоковой передачи вы не видите результаты, пока запрос не завершится. Потоковая передача доступна пользователям Grafana Cloud по умолчанию. Для самостоятельно размещённого Tempo потоковая передача поиска требует Tempo v2.2 или более поздней версии, а потоковая передача метрик требует Tempo v2.7 или более поздней версии. Обе требуют stream_over_http_enabled: true в конфигурации Tempo.
Дополнительную информацию см. в разделе Потоковая передача.
Потоковая передача не работает
Причина: Результаты не появляются постепенно и отображаются только после завершения всего запроса.
Решение:
- Для самостоятельно размещённого Tempo убедитесь, что вы используете требуемую версию Tempo (v2.2 или более позднюю для потоковой передачи поиска, v2.7 или более позднюю для потоковой передачи метрик) и что потоковая передача включена в вашей конфигурации (
stream_over_http_enabled: true). Обратитесь к разделу gRPC API Tempo в документации Tempo. Потоковая передача доступна пользователям Grafana Cloud по умолчанию. - Убедитесь, что Streaming включена в ваших настройках источника данных Tempo. Переключатели Search queries и Metrics queries независимы — проверьте, что переключатель для используемого вами типа запроса включён.
- Если ваш экземпляр Tempo находится за балансировщиком нагрузки или прокси, который не поддерживает gRPC или HTTP2, потоковая передача может не работать. Отключите потоковую передачу и используйте стандартные HTTP-запросы вместо этого.
- Если вы используете Private data source connect (PDC) для доступа к Tempo, убедитесь, что туннель PDC работает и экземпляр Tempo доступен с агента PDC. Проблемы связности PDC могут проявляться как тайм-ауты потоковой передачи.
Ошибка безопасности транспорта gRPC
Сообщение об ошибке: rpc error: code = Unavailable desc = credentials require transport level security
Причина: Grafana пытается использовать gRPC через незащищённое (не-TLS) соединение. Потоковая передача использует gRPC, который может требовать TLS в зависимости от вашей конфигурации Tempo.
Решение:
- Настройте TLS между Grafana и Tempo. Обратитесь к разделу Настройка связи TLS.
- Если TLS не вариант, отключите потоковую передачу в настройках источника данных Tempo и используйте стандартные HTTP-запросы вместо этого.
Частичные результаты или ошибки потоковой передачи
Сообщение об ошибке: stream error или неполные результаты во время потоковой передачи
Причина: Соединение потоковой передачи было прервано до доставки всех результатов.
Решение:
- Проверьте стабильность сети между браузером и Grafana.
- Убедитесь, что прокси или балансировщики нагрузки не разрывают долгоживущие соединения.
- Отключите потоковую передачу и используйте стандартные запросы, если проблемы сохраняются.
- Проверьте журналы сервера Tempo на предмет любых ошибок, связанных с потоковой передачей.
Проблемы с графом служб
Service Graph визуализирует зависимости служб и выделяет частоту запросов, частоту ошибок и длительность (метрики RED) по соединениям. Он требует связанного источника данных Prometheus с метриками графа служб, сгенерированными генератором метрик Tempo или Grafana Alloy. Дополнительную информацию см. в разделе Service Graph и представление Service Graph.
Граф служб не отображается
Причина: Представление Service Graph не показывает данных или показывает пустой граф.
Решение:
-
Убедитесь, что источник данных Prometheus связан в настройках Service Graph источника данных Tempo в разделе Additional settings.
-
Для самостоятельно размещённого Tempo проверьте, что генератор метрик настроен на создание метрик графа служб. Обратитесь к разделу Метрики графа служб в документации Tempo.
-
Убедитесь, что следующие метрики графа служб существуют в Prometheus:
traces_service_graph_request_totaltraces_service_graph_request_failed_totaltraces_service_graph_request_server_seconds_sum
-
Убедитесь, что Grafana Alloy или генератор метрик Tempo настроены на создание этих метрик. Они отличаются от метрик промежутков (
traces_spanmetrics_*), которые питают таблицу представления Service Graph. -
Чтобы проверить, что метрики существуют, выполните следующий запрос в Explore с выбранным источником данных Prometheus:
{__name__=~"traces_service_graph_request.*"} -
Проверьте, что подключение источника данных Prometheus работает.
-
Пользователям Grafana Cloud Traces см. Устранение неполадок графа служб и метрик RED.
Таблица представления Service Graph пуста
Причина: Граф узлов Service Graph отрисовывается правильно, но таблица метрик RED рядом с ним не показывает данных.
Решение:
- Таблица представления Service Graph использует другой набор метрик, чем граф узлов. Фронтенд Grafana запрашивает
traces_spanmetrics_calls_totalиtraces_spanmetrics_latency_bucket. Подтвердите, что эти метрики существуют в вашем связанном источнике данных Prometheus. Более новые версии Tempo могут создаватьtraces_spanmetrics_duration_seconds_bucketвместоtraces_spanmetrics_latency_bucket. Если у вас есть только более новое имя метрики, столбец длительности не показывает данных, пока фронтенд Grafana не поддержит переименованную метрику. - Убедитесь, что генерация метрик промежутков включена в конфигурации вашего Tempo или Alloy. Обратитесь к разделу Включение графов служб в документации Tempo.
Предупреждения о высокой кардинальности
Причина: Запросы графа служб или метрик промежутков создают предупреждения о высокой кардинальности или медленные запросы.
Решение:
- Изучите кардинальность меток ваших метрик графа служб и промежутков. Метки с высокой кардинальностью (такие как уникальные имена Pod или ID запросов) создают множество временных рядов и ухудшают производительность запросов.
- Обратитесь к разделу Кардинальность в документации Tempo за руководством по управлению кардинальностью меток.
Граф служб показывает неполные данные
Причина: Некоторые службы или соединения отсутствуют на графе.
Решение:
- Убедитесь, что все службы инструментированы и отправляют промежутки.
- Проверьте, что имена промежутков и имена служб согласованы.
- Убедитесь, что диапазон времени включает данные от всех ожидаемых служб.
- Убедитесь, что в источнике данных Prometheus есть метрики для всех служб.
Проблемы trace to logs/metrics/profiles
Эти проблемы связаны с функциями корреляции, которые связывают трассировки с другими телеметрическими сигналами. Подробности конфигурации см. в разделах Trace to logs, Trace to metrics и Trace to profiles.
Ссылка trace to logs не появляется
Причина: Ссылки на журналы не появляются при просмотре трассировки.
Решение:
- Убедитесь, что источник данных Loki или другой источник данных журналов настроен в настройках Trace to logs.
- Проверьте, что настроенные теги существуют в ваших промежутках.
- Убедитесь, что хотя бы один сопоставленный тег имеет непустое значение в промежутке.
- При использовании пользовательского запроса убедитесь, что синтаксис запроса допустим для целевого источника данных.
- Проверьте, что Filter by trace ID или Filter by span ID не включены при использовании пользовательского запроса.
- При использовании Filter by trace ID с производными полями Loki убедитесь, что регулярное выражение производного поля соответствует имени поля ID трассировки, используемому в ваших журналах. Разные библиотеки инструментирования используют разные имена полей (
traceID,trace_idилиtraceId). Распространённые шаблоны регулярных выражений по формату инструментирования см. в разделе Trace to logs.
Строки журнала Loki не показывают ссылку на трассировку
Причина: Обратное направление — переход от строки журнала Loki к трассировке — не работает. На строках журнала не появляется ссылка на трассировку.
Решение:
- Убедитесь, что производное поле настроено в источнике данных Loki в разделе Additional settings > Derived fields. Производное поле извлекает ID трассировки из строк журнала и создаёт ссылку на Tempo.
- Проверьте, что регулярное выражение производного поля соответствует формату ID трассировки в ваших журналах. Используйте Show example log message в настройках производного поля, чтобы протестировать регулярное выражение на образце строки журнала.
- Убедитесь, что переключатель Internal link включён и указывает на правильный источник данных Tempo.
- Если разные службы используют разные имена полей ID трассировки, вам нужна отдельная запись производного поля для каждого формата. Шаблоны регулярных выражений по формату см. в разделе Trace to logs.
Ссылка trace to metrics не появляется
Причина: Ссылки на метрики не появляются при просмотре трассировки.
Решение:
- Убедитесь, что источник данных Prometheus или другой источник данных метрик настроен в настройках Trace to metrics.
- Проверьте, что настроенные теги существуют в ваших промежутках.
- При использовании пользовательских запросов убедитесь, что они являются допустимым PromQL.
- Убедитесь, что переменная
$__tagsправильно размещена в пользовательских запросах.
Ссылка trace to profiles не появляется
Причина: Ссылки на данные профилирования не появляются при просмотре трассировки.
Решение:
- Убедитесь, что источник данных Grafana Pyroscope настроен в настройках Trace to profiles.
- Проверьте, что настроенные теги существуют в ваших промежутках.
- Убедитесь, что настроенный тип профиля соответствует тому, для которого у Pyroscope есть данные (например,
process_cpu:cpu:nanoseconds:cpu:nanoseconds). Несоответствие между настроенным типом профиля и доступными данными приводит к тому, что ссылка не появляется. - Сузьте значения Span start time shift и Span end time shift. Профили выбираются через интервалы, поэтому узкое временное окно вокруг промежутка с большей вероятностью совпадёт с данными профиля, чем широкое.
- Убедитесь, что источник данных профилирования подключён и возвращает данные.
Ссылки появляются, но не возвращают данных
Причина: Сгенерированный запрос не соответствует никаким данным в целевом источнике данных.
Решение:
- Настройте Span start time shift и Span end time shift, чтобы расширить диапазон времени.
- Убедитесь, что метки журналов или метрик соответствуют атрибутам промежутка.
- Проверьте, что сопоставления тегов правильно транслируют имена атрибутов между источниками данных. Атрибуты промежутка используют точки (например,
service.name), но метки Loki используют подчёркивания (например,service_name). Убедитесь, что сопоставления тегов учитывают это различие. Конфигурацию сопоставления тегов см. в разделе Trace to logs. - Если такой тег, как
pod, хранится как структурированные метаданные Loki, а не как индексированная метка, автоматически сгенерированный селектор потока{pod="..."}возвращает пустые результаты. Включите Use custom query и переместите тег в фильтр конвейера. Пример пользовательского запроса см. в разделе Trace to logs. - Выполните сгенерированный запрос напрямую в представлении Explore целевого источника данных, чтобы подтвердить, что он возвращает данные вне контекста трассировки.
- Используйте Query Inspector, чтобы просмотреть сгенерированный запрос и убедиться, что он верен.
Проблемы производительности
Эти проблемы связаны с медленными запросами или высоким потреблением ресурсов.
Медленные запросы трассировок
Причина: Запросы возвращают результаты долго.
Решение:
- Уменьшите диапазон времени дашборда или Explore.
- Добавьте более конкретные фильтры, чтобы сузить область поиска.
- По возможности используйте индексированные атрибуты в запросах TraceQL.
- Включите потоковую передачу, чтобы видеть результаты по мере их появления.
- Рассмотрите использование конструктора запросов Search, который может помочь оптимизировать запросы.
Высокое использование памяти во время запросов
Причина: Большие трассировки или наборы результатов потребляют чрезмерное количество памяти.
Решение:
- Уменьшите настройку Limit в параметрах запроса, чтобы возвращать меньше трассировок.
- Уменьшите настройку Span Limit, чтобы возвращать меньше промежутков на трассировку.
- Добавьте фильтры, чтобы уменьшить размер набора результатов.
- Избегайте запросов за очень большие диапазоны времени.
Другие распространённые проблемы
Следующие проблемы не выдают конкретных сообщений об ошибках, но встречаются часто.
Граф узлов не отображается
Причина: Визуализация графа узлов не появляется над представлением трассировки.
Решение:
- Убедитесь, что Node graph включён в настройках источника данных Tempo в разделе Additional settings.
- Проверьте, что трассировка содержит несколько промежутков с отношениями родитель-потомок. Промежутки должны включать
traceIDиspanID, а некорневые промежутки должны включатьparentSpanID, чтобы установить иерархию. Если эти идентификаторы отсутствуют, данные трассировки неполны на уровне инструментирования, и граф не может быть отрисован.
Автодополнение не работает
Причина: Редактор TraceQL не показывает подсказки для атрибутов или значений. Автодополнение требует, чтобы Tempo перечислял теги, что требует поддерживаемого бэкенда хранения (vParquet или более нового).
Решение:
- Для самостоятельно размещённого Tempo убедитесь, что бэкенд хранения поддерживает поиск по тегам. Tempo требует формат
vParquetили более новый для поиска по тегам и автодополнения. Подробности см. в разделе Конфигурация Parquet. Grafana Cloud Traces поддерживает автодополнение по умолчанию. - Проверьте настройку Tags time range в настройках источника данных, чтобы убедиться, что она охватывает период с недавними данными трассировки.
- Увеличьте настройку Tag limit, если у вас много уникальных атрибутов.
- Убедитесь, что подключение источника данных Tempo работает, выбрав Save & test в настройках источника данных.
Настройки источника данных исчезают после перезапуска
Причина: Вы настроили параметры в интерфейсе Grafana (такие как ссылки trace-to-logs, граф служб или временные сдвиги промежутков), но они исчезают после перезапуска Grafana. Это происходит, когда источник данных провижинен через файл конфигурации YAML, Helm-чарт или Terraform. Провижиненные источники данных доступны только для чтения в интерфейсе — любые изменения, которые вы вносите через интерфейс, не сохраняются и молча откатываются при следующем перезапуске.
Вы можете определить, что источник данных провижинен, если форма настроек доступна только для чтения и кнопка читается как Test вместо Save & test.
Решение:
- Чтобы изменить настройки навсегда, отредактируйте файл YAML провижининга и перезапустите Grafana (или дождитесь перезагрузки системы провижининга). Любую настройку, доступную в интерфейсе, можно задать в файле YAML, включая конфигурацию trace-to-logs, trace-to-metrics и графа служб. Полный справочник по YAML см. в разделе Провижининг источника данных Tempo.
- Для Grafana Cloud вы можете клонировать провижиненный источник данных, чтобы создать редактируемую копию, которая сохраняет изменения интерфейса. Шаги см. в разделе Клонирование провижиненного источника данных для Grafana Cloud.
Алертинг TraceQL недоступен
Причина: Вы можете выбрать источник данных Tempo в конструкторе правил Grafana Alerting, но стандартные запросы поиска TraceQL возвращают данные трассировки (промежутки и ID трассировок), а не числовые временные ряды. Правила алертинга требуют числовых данных для вычисления порогов, поэтому запросы поиска трассировок не создают пригодных условий алертинга.
Решение:
Запросы метрик TraceQL (такие как { } | rate() или { status = error } | count_over_time()) возвращают числовые временные ряды и могут напрямую управлять порогами алертов. Однако алертинг TraceQL требует экспериментального флага функции tempoAlerting, который отключён по умолчанию. Чтобы включить его, задайте
флаг функции tempoAlerting в вашей конфигурации Grafana. Для Grafana Cloud свяжитесь с поддержкой, чтобы его включить. Пошаговую настройку см. в разделе
Алерты на основе трассировок.
Caution
Флаг функции
tempoAlertingэкспериментальный. Для продакшен-алертинга рассмотрите подход на основе Prometheus, описанный ниже.
В качестве альтернативы используйте генератор метрик Tempo, чтобы создавать метрики Prometheus из данных трассировки, затем создайте правила алертинга против источника данных Prometheus, который хранит эти метрики.
- Настройте
генератор метрик Tempo (используя процессор
service-graphs,span-metricsилиlocal-blocks), чтобы создавать метрики из трассировок и удалённо записывать их в совместимый с Prometheus бэкенд. - Создайте правила алертинга против источника данных Prometheus, который принимает эти метрики. Например, создайте алерт по высокой частоте ошибок, используя
traces_spanmetrics_calls_totalс фильтромstatus_code="STATUS_CODE_ERROR". - Обратитесь к таблице поддержки функций в обзоре источника данных Tempo за подробностями о поддержке алертинга.
Переключение между несколькими экземплярами Tempo
Причина: У вас настроено несколько источников данных Tempo (например, по одному на среду или на арендатора), но нет встроенного раскрывающегося списка в интерфейсе Explore или дашбордах для динамического переключения между ними.
Обходное решение:
- В дашбордах создайте
переменную шаблона источника данных, отфильтрованную по типу
tempo. Это добавляет раскрывающийся список, позволяющий зрителям переключаться между экземплярами Tempo без редактирования дашборда. - В Explore используйте выбор источника данных в верхней панели, чтобы переключаться между настроенными источниками данных Tempo.
- Для мультиарендных настроек на одном экземпляре Tempo рассмотрите использование заголовка
X-Scope-OrgIDвместо отдельных источников данных. Подробности конфигурации см. в разделе Мультиарендность.
Проблемы с Private data source connect (только Grafana Cloud)
Эти проблемы связаны с подключением к приватному экземпляру Tempo с помощью Private data source connect (PDC). PDC доступен только в Grafana Cloud.
Note
Private data source connect позволяет Grafana Cloud безопасно подключаться к источникам данных в вашей приватной сети, не открывая их для публичного интернета. Инструкции по настройке см. в разделе Private data source connect.
Агент PDC не подключён
Сообщение об ошибке: No healthy PDC agents available или Private data source connect agent not connected
Причина: Агент PDC, установленный в вашей приватной сети, не запущен или не может подключиться к Grafana Cloud.
Решение:
- Убедитесь, что агент PDC запущен в вашей приватной сети.
- Проверьте журналы агента PDC на предмет ошибок подключения.
- Убедитесь, что у агента PDC есть исходящий сетевой доступ к конечным точкам Grafana Cloud.
- Убедитесь, что агент PDC использует правильный токен для вашего экземпляра Grafana Cloud.
- Проверьте, что правила брандмауэра разрешают исходящие HTTPS-подключения (порт 443) от агента PDC.
- Перезапустите агент PDC, если он выглядит зависшим или неотвечающим.
Дополнительную информацию см. в разделе Private data source connect.
Подключение через PDC не удаётся
Сообщение об ошибке: Failed to connect through private data source или Connection refused via PDC
Причина: Агент PDC подключён к Grafana Cloud, но не может достичь экземпляра Tempo в вашей приватной сети.
Решение:
- Убедитесь, что URL Tempo верен и доступен с машины, на которой запущен агент PDC.
- Проверьте, что агент PDC может разрешить имя хоста Tempo (разрешение DNS).
- Убедитесь, что нет правил брандмауэра, блокирующих подключения от агента PDC к Tempo.
- Убедитесь, что порт Tempo (по умолчанию
3200) открыт и доступен. - Проверьте связность с хоста агента PDC до Tempo, используя
curlилиtelnet.
Ошибки тайм-аута PDC
Сообщение об ошибке: Request timed out via private data source connect
Причина: Запросы через туннель PDC истекают по тайм-ауту.
Решение:
- Проверьте сетевую задержку между агентом PDC и Tempo.
- Убедитесь, что у хоста агента PDC достаточно ресурсов (ЦП, память, пропускная способность сети).
- Убедитесь, что никакие сетевые устройства между агентом PDC и Tempo не отбрасывают долгоживущие подключения.
- Для больших запросов рассмотрите возможность уменьшения диапазона времени или добавления более конкретных фильтров.
- Проверьте, не разделяют ли несколько источников данных один и тот же агент PDC, что может вызвать конкуренцию за ресурсы.
Несоответствие аутентификации PDC
Сообщение об ошибке: Unauthorized или 403 Forbidden при использовании PDC
Причина: Аутентификация, настроенная в источнике данных, не работает с подключением PDC.
Решение:
- Убедитесь, что учётные данные аутентификации правильно настроены в настройках источника данных Grafana Cloud.
- Проверьте, что экземпляр Tempo принимает настроенный метод аутентификации.
- Убедитесь, что любые требуемые заголовки (такие как
X-Scope-OrgIDдля мультиарендного Tempo) правильно передаются через PDC. - Протестируйте подключение напрямую с хоста агента PDC, чтобы убедиться, что учётные данные работают вне PDC.
Получение дополнительной помощи
Если проблемы сохраняются после следования этому руководству по устранению неполадок:
- Пользователям Grafana Cloud: попробуйте Grafana Assistant для интерактивного исследования проблем с трассировками (если он включён в вашей учётной записи).
- Пользователям Grafana Cloud, которые отправляют трассировки с помощью Alloy, см. шаги по устранению неполадок Alloy на предмет проблем на стороне приёма.
- Задавайте вопросы на форумах сообщества Grafana или в Grafana Community Slack.
- Просмотрите проблемы Grafana на GitHub на предмет известных ошибок.
- Просмотрите проблемы Tempo на GitHub на предмет ошибок, специфичных для Tempo.
- Включите журналирование отладочного уровня в Grafana, чтобы получить подробную информацию об ошибках.
- Проверьте журналы сервера Tempo на предмет дополнительных сведений об ошибках.
- Свяжитесь с поддержкой Grafana, если вы пользователь Enterprise, Cloud Pro или Cloud Contracted.
При сообщении о проблемах указывайте:
- Версию Grafana
- Версию Tempo
- Сообщения об ошибках (удалите конфиденциальную информацию)
- Шаги для воспроизведения
- Примеры запросов TraceQL (удалите конфиденциальные данные)
- Соответствующие настройки конфигурации