Перейти к основному содержимому
Перейти к основному содержимому

ClickStack - Примеры логов, трасс и метрик

Следующий пример предполагает, что вы запустили ClickStack, следуя инструкциям для образа all-in-one, и подключились к локальной инстанции ClickHouse или инстанции ClickHouse Cloud.

HyperDX в ClickHouse Cloud

Этот набор данных также можно использовать с HyperDX в ClickHouse Cloud с незначительными изменениями в процессе, как указано. Если вы используете HyperDX в ClickHouse Cloud, пользователям потребуется запустить локальный сборщик Open Telemetry, как описано в руководстве по началу работы с этой моделью развертывания.

Посетите http://localhost:8080, чтобы получить доступ к интерфейсу HyperDX, если вы развертываете локально. Если вы используете HyperDX в ClickHouse Cloud, выберите свой сервис и HyperDX в левом меню.

HyperDX UI

Скопируйте ключ API для приема данных

HyperDX в ClickHouse Cloud

Этот шаг не требуется, если вы используете HyperDX в ClickHouse Cloud, где поддержка ключей приема данных в настоящее время не реализована.

Перейдите в раздел Настройки команды и скопируйте Ключ API для приема данных из раздела API Keys. Этот API ключ обеспечивает безопасный прием данных через сборщик OpenTelemetry.

Копировать ключ API

Скачайте образец данных

Для того чтобы заполнить интерфейс образцами данных, скачайте следующий файл:

Образец данных


# curl
curl -O https://storage.googleapis.com/hyperdx/sample.tar.gz

# or

# wget https://storage.googleapis.com/hyperdx/sample.tar.gz

Этот файл содержит примеры логов, метрик и трасс из нашего публичного демо OpenTelemetry - простого интернет-магазина с микросервисами. Скопируйте этот файл в желаемый каталог.

Загрузите образец данных

Чтобы загрузить эти данные, мы просто отправим их на HTTP-эндпоинт развернутого сборщика OpenTelemetry (OTel).

Сначала экспортируйте скопированный ранее API ключ.

HyperDX в ClickHouse Cloud

Этот шаг не требуется, если вы используете HyperDX в ClickHouse Cloud, где поддержка ключей приема данных в настоящее время не реализована.


# export API key
export CLICKSTACK_API_KEY=<YOUR_INGESTION_API_KEY>

Запустите следующую команду, чтобы отправить данные на OTel сборщик:

for filename in $(tar -tf sample.tar.gz); do
  endpoint="http://localhost:4318/v1/${filename%.json}"
  echo "loading ${filename%.json}"
  tar -xOf sample.tar.gz "$filename" | while read -r line; do
    echo "$line" | curl -s -o /dev/null -X POST "$endpoint" \
    -H "Content-Type: application/json" \
    -H "authorization: ${CLICKSTACK_API_KEY}" \
    --data-binary @-
  done
done

Это имитирует источники логов, трасс и метрик OTLP, отправляющие данные на OTel сборщик. В производственной среде эти источники могут быть клиентами языка или даже другими OTel сборщиками.

Вернувшись к просмотру Поиск, вы должны увидеть, что данные начали загружаться (откорректируйте временной интервал на Последний 1 час, если данные не отображаются):

Поиск в HyperDX

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

Изучите сессии

Предположим, у нас есть сообщения о том, что пользователи испытывают проблемы с оплатой товаров. Мы можем просмотреть их опыт, используя функции воспроизведения сессий HyperDX.

Выберите Клиентские сессии в левом меню.

Сессии

Этот вид позволяет нам увидеть фронтовые сессии нашего интернет-магазина. Сессии остаются анонимными, пока пользователи не перейдут к оформлению заказа и не попробуют завершить покупку.

Обратите внимание, что некоторые сессии с электронными адресами имеют связанные ошибки, что может подтверждать сообщения о неудачных транзакциях.

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

Воспроизведение сессии

Воспроизведение показывает, как пользователь перемещается по сайту, добавляя товары в свою корзину. Не стесняйтесь перемотать на более поздний этап сессии, где они пытаются завершить платеж.

подсказка

Любые ошибки помечаются на временной шкале красным цветом.

Пользователь не смог оформить заказ, при этом не было явных ошибок. Прокрутите вниз по левому панелю, где содержатся события сети и консоли из браузера пользователя. Вы заметите, что ошибка 500 была вызвана при вызове /api/checkout.

Ошибка в сессии

Выберите эту ошибку 500. Ни Обзор, ни Значения колонок не указывают на источник проблемы, кроме того факта, что ошибка неожиданна, что вызывает Внутреннюю ошибку.

Изучите трассы

Перейдите на вкладку Трасса, чтобы увидеть полную распределенную трассу.

Трасса сессии

Прокрутите трассу вниз, чтобы увидеть источник ошибки - промежуток сервиса checkout. Выберите промежуток сервиса Payment.

Промежуток

Выберите вкладку Значения колонок и прокрутите вниз. Мы можем увидеть, что проблема связана с переполнением кэша.

Значения колонок

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

Сопоставленный лог

Мы установили, что кэш заполняется в сервисе платежей, что мешает завершению платежей.

Изучите логи

Для получения дополнительных деталей мы можем вернуться к Просмотр :

Выберите Логи из источников и примените фильтр к сервису payment.

Логи

Мы видим, что, хотя проблема недавняя, количество затронутых платежей высоко. Более того, кэш, связанный с платежами по визе, похоже, вызывает проблемы.

Постройте графики метрик

Хотя в коде явно была введена ошибка, мы можем использовать метрики для подтверждения размера кэша. Перейдите в вид Chart Explorer.

Выберите Метрики в качестве источника данных. Завершите построитель графиков, чтобы отобразить Максимум visa_validation_cache.size (Gauge) и нажмите кнопку воспроизведения. Кэш явно увеличивался, прежде чем достичь максимального размера, после чего были сгенерированы ошибки.

Метрики