Сбор и чтение данных OpenTelemetry в azure Container Apps (предварительная версия)
Используя агент данных OpenTelemetry с средой Azure Container Apps, вы можете отправить данные о наблюдаемости в формате OpenTelemetry следующим образом:
Передача данных из агента в нужную конечную точку. Варианты назначения включают Аналитика приложения Azure Monitor, Datadog и любую конечную точку, совместимую с OpenTelemetry Protocol (OTLP).
Легко изменять конечные точки назначения без необходимости перенастройки способа их выдачи и без необходимости вручную запускать агент OpenTelemetry.
В этой статье показано, как настроить и настроить агент OpenTelemetry для приложения контейнера.
Настройка агента OpenTelemetry
Агенты OpenTelemetry живут в среде приложения контейнера. Параметры агента настраивается с помощью шаблона ARM или вызовов Bicep к среде или через ИНТЕРФЕЙС командной строки.
Каждый тип конечной точки (приложение Azure Monitor Аналитика, DataDog и OTLP) имеет определенные требования к конфигурации.
Необходимые компоненты
Включение управляемого агента OpenTelemetry в среду не означает, что агент собирает данные автоматически. Агенты отправляют данные только на основе параметров конфигурации и правильного инструментирования кода.
Настройка исходного кода
Подготовьте приложение для сбора данных путем установки пакета SDK OpenTelemetry и следуйте рекомендациям по OpenTelemetry для инструментирования метрик, журналов или трассировок.
Инициализация конечных точек
Прежде чем отправлять данные в место назначения коллекции, сначала необходимо создать экземпляр целевой службы. Например, если вы хотите отправить данные в приложение Azure Monitor Аналитика, необходимо заранее создать экземпляр приложения Аналитика.
Управляемый агент OpenTelemetry принимает следующие назначения:
- Azure Monitor Application Insights
- Datadog
- Любая конечная точка OTLP (например, New Relic или Honeycomb)
В следующей таблице показано, какой тип данных можно отправлять в каждое место назначения:
Назначение | Журналы | Метрики | Трассировки |
---|---|---|---|
приложение Azure Аналитика | Да | No | Да |
Datadog | No | Да | Да |
Настроенная конечная точка протокола OpenTelemetry (OTLP) | Да | Да | Да |
Azure Monitor Application Insights
Единственными сведениями о конфигурации, необходимыми для приложения Аналитика, является строка подключения. После строка подключения агент можно настроить с помощью шаблона ARM приложения контейнера или с помощью команд Azure CLI.
Перед развертыванием этого шаблона замените заполнители, окруженные значениями <>
.
{
...
"properties": {
"appInsightsConfiguration ": {
"connectionString": "<YOUR_APP_INSIGHTS_CONNECTION_STRING>"
}
"openTelemetryConfiguration": {
...
"tracesConfiguration":{
"destinations": ["appInsights"]
},
"logsConfiguration": {
"destinations": ["appInsights"]
}
}
}
}
Datadog
Для конфигурации агента Datadog требуется значение для site
экземпляра Datadog и key
из нее. Соберите эти значения из экземпляра Datadog в соответствии с этой таблицей:
Свойство агента Datadog | Свойство конфигурации container Apps |
---|---|
DD_SITE |
site |
DD_API_KEY |
key |
После получения этих сведений о конфигурации агент можно настроить с помощью шаблона ARM приложения контейнера или с помощью команд Azure CLI.
Перед развертыванием этого шаблона замените заполнители, окруженные значениями <>
.
{
...
"properties": {
...
"openTelemetryConfiguration": {
...
"destinationsConfiguration":{
...
"dataDogConfiguration":{
"site": "<YOUR_DATADOG_SUBDOMAIN>.datadoghq.com",
"key": "<YOUR_DATADOG_KEY>"
}
},
"tracesConfiguration":{
"destinations": ["dataDog"]
},
"metricsConfiguration": {
"destinations": ["dataDog"]
}
}
}
}
Конечная точка OTLP
Конечная точка протокола OpenTelemetry (OTLP) — это назначение данных телеметрии, использующее данные OpenTelemetry. В конфигурации приложения можно добавить несколько конечных точек OTLP. В следующем примере добавляются две конечные точки и отправляются следующие данные в эти конечные точки.
Имя конечной точки | Данные, отправленные в конечную точку |
---|---|
oltp1 |
Метрики и (или) трассировки |
oltp2 |
Журналы и /или трассировки |
Хотя вы можете настроить столько конечных точек, настроенных OTLP, сколько вам нравится, каждая конечная точка должна иметь отдельное имя.
{
"properties": {
"appInsightsConfiguration": {},
"openTelemetryConfiguration": {
"destinationsConfiguration":{
"otlpConfigurations": [
{
"name": "otlp1",
"endpoint": "ENDPOINT_URL_1",
"insecure": false,
"headers": "api-key-1=key"
},
{
"name": "otlp2",
"endpoint": "ENDPOINT_URL_2",
"insecure": true
}
]
},
"logsConfiguration": {
"destinations": ["otlp2"]
},
"tracesConfiguration":{
"destinations": ["otlp1", "otlp2"]
},
"metricsConfiguration": {
"destinations": ["otlp1"]
}
}
}
}
Имя | Описание |
---|---|
name |
Имя, выбранное для идентификации конечной точки, настроенной OTLP. |
endpoint |
URL-адрес назначения, получающего собранные данные. |
insecure |
Значение true по умолчанию. Определяет, следует ли включить безопасность транспорта клиента для подключения gRPC экспортера. Если значение false, headers параметр является обязательным. |
headers |
Разделенные пробелами значения в формате key=value, которые предоставляют необходимые сведения для безопасности конечных точек OTLP. Пример: "api-key=key other-config-value=value" . |
Настройка назначений данных
Чтобы настроить агент, используйте destinations
массив для определения агентов, которые приложение отправляет данные. Допустимые ключи — это appInsights
dataDog
либо имя пользовательской конечной точки OTLP. Вы можете управлять поведением агента на основе типов данных и параметров, связанных с конечной точкой.
По типу данных
Вариант | Пример |
---|---|
Выберите тип данных. | Журналы, метрики и (или) трассировки можно настроить по отдельности. |
Включите или отключите любой тип данных. | Вы можете отправлять только трассировки и никакие другие данные. |
Отправьте один тип данных нескольким конечным точкам. | Журналы можно отправлять как в DataDog, так и в настраиваемую конечную точку OTLP. |
Отправка разных типов данных в разные расположения. | Трассировки можно отправлять в конечную точку OTLP и метрики в DataDog. |
Отключите отправку всех типов данных. | Вы можете не отправлять данные через агент OpenTelemetry. |
По конечной точке
- Вы можете настроить только одну конечную точку приложения Аналитика и Datadog каждый раз.
- Хотя можно определить несколько конечных точек, настроенных OTLP, каждое из них должно иметь отдельное имя.
В следующем примере показано, как использовать конечную точку OTLP с именем customDashboard
. Он отправляет:
- трассировки для аналитики приложений и
customDashboard
- журналы для аналитики приложений и
customDashboard
- метрики DataDog и
customDashboard
{
...
"properties": {
...
"openTelemetryConfiguration": {
...
"tracesConfiguration": {
"destinations": [
"appInsights",
"customDashboard"
]
},
"logsConfiguration": {
"destinations": [
"appInsights",
"customDashboard"
]
},
"metricsConfiguration": {
"destinations": [
"dataDog",
"customDashboard"
]
}
}
}
}
## Example OpenTelemetry configuration
The following example ARM template shows how you might configure your container app to collect telemetry data using Azure Monitor Application Insights, Datadog, and with a custom OTLP agent named `customDashboard`.
Before you deploy this template, replace placeholders surrounded by `<>` with your values.
```json
{
"location": "eastus",
"properties": {
"appInsightsConfiguration": {
"connectionString": "<APP_INSIGHTS_CONNECTION_STRING>"
},
"openTelemetryConfiguration": {
"destinationsConfiguration": {
"dataDogConfiguration": {
"site": "datadoghq.com",
"key": "<YOUR_DATADOG_KEY>"
},
"otlpConfigurations": [
{
"name": "customDashboard",
"endpoint": "<OTLP_ENDPOINT_URL>",
"insecure": true
}
]
},
"tracesConfiguration": {
"destinations": [
"appInsights",
"customDashboard"
]
},
"logsConfiguration": {
"destinations": [
"appInsights",
"customDashboard"
]
},
"metricsConfiguration": {
"destinations": [
"dataDog",
"customDashboard"
]
}
}
}
}
Переменные среды
Агент OpenTelemetry автоматически внедряет набор переменных среды в приложение во время выполнения.
Первые две переменные среды соответствуют стандартной конфигурации экспортера OpenTelemetry и используются в пакетах разработки программного обеспечения OTLP уровня "Стандартный". Если вы явно задали переменную среды в спецификации приложения контейнера, значение перезаписывает автоматически введенное значение.
Сведения о конфигурации экспортера OTLP см. в разделе "Конфигурация экспортера OTLP".
Имя | Описание |
---|---|
OTEL_EXPORTER_OTLP_ENDPOINT |
URL-адрес базовой конечной точки для любого типа сигнала с необязательным номером порта. Этот параметр полезен при отправке нескольких сигналов в одну конечную точку и требуется, чтобы одна переменная среды контролировала конечную точку. Пример: http://otel.service.k8se-apps:4317/ |
OTEL_EXPORTER_OTLP_PROTOCOL |
Указывает транспортный протокол OTLP, используемый для всех данных телеметрии. Управляемый агент поддерживает только grpc . Значение: grpc . |
Другие три переменные среды относятся к приложениям контейнеров Azure и всегда внедряются. Эти переменные содержат URL-адреса конечной точки агента для каждого конкретного типа данных (журналы, метрики, трассировки).
Эти переменные необходимы только при использовании управляемого агента OpenTelemetry и другого агента OpenTelemetry. С помощью этих переменных вы можете управлять маршрутизацией данных между различными агентами OpenTelemetry.
Имя | Описание: | Пример |
---|---|---|
CONTAINERAPP_OTEL_TRACING_GRPC_ENDPOINT |
URL-адрес конечной точки только для данных трассировки. | http://otel.service.k8se-apps:43178/v1/traces/ |
CONTAINERAPP_OTEL_LOGGING_GRPC_ENDPOINT |
URL-адрес конечной точки только для данных журнала. | http://otel.service.k8se-apps:43178/v1/logs/ |
CONTAINERAPP_OTEL_METRIC_GRPC_ENDPOINT |
URL-адрес конечной точки только для данных метрик. | http://otel.service.k8se-apps:43178/v1/metrics/ |
Затраты на агент OpenTelemetry
Плата взимается за базовые вычислительные ресурсы агента.
Сведения о целевой службе для структуры выставления счетов и условий. Например, если вы отправляете данные в приложение Azure Monitor Аналитика и Datadog, вы несете ответственность за расходы, применяемые обеими службами.
Известные ограничения
- Агенты OpenTelemetry находятся в предварительной версии.
- Системные данные, такие как системные журналы или стандартные метрики контейнеров, недоступны для отправки агенту OpenTelemetry.
- Конечная точка приложения Аналитика не принимает метрики.
- Конечная точка Datadog не принимает журналы.
Следующие шаги
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по