telemetrygen — это генератор данных из OpenTelemetry Collector Contrib. Он отправляет синтетические журналы, трассировки и метрики OTLP, а также поддерживает флаги, с помощью которых можно настраивать состав данных: несколько сервисов, уровни серьёзности журналов, статусы спанов и дочерние спаны, а также разные типы метрик. Используйте его, чтобы убедиться, что коллектор ClickStack OpenTelemetry принимает данные и что разнообразные реалистичные события отображаются в интерфейсе ClickStack.
В этом руководстве предполагается, что коллектор уже запущен, а конечные точки OTLP доступны на 4317 (gRPC) и 4318 (HTTP).
- Управляемый ClickStack
- ClickStack с открытым исходным кодом
1
Предварительные требования
В этом руководстве предполагается, что вы уже выполнили руководство «Начало работы» для Управляемого ClickStack и что у вас запущен OpenTelemetry Collector, а его конечные точки OTLP gRPC (4317) и HTTP (4318) доступны с машины, на которой вы запускаете telemetrygen. Если вы защитили collector с помощью OTLP_AUTH_TOKEN, держите это значение под рукой.2
Установите telemetrygen
Запуститеtelemetrygen из его Docker-образа (установка не требуется). Задайте небольшую обёртку, чтобы команды ниже оставались читаемыми; --add-host позволяет контейнеру подключаться к коллектору, который прослушивает хост:localhost в качестве цели:3
Задайте переменные среды
Если collector защищён, экспортируйте токен аутентификации:Незащищённый коллекторКоллектор ClickStack OpenTelemetry по умолчанию не требует аутентификации. Если вы не выполнили инструкции из раздела Защита коллектора, чтобы задать
OTLP_AUTH_TOKEN, удалите строку --otlp-header из вспомогательной команды ниже.tg, чтобы в каждой команде указывать только изменяющиеся параметры (сервис, уровень, status, атрибуты):4
Генерация журналов
Отправляйте журналы как реалистичный набор записей с разными уровнями серьёзности для разных сервисов: в основном информационные, с одним предупреждением и одной ошибкой, а не как единый однородный поток:--serviceзадаётservice.name, чтобы события можно было связать с сервисом.--severity-textи--severity-numberзадают уровень (severity-numberпринимает значения от 1 до 24).--bodyзадаёт сообщение лога.--otlp-attributesзадаёт resource-level attributes (key="value",key=trueилиkey=<integer>).--telemetry-attributesзадаёт атрибуты для каждой записи.
5
Сгенерируйте трассировки
Отправьте трассировки из нескольких спанов от нескольких работоспособных сервисов и одной неисправной зависимости. Это придаст карте сервисов реалистичный вид: в целом всё будет работать нормально, но один сервис будет выдавать ошибки, а представления ошибок заполнятся:--child-spansгенерирует указанное количество дочерних спанов для каждого trace, добавляя ему реалистичную глубину.--span-durationзадаёт длительность каждого спана (например,120ms,2s).--status-codeпринимает одно из значений:Unset,Error,Ok(или0,1,2). ИспользуйтеError, чтобы проверить отображение ошибок.--span-linksдобавляет связи между спанами.--workersзапускает несколько генераторов параллельно, чтобы получить больший и более разнообразный объём данных.
6
Сгенерируйте метрики
Отправьте три распространённых типа метрик, чтобы на панелях мониторинга появились Counter, Gauge и распределение. В отличие от некоторых генераторов,telemetrygen учитывает параметр --duration при генерации метрик, поэтому вручную останавливать его не нужно:--metric-type принимает значения Gauge, Sum, Histogram или ExponentialHistogram. --otlp-metric-name задаёт имя серии, чтобы вы могли найти её в интерфейсе, а --aggregation-temporality может иметь значение delta или cumulative.7
Проверьте в ClickStack
Откройте интерфейс ClickStack из консоли ClickHouse Cloud. В представленииSearch установите диапазон времени Last 15 minutes и переключайтесь между источниками Logs и Traces. Отфильтруйте по ServiceName, чтобы увидеть сервисы frontend, checkout, cart и payment, а по SeverityText — чтобы найти записи журнала с предупреждениями и ошибками. Откройте трассировку payment, чтобы увидеть дочерние спаны и статус ошибки. Откройте Chart Explorer, выберите Metrics и постройте график для одной из метрик, которые вы указали выше (например, http.server.requests), чтобы проверить ингестию метрик.