Azure Container Apps는 Azure Monitor Log Analytics와 통합되어 Container Apps의 로그를 모니터링하고 분석합니다. 로그 모니터링 솔루션으로 선택한 경우 Container Apps 환경에는 환경에서 실행되는 모든 Container Apps의 시스템 및 애플리케이션 로그 데이터를 저장할 공통 위치를 제공하는 Log Analytics 작업 영역이 포함됩니다.
로그 항목은 Azure Portal 또는 Azure CLI를 사용하는 명령 셸을 통해 Log Analytics 테이블을 쿼리하여 액세스할 수 있습니다.
Azure Container Apps는 모니터링 및 문제 해결에 도움이 되는 두 가지 유형의 로그를 제공합니다.
- 콘솔 로그: 애플리케이션에서 이러한 로그를 생성합니다.
- 시스템 로그: Container Apps 서비스는 이러한 로그를 생성합니다.
시스템 로그
Container Apps 서비스는 Container Apps 수준에서 시스템 로그 메시지를 제공합니다. 시스템 로그는 다음 메시지를 내보냅니다.
원본 | 유형 | 메시지 |
---|---|---|
다프(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: <[이미지 가져오기 오류]|[시간 초과]|[컨테이너 실패]> |
시스템 로그 데이터는 ContainerAppSystemLogs_CL
테이블을 쿼리하여 액세스할 수 있습니다. 테이블에서 가장 많이 사용되는 Container Apps 특정 열은 다음과 같습니다.
열 | 설명 |
---|---|
ContainerAppName_s |
컨테이너 앱 이름 |
EnvironmentName_s |
Container Apps 환경 이름 |
Log_s |
로그 메시지 |
RevisionName_s |
수정 이름 |
콘솔 로그
콘솔 로그는 컨테이너 앱 및 Dapr 사이드카에 있는 컨테이너의 stderr
및 stdout
메시지에서 생성됩니다.
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_CL
및 ContainerAppConsoleLogs_CL
테이블입니다.
다음 Kusto 쿼리는 album-api라는 컨테이너 앱에 대한 콘솔 로그 항목을 표시합니다.
ContainerAppConsoleLogs_CL
| where ContainerAppName_s == 'album-api'
| project Time=TimeGenerated, AppName=ContainerAppName_s, Revision=RevisionName_s, Container=ContainerName_s, Message=Log_s
| take 100
다음 Kusto 쿼리는 album-api라는 컨테이너 앱에 대한 시스템 로그 항목을 표시합니다.
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