Параметры Instrumentation
Пользовательский ресурс Instrumentation предоставляет различные параметры конфигурации, позволяющие управлять тем, как автоинструментирование применяется к вашим приложениям. Эти параметры позволяют настраивать поведение instrumentation, задавать требования к ресурсам и конфигурировать настройки для отдельных языков.
Сборка Alauda для OpenTelemetry v2 Operator предоставляет механизм автоматического внедрения для instrumentation, но не включает предварительно собранные библиотеки instrumentation или образы контейнеров. Вам необходимо собрать собственные образы instrumentation или использовать образы, предоставляемые сообществом.
Содержание
Базовая конфигурация InstrumentationПараметры CR InstrumentationПротоколы автоинструментирования по умолчаниюВнедрение на основе аннотацийВнедрение для отдельных языковВнедрение переменных SDKПоддерживаемые значения для аннотаций внедренияInstrumentation на уровне namespaceКонфигурация ресурсовВнедрение переменных окруженияВыборочное instrumentationСправочник по InstrumentationБазовая конфигурация Instrumentation
Пользовательский ресурс (CR) Instrumentation определяет, как собираются данные телеметрии из ваших приложений. Он предоставляет настройки для endpoint экспортера, распространения контекста, семплирования и instrumentation для отдельных языков.
- Endpoint экспортера, на который Collector получает данные телеметрии. Протокол по умолчанию — gRPC на порту
4317. - Форматы распространения контекста. Поддерживаемые значения:
tracecontext,baggage,b3,b3multi,jaeger,ottraceиnone. - Конфигурация семплера для управления объемом trace-данных. Тип
parentbased_traceidratioс аргументом0.25означает, что семплируются 25% новых корневых trace. - Автоинструментирование Python по умолчанию использует
otlp/http. Endpoint должен указывать на HTTP-порт4318Collector. - Автоинструментирование .NET по умолчанию использует
otlp/http. Endpoint должен указывать на HTTP-порт4318Collector. - Автоинструментирование Go по умолчанию использует
otlp/http. Endpoint должен указывать на HTTP-порт4318Collector.
Параметры CR Instrumentation
Следующая таблица описывает параметры, которые можно настроить в пользовательском ресурсе Instrumentation.
Протоколы автоинструментирования по умолчанию
Каждый язык автоинструментирования использует протокол по умолчанию для экспорта данных телеметрии в Collector. В следующей таблице перечислены протоколы по умолчанию.
Вы можете настраивать переменные окружения в CR Instrumentation. Однако после того, как Operator внедрит эти переменные окружения в контейнер приложения, их нельзя удалить простым обновлением или удалением CR Instrumentation. Чтобы удалить внедренные переменные окружения, необходимо перезапустить или повторно развернуть затронутые pod.
Внедрение на основе аннотаций
Чтобы включить автоинструментирование для вашего приложения, добавьте соответствующую аннотацию к вашему pod или 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 в ваш pod.
Аннотация inject-sdk полезна, когда требуется внедрить переменные окружения SDK без включения автоинструментирования для конкретного языка. Это особенно удобно для приложений, которые уже включают зависимости OpenTelemetry SDK, но нуждаются в централизованном управлении конфигурацией.
Поддерживаемые значения для аннотаций внедрения
Instrumentation на уровне namespace
Вы можете применить instrumentation ко всем pod в namespace, добавив аннотацию непосредственно к namespace:
Аннотации на уровне namespace предоставляют удобный способ включить instrumentation для всех приложений в среде без изменения спецификаций отдельных pod.
Конфигурация ресурсов
Вы можете указать requests и limits ресурсов для init container instrumentation:
Внедрение переменных окружения
CR Instrumentation позволяет внедрять дополнительные переменные окружения в instrumented containers:
Эти переменные окружения автоматически добавляются в контейнер приложения при внедрении instrumentation.
Выборочное instrumentation
Вы можете управлять тем, какие контейнеры в pod с несколькими контейнерами получают instrumentation, используя аннотации для конкретных контейнеров:
Эта аннотация гарантирует, что instrumentation будет применено только к указанным контейнерам, а остальные контейнеры останутся без изменений.
Если аннотация container-names не указана, instrumentation по умолчанию применяется к первому контейнеру в pod.
Справочник по Instrumentation
Чтобы сослаться на конкретный CR Instrumentation, можно использовать полный формат ссылки в аннотации:
Это позволяет использовать разные конфигурации instrumentation для разных приложений в рамках одного namespace.