Gubernator поддерживает OpenTelemetry для создания подробных трассировок поведения приложения и отправки их на сервер Jaeger Tracing.
Jaeger exporter включён по умолчанию и отправляет трассировки на локальный порт 6831/udp.
Настройте с помощью переменных среды:
OTEL_EXPORTER_JAEGER_PROTOCOL=http/thrift.binary
OTEL_EXPORTER_JAEGER_ENDPOINT=http://<jaeger-server>:14268/api/traces
См. спецификацию конфигурации OpenTelemetry (Open Telemetry specification) для полного списка доступных переменных окружения и example.conf для возможных примеров переменных окружения.
Этот параметр работает путём экспорта дейтаграмм UDP на удалённый хост, а не на localhost. Это будет работать, но есть риск потери данных. Если диапазон экспортируется с достаточным количеством данных, он превысит размер MTU сетевого интерфейса, и дейтаграмма будет отброшена. Эта проблема возникает только при отправке на удаленный хост. Размер MTU петлевого интерфейса обычно намного больше, и эта проблема не возникает. При экспорте через HTTP ограничения MTU нет. Это эффективно обходит Jaeger Agent и отправляет данные напрямую в коллектор Jaeger.
Используйте следующее, чтобы отправлять данные трассировки непосредственно на honeycomb.io. Для большинства рабочих нагрузок рекомендуется настроить Refinery.
OTEL_TRACES_SAMPLER=always_on
OTEL_EXPORTER_OTLP_PROTOCOL=otlp
OTEL_EXPORTER_OTLP_ENDPOINT=https://api.honeycomb.io:443
OTEL_EXPORTER_OTLP_HEADERS=x-honeycomb-team=<your-api-key>
Поскольку Gubernator генерирует трассировку для каждого запроса, объём трассировки может превысить ресурсы Jaeger. В рабочей среде рекомендуется установить OTEL_TRACES_SAMPLER=parentbased_traceidratio
тип сэмплера и OTEL_TRACES_SAMPLER_ARG
в десятичное число от 0 (нет) до 1 (все) для доли выборок трассировок.
OTEL_TRACES_SAMPLER=always_on
OTEL_TRACES_SAMPLER_ARG=1.0
OpenTelemetry определяет возможности для клиентов отправлять идентификаторы трассировок нижестоящим службам. Этот сервис свяжет диапазон клиента с диапазоном сервера. Когда клиент и сервер отправляют трассировки одному и тому же серверу Jaeger, трассировка будет отображаться с двумя связанными диапазонами в одном представлении.
При отправке gRPC-запросов в Gubernator обязательно используйте otelgrpc
interceptor, чтобы передать контекст трассировки клиента на сервер, чтобы он мог добавить диапазоны.
Смотрите раздел gRPC и cmd/gubernator-cli/main.go для примеров использования.
Если вы используете Golang gRPC клиент Gubernator, клиент должен быть создан следующим образом:
import (
"go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc"
"google.golang.org/grpc"
)
// ...
opts := []grpc.DialOption{
grpc.WithBlock(),
grpc.WithUnaryInterceptor(otelgrpc.UnaryClientInterceptor()),
grpc.WithStreamInterceptor(otelgrpc.StreamClientInterceptor()),
}
endpoint := "<your-endpoint-url>"
conn, err := grpc.DialContext(ctx, endpoint, opts...)
Если используется HTTP, идентификаторы трассировки должны быть переданы в заголовках HTTP. Обычно это делается с использованием инструментария OpenTelemetry, такого как otelhttp
.
Смотрите реестр OpenTelemetry (OpenTelemetry registry) для инструментария с использованием многих других фреймворков HTTP.
Когда Gubernator развёрнут как отдельный демон, gRPC-сервис Gubernator будет получать встроенные идентификаторы трассировок в запросах от объекта контекста клиента.
Для этого клиент должен быть настроен на встраивание идентификаторов трассировок. Кодовую базу как модуль Go, почти все функции Губернитора создают промежутки, связанные с идентификаторами трассировки, встроенными в объект context
.
Следуйте тем же шагам, чтобы настроить свою кодовую базу аналогично автономному Губернатору, указанному выше.
Подробнее читайте по ссылке: https://github.com/mailgun/holster/blob/master/tracing/README.md
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )