다음을 통해 공유


Log Analytics로 Azure Container Apps에서 로그 모니터링

Azure Container Apps는 Azure Monitor Log Analytics와 통합되어 Container Apps의 로그를 모니터링하고 분석합니다. 로그 모니터링 솔루션으로 선택한 경우 Container Apps 환경에는 환경에서 실행되는 모든 Container Apps의 시스템 및 애플리케이션 로그 데이터를 저장할 공통 위치를 제공하는 Log Analytics 작업 영역이 포함됩니다.

로그 항목은 Azure Portal 또는 Azure CLI를 사용하는 명령 셸을 통해 Log Analytics 테이블을 쿼리하여 액세스할 수 있습니다.

Container Apps에는 두 가지 형식의 로그가 있습니다.

  • 앱에서 내보내는 콘솔 로그.
  • Container Apps 서비스에서 내보낸 시스템 로그.

시스템 로그

Container Apps 서비스는 Container Apps 수준에서 시스템 로그 메시지를 제공합니다. 시스템 로그는 다음 메시지를 내보냅니다.

원본 Type 메시지
Dapr 정보 범위가 <dapr-component-scope>인 dapr 구성 요소 <component-name>을 성공적으로 만들었습니다.
Dapr 정보 범위가 <component-type>인 dapr 구성 요소 <component-name>을 성공적으로 업데이트했습니다.
Dapr 오류 dapr 구성 요소 <component-name> 만들기 오류
볼륨 탑재 정보 수정 버전 <revision-scope>의 <volume-name> 볼륨을 성공적으로 탑재했습니다.
볼륨 탑재 오류 볼륨 <volume-name> 탑재 오류
도메인 바인딩 정보 도메인 <도메인>을 컨테이너 앱 <컨테이너 앱 이름>에 성공적으로 바인딩했습니다.
인증 정보 앱에서 인증이 사용하도록 설정되었습니다. 인증 구성을 만드는 중입니다.
인증 정보 인증 구성을 성공적으로 만들었습니다.
트래픽 가중치 정보 수정 버전 <revision-name\>에 대해 <percentage>%의 트래픽 가중치 설정
수정 버전 프로비전 정보 새 수정 버전 만들기: <revision-name>
수정 버전 프로비전 정보 성공적으로 프로비전된 수정 버전 <이름>
수정 버전 프로비전 정보 'ActiveRevisionsMode=Single' 이후 이전 수정 버전 비활성화
수정 버전 프로비전 오류 수정 버전 <revision-name>을 프로비전하는 동안 오류가 발생했습니다. ErrorCode: <[ErrImagePull]|[Timeout]|[ContainerCrashing]>

시스템 로그 데이터는 ContainerAppSystemLogs_CL 테이블을 쿼리하여 액세스할 수 있습니다. 테이블에서 가장 많이 사용되는 Container Apps 특정 열은 다음과 같습니다.

설명
ContainerAppName_s 컨테이너 앱 이름
EnvironmentName_s Container Apps 환경 이름
Log_s 로그 메시지
RevisionName_s 수정 이름

콘솔 로그

콘솔 로그는 컨테이너 앱 및 Dapr 사이드카에 있는 컨테이너의 stderrstdout 메시지에서 생성됩니다. ContainerAppConsoleLogs_CL 테이블을 쿼리하여 콘솔 로그를 볼 수 있습니다.

잘 정의된 로그 메시지로 코드를 계측하면 코드의 성능을 이해하고 문제를 디버깅하는 데 도움이 될 수 있습니다. 모범 사례에 대한 자세한 내용은 운영을 위한 디자인를 참조하세요.

ContainerAppConsoleLogs_CL에서 가장 일반적으로 사용되는 Container Apps 관련 열은 다음과 같습니다.

설명
ContainerAppName_s 컨테이너 앱 이름
ContainerGroupName_g 복제본 이름
ContainerId_s 컨테이너 식별자
ContainerImage_s 컨테이너 이미지 이름
EnvironmentName_s Container Apps 환경 이름
Log_s 로그 메시지
RevisionName_s 수정 이름

Log Analytics를 사용한 쿼리 로그

Log Analytics는 로그 데이터를 보고 분석하는 데 사용할 수 있는 Azure Portal의 도구입니다. Log Analytics를 사용하면 Kusto 쿼리를 작성한 다음 차트에서 결과를 정렬, 필터링 및 시각화하여 추세를 파악하고 문제를 식별할 수 있습니다. 쿼리 결과와 대화형으로 작업하거나 경고, 대시보드 및 통합 문서와 같은 다른 기능과 함께 사용할 수 있습니다.

Azure Portal

컨테이너 앱 페이지의 사이드바 메뉴에 있는 로그에서 Log Analytics를 시작합니다. Log Analytics는 모니터>로그에서 시작할 수도 있습니다.

CustomLogs 범주 테이블 탭에 나열된 테이블을 사용하여 로그를 쿼리할 수 있습니다. 이 범주의 테이블은 ContainerAppSystemlogs_CLContainerAppConsoleLogs_CL 테이블입니다.

Log Analytics 사용자 지정 로그 테이블의 스크린샷.

다음은 album-api라는 컨테이너 앱의 콘솔 로그 항목을 표시하는 Kusto 쿼리입니다.

ContainerAppConsoleLogs_CL
| where ContainerAppName_s == 'album-api'
| project Time=TimeGenerated, AppName=ContainerAppName_s, Revision=RevisionName_s, Container=ContainerName_s, Message=Log_s
| take 100

다음은 album-api라는 컨테이너 앱의 시스템 로그 항목을 표시하는 Kusto 쿼리입니다.

ContainerAppSystemLogs_CL
| where ContainerAppName_s == 'album-api'
| project Time=TimeGenerated, EnvName=EnvironmentName_s, AppName=ContainerAppName_s, Revision=RevisionName_s, Message=Log_s
| take 100

Log Analytics 및 로그 쿼리에 대한 자세한 내용은 Log Analytics 자습서를 참조하세요.

Azure CLI/PowerShell

Container Apps 로그는 Azure CLI를 사용하여 쿼리할 수 있습니다.

이 예 Azure CLI 쿼리는 컨테이너 앱 이름 album-api에 대한 로그 레코드가 포함된 테이블을 출력합니다. 테이블 열은 project 연산자 뒤의 매개 변수로 지정됩니다. $WORKSPACE_CUSTOMER_ID 변수에는 Log Analytics 작업 영역의 GUID가 포함됩니다.

이 예는 ContainerAppConsoleLogs_CL 테이블을 쿼리합니다.

az monitor log-analytics query --workspace $WORKSPACE_CUSTOMER_ID --analytics-query "ContainerAppConsoleLogs_CL | where ContainerAppName_s == 'album-api' | project Time=TimeGenerated, AppName=ContainerAppName_s, Revision=RevisionName_s, Container=ContainerName_s, Message=Log_s, LogLevel_s | take 5" --out table

이 예는 ContainerAppSystemLogs_CL 테이블을 쿼리합니다.

az monitor log-analytics query --workspace $WORKSPACE_CUSTOMER_ID --analytics-query "ContainerAppSystemLogs_CL | where ContainerAppName_s == 'album-api' | project Time=TimeGenerated, AppName=ContainerAppName_s, Revision=RevisionName_s, Message=Log_s, LogLevel_s | take 5" --out table

다음 단계