다음을 통해 공유


Azure Container Apps의 로그 및 메트릭

참고 항목

기본, 표준엔터프라이즈 계획은 2025년 3월 중순부터 사용되지 않으며 3년의 은퇴 기간이 있습니다. Azure Container Apps로 전환하는 것이 좋습니다. 자세한 내용은 Azure Spring Apps 사용 중지 공지 사항을 참조하세요.

표준 소비 및 전용 계획은 2024년 9월 30일부터 사용되지 않으며 6개월 후에 완전히 종료됩니다. Azure Container Apps로 전환하는 것이 좋습니다. 자세한 내용은 Azure Spring Apps 표준 사용량 및 전용 계획을 Azure Container Apps로 마이그레이션을 참조 하세요.

이 문서는 기본/표준 ✅ 엔터프라이즈에✅ 적용됩니다.

Azure Spring Apps에서 Azure Container Apps로 전환할 때 유사한 관찰 기능을 찾을 수 있지만 몇 가지 주요 차이점이 있습니다. 이 문서에서는 이러한 차이점을 강조하고 Azure Container Apps에서 애플리케이션을 모니터링하는 방법을 설명합니다.

필수 조건

로그

로깅 옵션 구성

Azure Container Apps를 사용하면 Azure Container Apps 환경에서 로깅을 관리할 수 있습니다.

Azure Log Analytics 및 Azure Monitor 모두에 로그를 저장할 수 있습니다. Azure Monitor를 선택하는 경우 환경 설정에서 Azure Spring Apps의 진단 설정 메뉴와 유사하게 찾을 수 있습니다.

다음 예제와 같이 Azure CLI를 사용하여 환경을 만들면 자동 생성된 Log Analytics 작업 영역이 프로비전됩니다.

az containerapp env create \
    --resource-group MyResourceGroup \
    --name MyContainerappEnvironment \
    --location eastus2

다음 명령을 사용하여 기존 Log Analytics 작업 영역이 있는 환경을 만들 수도 있습니다.

az containerapp env create \
    --resource-group MyResourceGroup \
    --name MyContainerappEnvironment \
    --logs-workspace-id myLogsWorkspaceID \
    --logs-workspace-key myLogsWorkspaceKey \
    --location eastus2

로그 분석

Azure Container Apps를 사용하면 컨테이너 콘솔에서 로그를 스트리밍할 수 있습니다. 다음 목록에서는 로깅의 주요 차이점을 설명합니다.

  • 콘솔 로그: 콘솔 로그의 ContainerAppConsoleLogs_CL 경우 Azure Spring Apps에서 사용되는 테이블 대신 Azure Container Apps에서 ApplicationConsole 테이블을 쿼리합니다.

  • 시스템 로그: Azure Spring Apps는 구성 서버, 서비스 레지스트리, API 포털, 애플리케이션 구성 서비스 및 Spring Cloud Gateway를 제공합니다 SystemLogs . Azure Container Apps에서 이러한 구성 요소를 별도의 애플리케이션으로 프로비전하고 테이블의 로그를 쿼리하여 쿼리에서 ContainerAppConsoleLogs_CL 각 앱의 이름을 지정해야 합니다.

  • 빌드 로그: Paketo Buildpacks를 사용하여 로컬 빌드의 빌드 로그는 Azure Spring Apps와 다른 Azure Container Apps에서 사용할 수 없습니다.

로그 보기

기본적으로 Azure Container Apps는 로그를 Azure Log Analytics에 직접 보냅니다. 그러나 Azure Monitor에 로그를 저장하도록 선택하는 경우 테이블 및 열 이름이 다를 수 있습니다. Azure Monitor에서 테이블 및 열 이름에는 접미사가 포함되지 않습니다. 예를 들어 Azure Monitor에 저장된 로그에 대한 쿼리를 작성할 때 대신 ContainerAppConsoleLogs_CLLogLog_s 사용합니다.ContainerAppConsoleLogs

Azure Container Apps에서 콘솔 로그를 보려면 다음 쿼리를 예로 사용합니다.

ContainerAppConsoleLogs_CL
| limit 50

Azure Log Analytics는 Kusto 엔진을 사용하여 실행되므로 분석을 위해 로그를 쿼리할 수 있습니다. Kusto를 사용하여 로그를 쿼리하는 방법에 대한 소개는 Log Analytics 자습서를 참조하세요.

애플리케이션 로그 표시

가장 최근 로그가 먼저 표시된 시간별로 정렬된 애플리케이션 로그 목록을 검토하려면 다음 쿼리를 사용합니다.

ContainerAppConsoleLogs_CL
| project TimeGenerated, EnvironmentName_s, ContainerAppName_s, RevisionName_s, Log_s
| sort by TimeGenerated desc

오류 또는 예외를 포함하는 로그 항목 표시

오류 또는 예외를 언급하는 정렬되지 않은 로그 항목을 검토하려면 다음 쿼리를 사용합니다.

ContainerAppConsoleLogs_CL
| project TimeGenerated, EnvironmentName_s, ContainerAppName_s, RevisionName_s, Log_s
| where Log_s contains "error" or Log_s contains "exception"

이 쿼리를 사용하여 오류를 찾거나, 쿼리 용어를 수정하여 특정 오류 코드 또는 예외를 찾습니다.

지난 1시간 동안 애플리케이션에서 보고된 오류 및 예외 수 표시

지난 1시간 동안 애플리케이션에서 기록한 오류 및 예외 수를 표시하는 원형 차트를 만들려면 다음 쿼리를 사용합니다.

ContainerAppConsoleLogs_CL
| where TimeGenerated > ago(1h)
| where Log_s contains "error" or Log_s contains "exception"
| summarize count_per_app = count() by ContainerAppName_s
| sort by count_per_app desc
| render piechart

Spring Cloud Gateway 로그 표시

Spring Cloud Gateway 로그에 대한 로그 항목을 검토하려면 다음 쿼리를 사용합니다.

ContainerAppSystemLogs_CL
| where ComponentType_s == "SpringCloudGateway"
| project TimeGenerated, ComponentType_s, EnvironmentName_s, ComponentName_s, Log_s
| limit 100

Eureka 서버 로그 표시

Eureka 서버 로그에 대한 로그 항목을 검토하려면 다음 쿼리를 사용합니다.

ContainerAppSystemLogs_CL
| where ComponentType_s == "SpringCloudEureka"
| project TimeGenerated, ComponentType_s, EnvironmentName_s, ComponentName_s, Log_s
| limit 100

메트릭

다음 표는 Azure Spring Apps와 Azure Container Apps 간에 메트릭을 매핑합니다.

공통

Azure Spring Apps 메트릭 이름 Azure Container Apps 메트릭 이름
앱 CPU 사용량 해당 없음
앱 메모리 사용량 해당 없음
앱 네트워크 입력 해당 없음
앱 네트워크 출력 해당 없음

오류 메트릭

Azure Spring Apps 메트릭 이름 Azure Container Apps 메트릭 이름
tomcat.global.error 해당 없음

성능 메트릭

Azure Spring Apps 메트릭 이름 Azure Container Apps 메트릭 이름
system.cpu.usage CPU 사용 비율(미리 보기)
process.cpu.usage 해당 없음
앱 메모리 사용량 해당 없음
jvm.memory.committed jvm.memory.committed
jvm.memory.used jvm.memory.used
jvm.memory.max 해당 없음
추가 JVM 메트릭 해당 없음

.NET 성능 메트릭

Azure Spring Apps 메트릭 이름 Azure Container Apps 메트릭 이름
CPU 사용량 CPU 사용 비율(미리 보기)
작업 집합 메모리 작업 집합 바이트
GC 힙 크기 해당 없음
Gen 0 GC count 해당 없음
추가 GC 메트릭 해당 없음

요청 메트릭

Azure Spring Apps 메트릭 이름 Azure Container Apps 메트릭 이름
tomcat.global.sent 해당 없음
tomcat.global.request.total.count 요청

.NET 요청 메트릭

Azure Spring Apps 메트릭 이름 Azure Container Apps 메트릭 이름
초당 요청 해당 없음
총 요청 요청

세션 메트릭

Azure Spring Apps 메트릭 이름 Azure Container Apps 메트릭 이름
tomcat.sessions.active.max 해당 없음
tomcat.sessions.alive.max 해당 없음

Azure Container Apps의 Java 앱에 대한 Java 메트릭

Azure Container Apps에 대한 개발 스택으로 Java를 선택하는 경우 애플리케이션의 상태 및 성능을 보장하기 위해 JVM(Java Virtual Machine) 메트릭을 모니터링하는 것이 중요합니다. 자세한 내용은 Azure Container Apps의 Java 앱에 대한 Java 메트릭을 참조 하세요.

관리형 구성 요소

데이터를 모니터링하는 관리되는 구성 요소는 다음 문서를 참조하세요.

통합

Azure Container Apps는 애플리케이션의 상태를 모니터링하고 진단하는 데 도움이 되는 몇 가지 기본 제공 관찰 기능을 제공합니다. 그러나 Azure Monitor Application Insights 또는 다른 APM(애플리케이션 성능 모니터링) 에이전트를 사용하려면 애플리케이션 코드에 계측을 추가해야 합니다.

애플리케이션 성능 모니터링과 통합

Azure Monitor Application Insights 또는 기타 APM과의 통합은 애플리케이션 성능 모니터링을 컨테이너 이미지에 통합을 참조하세요.

OpenTelemetry 에이전트(미리 보기)

Azure Container Apps 환경에서 OpenTelemetry 데이터 에이전트를 사용하여 Azure Monitor Application Insights, Datadog 또는 OTLP 호환 엔드포인트와 같은 대상에 OpenTelemetry 형식의 관찰성 데이터를 보낼 수 있습니다. 관리되는 에이전트는 에이전트를 수동으로 실행하거나 다시 구성하지 않고 대상 엔드포인트를 변경할 수 있도록 하여 구성을 간소화합니다. 이를 설정하려면 ARM 템플릿, Bicep 또는 Azure CLI를 사용하여 컨테이너 환경에서 에이전트를 구성하고 OpenTelemetry SDK를 설치하고 메트릭, 로그 또는 추적에 대한 코드를 계측하여 애플리케이션을 준비합니다. Application Insights와 같은 대상 서비스를 미리 설정해야 합니다. 각 대상에는 특정 요구 사항이 있으며 에이전트는 올바르게 구성되고 계측된 경우에만 데이터를 보냅니다. 자세한 내용은 Azure Container Apps에서 OpenTelemetry 데이터 수집 및 읽기를 참조하세요.

사용자 지정 대시보드 및 경고

Azure Container Apps에 애플리케이션을 배포하는 경우 사용자 지정 대시보드는 다음과 같은 두 가지 데이터 소싱 방법을 사용할 수 있습니다.

  • 앱 통합 APM 에이전트: 빌드 프로세스 중에 타사 APM 에이전트를 애플리케이션에 통합한 경우 이러한 에이전트는 메트릭 및 로그를 APM 플랫폼으로 직접 보냅니다. 이 경우 애플리케이션 코드가 변경되지 않은 상태로 유지되는 한 대시보드를 수정할 필요가 없습니다.

  • Azure Monitor 기반 대시보드: 대시보드에서 Azure Monitor의 메트릭 및 로그(예: Application Insights API, Azure Event Hubs 또는 Azure Storage를 통해)를 사용하는 경우 Azure Container Apps별 메트릭 이름, 네임스페이스 또는 로그 구조를 반영하도록 업데이트해야 할 수 있습니다. Azure Container Apps 관련 메트릭 매핑 및 데이터 구조를 기반으로 대시보드를 검토하고 업데이트해야 합니다.

대시보드 구성을 신중하게 확인하여 Azure Container Apps로 전환한 후에도 정확한 상태를 유지합니다.

문제 해결

Azure Container Apps는 Java 애플리케이션에 대한 힙 덤프 또는 스레드 덤프를 생성하는 API를 제공하지 않습니다. 이러한 덤프를 만들려면 콘솔을 통해 컨테이너 앱에 연결해야 합니다. 그런 다음, 또는 jstack 명령을 사용하여 jmap 컨테이너 내부에 덤프 파일을 생성합니다. 그런 다음, 추가 분석을 위해 생성된 파일을 로컬 컴퓨터에 복사합니다.

명령을 사용하여 jcmd 동일한 작업을 수행하고 실행 중인 애플리케이션에서 JFR(Java Flight Recorder)을 시작할 수도 있습니다. 콘솔을 통해 컨테이너 앱에 액세스하는 방법에 대한 자세한 내용은 Azure Container Apps의 컨테이너 콘솔에 연결을 참조 하세요.

알려진 제한 사항

  • 구조적 로그: Azure Container Apps는 구조적 애플리케이션 로그를 지원하지 않습니다. 애플리케이션 로그가 Azure Spring Apps 스키마를 따르는 경우 전체 JSON 문자열이 열ContainerAppConsoleLogs_CLLog_s 나타납니다.
  • 수신 로그: Azure Spring Apps에는 기본 제공 수신 액세스 로그가 있지만 Azure Container Apps는 그렇지 않습니다. 이 데이터를 캡처하려면 애플리케이션 코드에서 액세스 로깅을 구현해야 합니다.
  • Azure Container Apps는 앱 수명 주기 이벤트를 제공하지 않습니다.
  • Azure Container Apps에는 수신 메트릭에 대한 기본 제공 지원이 없습니다. 애플리케이션에서 사용자 지정 추적을 구현해야 합니다.