이 구성 가이드에서는 관리형 OpenTelemetry 에이전트를 사용하여 로그, 추적 및 메트릭을 Elastic으로 전달하도록 Azure Container Apps 구성하는 방법을 보여 줍니다.
관리되는 OpenTelemetry 에이전트에 대한 자세한 내용은 Azure Container Apps의OpenTelemetry 에이전트를 참조하세요.
이 가이드에서는 다음 방법을 알아봅니다.
- Elastic 수집 토큰을 생성합니다.
- Bicep 또는 Azure 포털을 사용하여 Elastic OTLP 대상을 구성합니다.
- 필요한 앱 환경 변수를 구성합니다.
- 기존 Container Apps 환경 및 앱에 구성 업데이트를 적용합니다.
- Elastic에서 원격 분석을 확인합니다.
사전 요구 사항
- Azure 구독
- OTLP 수집을 지원하는 Elastic 계정 및 대상 배포 또는 프로젝트.
- Azure CLI Azure 계정에 설치되고 로그인되었습니다.
- Azure Container Apps CLI 확장이 설치되었습니다(Bicep).
az extension add --name containerapp --upgrade
Elastic 수집 토큰 만들기
대상 배포를 위해 OpenTelemetry 데이터를 수집할 수 있는 Elastic API 키를 만듭니다.
필요한 권한은 다음 신호에 대한 원격 분석 데이터를 작성할 수 있도록 허용해야 합니다.
- 로그 수집/쓰기
- 수집/쓰기 추적
- 메트릭 수집/쓰기
토큰 권한 및 API 키에 대한 공급자 지침은 Elastic API 키를 참조하세요.
OpenTelemetry 대상 구성
다음 옵션 중 하나를 사용하여 Container Apps 환경에서 Elastic을 OTel 엔드포인트로 구성합니다.
Important
관리형 OpenTelemetry 대상을 구성해도 원격 분석이 자동으로 생성되지는 않습니다. OpenTelemetry SDK를 사용하여 추적, 메트릭 및 로그를 내보내려면 애플리케이션을 이미 계측해야 합니다.
- Bicep (인프라 코드 관리 도구)
- Azure Portal
배포에 대한 CLI 변수를 설정합니다.
$RESOURCE_GROUP = "<RESOURCE_GROUP_NAME>"
$ELASTIC_OTLP_ENDPOINT = "https://<YOUR_ELASTIC_ENDPOINT>:443"
$ELASTIC_API_KEY = "<ELASTIC_API_KEY_WITHOUT_PREFIX>"
Elastic OTLP 기본 엔드포인트 형식을 사용합니다.
https://<YOUR_ELASTIC_ENDPOINT>:443
권한 부여 토큰 헤더 형식을 사용합니다.
- 헤더 키:
Authorization - 헤더 값:
ApiKey <TOKEN>
이 관리되는 환경 리소스 예제를 사용하여 대상 라우팅을 구성합니다.
@secure()
param elasticApiKey string
param elasticOtlpEndpoint string = 'https://<YOUR_ELASTIC_ENDPOINT>:443'
var elasticDestinationName = 'elastic-otlp'
var elasticAuthHeaderValue = 'ApiKey ${elasticApiKey}'
resource environment 'Microsoft.App/managedEnvironments@2026-03-02-preview' = {
name: '<MANAGED_ENVIRONMENT_NAME>'
location: '<REGION>'
properties: {
openTelemetryConfiguration: {
destinationsConfiguration: {
otlpConfigurations: [
{
name: elasticDestinationName
endpoint: elasticOtlpEndpoint
protocol: 'http'
insecure: false
headers: [
{
key: 'Authorization'
value: elasticAuthHeaderValue
}
]
}
]
}
tracesConfiguration: {
destinations: [
elasticDestinationName
]
}
logsConfiguration: {
destinations: [
elasticDestinationName
]
}
metricsConfiguration: {
destinations: [
elasticDestinationName
]
}
}
}
}
이 앱 리소스 예제를 사용하여 필요한 앱 환경 변수를 설정합니다.
resource app 'Microsoft.App/containerApps@2023-05-01' = {
name: '<CONTAINER_APP_NAME>'
location: '<REGION>'
properties: {
managedEnvironmentId: environment.id
template: {
containers: [
{
name: '<CONTAINER_NAME>'
image: '<IMAGE_NAME>'
env: [
{
name: 'OTEL_SERVICE_NAME'
value: '<SERVICE_NAME>'
}
{
name: 'OTEL_TRACES_EXPORTER'
value: 'otlp'
}
{
name: 'OTEL_METRICS_EXPORTER'
value: 'otlp'
}
{
name: 'OTEL_LOGS_EXPORTER'
value: 'otlp'
}
{
name: 'OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE'
value: 'cumulative'
}
]
}
]
}
}
}
리포지토리 루트에서 Bicep 구성을 적용합니다.
az deployment group create `
--resource-group $RESOURCE_GROUP `
--template-file infra/main.bicep `
--parameters @infra/main.parameters.json `
--parameters elasticOtlpEndpoint="$ELASTIC_OTLP_ENDPOINT" `
--parameters elasticApiKey="$ELASTIC_API_KEY"
이제 Container App이 Elastic에 원격 분석을 보내도록 구성되었습니다.
Elastic에서 원격 분석 확인
구성 후 로그, 추적 및 메트릭이 애플리케이션에서 도착하는지 확인하고 예상 서비스 ID에 매핑합니다.
워크플로에 맞는 탄력적 보기를 사용합니다.
Elastic의 탐색 및 분석에 대한 자세한 내용은 Elastic Observability 설명서를 참조하세요.