Варианты инструментирования
Пользовательский ресурс Instrumentation предоставляет различные параметры конфигурации для управления автоматическим инструментированием ваших приложений. Эти параметры позволяют настроить поведение инструментирования, указать требования к ресурсам и задать настройки, специфичные для конкретных языков программирования.
Сборка OpenTelemetry v2 Operator от Alauda обеспечивает механизм автоматической инъекции для инструментирования, но не включает предустановленные библиотеки инструментирования или контейнерные образы. Вам необходимо самостоятельно создавать образы инструментирования или использовать образы, предоставленные сообществом.
Содержание
Базовая конфигурация инструментированияПараметры CR InstrumentationПротоколы автоинструментирования по умолчаниюИнъекция на основе аннотацийИнъекция, специфичная для языкаИнъекция переменных SDKПоддерживаемые значения для аннотаций инъекцииИнструментирование на уровне namespaceКонфигурация ресурсовВнедрение переменных окруженияВыборочное инструментированиеСсылка на InstrumentationБазовая конфигурация инструментирования
Пользовательский ресурс Instrumentation (CR) определяет, как собираются телеметрические данные из ваших приложений. Он предоставляет настройки для конечной точки экспортера, распространения контекста, выборки и инструментирования, специфичного для языка.
- Конечная точка экспортера, куда Collector получает телеметрию. Протокол по умолчанию — gRPC на порту
4317. - Форматы распространения контекста. Поддерживаемые значения включают
tracecontext,baggage,b3,b3multi,jaeger,ottraceиnone. - Конфигурация выборщика для контроля объема данных трассировки. Тип
parentbased_traceidratioс аргументом0.25означает, что 25% новых корневых трасс выбираются для сбора. - Автоматическое инструментирование Python по умолчанию использует
otlp/http. Конечная точка должна указывать на HTTP-порт4318Collector. - Автоматическое инструментирование .NET по умолчанию использует
otlp/http. Конечная точка должна указывать на HTTP-порт4318Collector. - Автоматическое инструментирование Go по умолчанию использует
otlp/http. Конечная точка должна указывать на HTTP-порт4318Collector.
Параметры CR Instrumentation
В следующей таблице описаны параметры, которые можно настроить в пользовательском ресурсе Instrumentation.
Протоколы автоинструментирования по умолчанию
Каждый язык автоинструментирования использует протокол по умолчанию для экспорта телеметрии в Collector. В таблице перечислены протоколы по умолчанию.
Вы можете настроить переменные окружения в CR Instrumentation. Однако после того, как Operator внедрит эти переменные в контейнер приложения, их нельзя удалить простым обновлением или удалением CR Instrumentation. Для удаления внедренных переменных окружения необходимо перезапустить или пересоздать соответствующие поды.
Инъекция на основе аннотаций
Чтобы включить автоинструментирование для вашего приложения, добавьте соответствующую аннотацию к вашему поду или namespace:
Инъекция, специфичная для языка
Формат аннотации: instrumentation.opentelemetry.io/inject-<language>, где <language> может быть:
apache-httpd— для Apache HTTP Serverdotnet— для приложений .NETgo— для приложений Gojava— для приложений Javanodejs— для приложений Node.jspython— для приложений Python
Инъекция переменных SDK
Вы можете использовать аннотацию instrumentation.opentelemetry.io/inject-sdk, чтобы указать OpenTelemetry Operator внедрить переменные окружения SDK в ваш под.
Аннотация inject-sdk полезна, когда нужно внедрить переменные окружения SDK без включения автоинструментирования, специфичного для языка. Это особенно удобно для приложений, которые уже содержат зависимости OpenTelemetry SDK, но требуют централизованного управления конфигурацией.
Поддерживаемые значения для аннотаций инъекции
Инструментирование на уровне namespace
Вы можете применить инструментирование ко всем подам в namespace, добавив аннотацию к самому namespace:
Аннотации на уровне namespace предоставляют удобный способ включить инструментирование для всех приложений в среде без изменения спецификаций отдельных подов.
Конфигурация ресурсов
Вы можете указать запросы и лимиты ресурсов для init-контейнера инструментирования:
Внедрение переменных окружения
CR Instrumentation позволяет внедрять дополнительные переменные окружения в инструментируемые контейнеры:
Эти переменные окружения автоматически добавляются в контейнер приложения при внедрении инструментирования.
Выборочное инструментирование
Вы можете контролировать, какие контейнеры в многоконтейнерном поде получают инструментирование, используя аннотации, специфичные для контейнеров:
Эта аннотация гарантирует, что инструментирование применяется только к указанным контейнерам, оставляя остальные без изменений.
Если аннотация container-names не указана, инструментирование по умолчанию применяется к первому контейнеру в поде.
Ссылка на Instrumentation
Чтобы сослаться на конкретный CR Instrumentation, вы можете использовать полный формат ссылки в аннотации:
Это позволяет использовать разные конфигурации инструментирования для различных приложений в одном namespace.