Azure Container Apps에서 OpenTelemetry 데이터 수집 및 읽기(미리 보기)
Azure Container Apps 환경에서 OpenTelemetry 데이터 에이전트를 사용하면 다음을 통해 OpenTelemetry 형식으로 관찰성 데이터를 보내도록 선택할 수 있습니다.
에이전트의 데이터를 원하는 엔드포인트로 파이핑합니다. 대상 옵션에는 Azure Monitor Application Insights, Datadog 및 OTLP(OpenTelemetry Protocol) 호환 엔드포인트가 포함됩니다.
데이터를 내보내는 방법을 다시 구성하지 않고도 OpenTelemetry 에이전트를 수동으로 실행하지 않고도 대상 엔드포인트를 쉽게 변경할 수 있습니다.
이 문서에서는 컨테이너 앱에 대해 OpenTelemetry 에이전트를 설정하고 구성하는 방법을 보여 줍니다.
OpenTelemetry 에이전트 구성
OpenTelemetry 에이전트는 컨테이너 앱 환경 내에 있습니다. ARM 템플릿 또는 환경에 대한 Bicep 호출을 통해 또는 CLI를 통해 또는 Terraform을 통해(AzAPI 공급자를 통해) 에이전트 설정을 구성합니다.
각 엔드포인트 유형(Azure Monitor Application Insights, DataDog 및 OTLP)에는 특정 구성 요구 사항이 있습니다.
필수 조건
관리되는 OpenTelemetry 에이전트를 사용자 환경에 사용하도록 설정해도 에이전트가 데이터를 수집한다는 의미는 아닙니다. 에이전트는 구성 설정에 따라 데이터를 보내고 코드를 올바르게 계측합니다.
소스 코드 구성
OpenTelemetry SDK를 설치하여 데이터를 수집하도록 애플리케이션을 준비하고 OpenTelemetry 지침에 따라 메트릭, 로그 또는 추적을 계측합니다.
엔드포인트 초기화
컬렉션 대상으로 데이터를 보내려면 먼저 대상 서비스의 인스턴스를 만들어야 합니다. 예를 들어 Azure Monitor Application Insights에 데이터를 보내려면 Application Insights 인스턴스를 미리 만들어야 합니다.
관리되는 OpenTelemetry 에이전트는 다음 대상을 허용합니다.
- Azure Monitor Application Insights
- Datadog
- 모든 OTLP 엔드포인트(예: New Relic 또는 Honeycomb)
다음 표에서는 각 대상에 보낼 수 있는 데이터 형식을 보여줍니다.
대상 | 로그 | 메트릭 | Traces |
---|---|---|---|
Azure App Insights | 예 | 아니요 | 예 |
Datadog | 예 | 예 | 예 |
OTLP(OpenTelemetry 프로토콜) 구성 엔드포인트 | 예 | 예 | 예 |
Azure Monitor Application Insights
Application Insights에서 필요한 유일한 구성 세부 정보는 연결 문자열입니다. 연결 문자열 있으면 Azure CLI 명령 또는 Terraform을 사용하여 컨테이너 앱의 ARM 템플릿을 통해 에이전트를 구성할 수 있습니다.
연결 문자열 특정 Application Insights 리소스에 원격 분석을 연결하는 데 사용되는 고유 식별자인 계측 키를 포함합니다. 계측 키는 보안 토큰 또는 보안 키가 아니며 비밀로 간주되지 않습니다.
Application Insights 리소스를 오용으로부터 보호하려면 Application Insights에 대한 Microsoft Entra 인증을 참조 하세요.
이 템플릿을 배포하기 전에 <>
로 묶인 자리 표시자를 원하는 값으로 바꿉니다.
{
...
"properties": {
"appInsightsConfiguration ": {
"connectionString": "<APP_INSIGHTS_CONNECTION_STRING>"
}
"openTelemetryConfiguration": {
...
"tracesConfiguration":{
"destinations": ["appInsights"]
},
"logsConfiguration": {
"destinations": ["appInsights"]
}
}
}
}
Datadog
Datadog 에이전트 구성에는 Datadog 인스턴스의 site
및 key
값이 필요합니다. 다음 표에 따라 Datadog 인스턴스에서 이러한 값을 수집합니다.
Datadog 에이전트 속성 | Container Apps 구성 속성 |
---|---|
DD_SITE |
site |
DD_API_KEY |
key |
이러한 구성 세부 정보가 있으면 컨테이너 앱의 ARM 템플릿 또는 Azure CLI 명령을 통해 에이전트를 구성할 수 있습니다.
프로덕션 환경에서 직접 Datadog API 키와 같은 비밀 값을 지정하지 마세요. 대신 Azure Key Vault에 저장된 비밀에 대한 참조를 사용합니다.
템플릿 배포에 키 자격 증명 모음을 사용하도록 설정해야 합니다. 이렇게 하려면 속성을 사용하도록 설정된 키 자격 증명 모음을 enabledForTemplateDeployment
만들거나 다음 Azure CLI 명령을 실행하여 값을 바꿉 <KEY_VAULT_NAME>
니다.
az keyvault update --name <KEY_VAULT_NAME> --enabled-for-template-deployment true
자세한 내용은 다음을 참조하세요.
Azure Key Vault에서 Datadog API 키를 검색하는 매개 변수 파일을 만듭니다.
다음 파일을 배포하기 전에 자리 표시자를 값으로 묶어 <>
줍니다.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"datadogapikey": {
"reference": {
"keyVault": {
"id": "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.KeyVault/vaults/<KEY_VAULT_NAME>"
},
"secretName": "<KEY_VAULT_SECRET_NAME>"
}
}
}
}
이제 ARM 템플릿에서 매개 변수를 datadogapikey
참조할 수 있습니다.
{
...
"parameters": {
"datadogapikey": {
"type": "securestring"
}
},
"properties": {
...
"openTelemetryConfiguration": {
...
"destinationsConfiguration":{
...
"dataDogConfiguration":{
"site": "<YOUR_DATADOG_SUBDOMAIN>.datadoghq.com",
"key": "<YOUR_DATADOG_KEY>"
}
},
"tracesConfiguration":{
"destinations": ["dataDog"]
},
"metricsConfiguration": {
"destinations": ["dataDog"]
}
}
}
}
리소스를 배포하려면 다음 Azure CLI 명령을 실행하여 값으로 둘러싸인 <>
자리 표시자를 대체합니다.
az deployment group create \
--resource-group <RESOURCE_GROUP> \
--template-file <ARM_TEMPLATE_FILE> \
--parameters <PARAMETER_FILE>
OTLP 엔드포인트
OTLP(OpenTelemetry 프로토콜) 엔드포인트는 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"]
}
}
}
}
속성 | 설명 |
---|---|
resource-group |
리소스 그룹의 이름입니다. az configure --defaults group=<NAME> 을 사용하여 기본 그룹을 구성할 수 있습니다. |
name |
Container Apps 환경의 이름입니다. |
otlp-name |
OTLP로 구성된 엔드포인트를 식별하기 위해 선택한 이름입니다. |
endpoint |
수집된 데이터를 받는 대상의 URL입니다. |
insecure |
기본값은 true입니다. 내보내기 gRPC 연결에 클라이언트 전송 보안을 사용할지 여부를 정의합니다. false이면 headers 매개 변수가 필요합니다. |
headers |
OTLP 엔드포인트의 보안에 필요한 정보를 제공하는 'key=value' 형식의 공백으로 구분된 값입니다. 예: "api-key=key other-config-value=value" |
데이터 대상 구성
에이전트를 구성하려면 destinations
배열을 사용하여 애플리케이션에서 데이터를 보내는 에이전트를 정의합니다. 유효한 키는 appInsights
, dataDog
또는 사용자 지정 OTLP 엔드포인트의 이름입니다. 데이터 형식 및 엔드포인트 관련 옵션에 따라 에이전트가 동작하는 방식을 제어할 수 있습니다.
데이터 형식별
옵션 | 예시 |
---|---|
데이터 형식을 선택합니다. | 로그, 메트릭 및/또는 추적을 개별적으로 구성할 수 있습니다. |
데이터 형식을 사용하거나 사용하지 않도록 설정합니다. | 추적만 보내도록 선택할 수 있으며 다른 데이터는 보낼 수 없습니다. |
하나의 데이터 형식을 여러 엔드포인트로 보냅니다. | DataDog 및 OTLP로 구성된 엔드포인트 모두에 로그를 보낼 수 있습니다. |
다른 위치에 다른 데이터 형식을 보냅니다. | 추적을 OTLP 엔드포인트로 보내고 메트릭을 DataDog에 보낼 수 있습니다. |
모든 데이터 형식 전송을 사용하지 않도록 설정합니다. | OpenTelemetry 에이전트를 통해 데이터를 보내지 않도록 선택할 수 있습니다. |
엔드포인트별
- 한 번에 하나의 Application Insights 및 Datadog 엔드포인트만 설정할 수 있습니다.
- 둘 이상의 OTLP 구성 엔드포인트를 정의할 수 있지만 각 엔드포인트에는 고유한 이름이 있어야 합니다.
다음 예제 ARM 템플릿은 명명 customDashboard
된 OTLP 엔드포인트를 사용하는 방법을 보여줍니다. 다음을 보냅니다.
- 앱 인사이트에 대한 추적 및
customDashboard
- 앱 인사이트에 대한 로그 및
customDashboard
- DataDog 및
customDashboard
에 대한 메트릭
{
...
"properties": {
...
"openTelemetryConfiguration": {
...
"tracesConfiguration": {
"destinations": [
"appInsights",
"customDashboard"
]
},
"logsConfiguration": {
"destinations": [
"appInsights",
"customDashboard"
]
},
"metricsConfiguration": {
"destinations": [
"dataDog",
"customDashboard"
]
}
}
}
}
OpenTelemetry 구성 예제
다음 ARM 템플릿 예제에서는 Azure Monitor Application Insights, Datadog 및 명명된 customDashboard
사용자 지정 OTLP 에이전트를 사용하여 원격 분석 데이터를 수집하도록 컨테이너 앱을 구성하는 방법을 보여 줍니다.
이 예제는 Azure Key Vault에서 Datadog API 키를 검색하는 데 사용되는 매개 변수 파일과 함께 작동합니다.
이 템플릿을 배포하기 전에 <>
로 묶인 자리 표시자를 원하는 값으로 바꿉니다.
{
"location": "eastus",
"properties": {
"appInsightsConfiguration": {
"connectionString": "<APP_INSIGHTS_CONNECTION_STRING>"
},
"openTelemetryConfiguration": {
"destinationsConfiguration": {
"dataDogConfiguration": {
"site": "datadoghq.com",
"key": "parameters('datadogapikey')]"
},
"otlpConfigurations": [
{
"name": "customDashboard",
"endpoint": "<OTLP_ENDPOINT_URL>",
"insecure": true
}
]
},
"tracesConfiguration": {
"destinations": [
"appInsights",
"customDashboard"
]
},
"logsConfiguration": {
"destinations": [
"appInsights",
"customDashboard"
]
},
"metricsConfiguration": {
"destinations": [
"dataDog",
"customDashboard"
]
}
}
}
}
자세한 내용은 Microsoft.App/managedEnvironments 참조하세요.
환경 변수
OpenTelemetry 에이전트는 런타임에 애플리케이션에 환경 변수 집합을 자동으로 삽입합니다.
처음 두 환경 변수는 표준 OpenTelemetry 내보내기 구성을 따르며 OTLP 표준 소프트웨어 개발 키트에 사용됩니다. 컨테이너 앱 사양에서 환경 변수를 명시적으로 설정하면 값이 자동으로 삽입된 값을 덮어씁니다.
OTLP 내보내기 구성에 대한 자세한 내용은 OTLP 내보내기 구성을 참조하세요.
속성 | 설명 |
---|---|
OTEL_EXPORTER_OTLP_ENDPOINT |
선택적으로 지정된 포트 번호가 있는 모든 신호 형식에 대한 기본 엔드포인트 URL입니다. 이 설정은 동일한 엔드포인트에 둘 이상의 신호를 보내고 하나의 환경 변수가 엔드포인트를 제어하도록 할 때 유용합니다. 예: http://otel.service.k8se-apps:4317/ |
OTEL_EXPORTER_OTLP_PROTOCOL |
모든 원격 분석 데이터에 사용되는 OTLP 전송 프로토콜을 지정합니다. 관리되는 에이전트는 grpc 만 지원합니다. 값: grpc . |
다른 세 가지 환경 변수는 Azure Container Apps와 관련이 있으며 항상 삽입됩니다. 이러한 변수는 각 특정 데이터 형식(로그, 메트릭, 추적)에 대한 에이전트의 엔드포인트 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 Application Insights와 Datadog 모두에 데이터를 보내는 경우 두 서비스에서 적용되는 요금에 대한 책임이 있습니다.
알려진 제한 사항
- OpenTelemetry 에이전트는 미리 보기로 제공됩니다.
- 시스템 로그 또는 Container Apps 표준 메트릭과 같은 시스템 데이터는 OpenTelemetry 에이전트로 보낼 수 없습니다.
- Application Insights 엔드포인트는 메트릭을 허용하지 않습니다.
- Datadog 엔드포인트는 로그를 허용하지 않습니다.