중요합니다
AKS 미리 보기 기능은 셀프 서비스에서 사용할 수 있습니다(옵트인 방식). 미리 보기는 "있는 그대로" 및 "사용 가능한 상태로" 제공되며 서비스 수준 계약 및 제한적 보증에서 제외됩니다. AKS 미리 보기의 일부는 고객 지원팀에서 최선을 다해 지원합니다. 따라서 이러한 기능은 프로덕션 용도로 사용할 수 없습니다. 자세한 내용은 다음 지원 문서를 참조하세요.
Azure Kubernetes Application Network는 모니터링 및 문제 해결 요구 사항에 따라 구성할 수 있는 두 가지 유형의 로깅, 즉 데이터 평면 로그 및 컨트롤 플레인 로그를 제공합니다.
-
데이터 평면 로그: 애플리케이션 워크로드,
applink-system네임스페이스 구성 요소 및 Envoy 프록시 액세스 로그의 로그를 포함합니다. - 컨트롤 플레인 로그: Azure Kubernetes Application Network 컨트롤 플레인 구성 요소의 Istiod 로그를 포함합니다.
Azure Kubernetes Application Network 로깅은 기본적으로 사용하지 않도록 설정됩니다. 이 문서에서는 두 가지 유형의 로깅을 모두 사용하도록 설정하고 Azure Monitor에서 보는 방법을 설명합니다.
환경 변수 설정
다음 명령을 사용하여 선택한 워크플로에 대한 환경 변수를 설정합니다.
# Set if specifying an existing or creating a new Log Analytics workspace export LAW_NAME=<log-analytics-workspace-name> # Set for resource group, location, and AKS cluster name export AKS_RG=<aks-resource-group> export LOCATION=<location> export CLUSTER_NAME=<aks-cluster-name> # Set for Azure Kubernetes Application Network member resource group, name, and member name export APPNET_RG=<appnet-resource-group> export APPNET_NAME=<appnet-name> export APPNET_MEMBER_NAME=<appnet-member-name>
데이터 평면 로그 사용
데이터 평면 로그에는 워크로드/애플리케이션 및 applink-system 워크로드(Ztunnel 및 Istio CNI)의 로그가 포함됩니다. Azure Container Insights 추가 기능은 문제 해결을 위해 로그를 사용하도록 설정하고 보는 기본 방법입니다.
데이터 평면 로그를 사용하도록 설정하는 경우 기존 Log Analytics 작업 영역을 지정하거나, 리소스 그룹에 대한 기본 작업 영역을 사용하거나, 새 작업 영역을 만들 수 있습니다.
새 Log Analytics 작업 영역 만들기
새 Log Analytics 작업 영역을 만드는 경우 다음
az monitor log-analytics workspace create명령을 사용합니다.az monitor log-analytics workspace create \ --resource-group $AKS_RG \ --workspace-name $LAW_NAME \ --location $LOCATION
AKS 클러스터에서 Container Insights 추가 기능 사용
명령을 사용하여 Azure Kubernetes Application Network 멤버 클러스터에 대해 Container Insights 추가 기능을 사용하도록
az aks enable-addons설정합니다(선택적으로 작업 영역 ID를 생략).az aks enable-addons \ --addon monitoring \ --name $CLUSTER_NAME \ --resource-group $AKS_RG \ --workspace-resource-id /subscriptions/$SUBSCRIPTION/resourcegroups/$AKS_RG/providers/microsoft.operationalinsights/workspaces/$LAW_NAME
로그 보기
Log Analytics 작업 영역으로 이동하고 다음 쿼리를 실행하여 로그를 봅니다.
ContainerLogV2 | where PodNamespace == "applink-system"
Envoy 접속 로그
경우에 따라 애플리케이션/워크로드에 대한 트래픽이 생성될 때 Envoy 액세스 로그를 검사해야 할 수 있습니다. Envoy 액세스 로그를 사용하도록 설정하려면 원격 분석 API를 사용하여 설정할 수 있습니다.
아래 YAML에서 Envoy 액세스 로깅을 사용하도록 설정할 네임스페이스를 지정합니다. 메시 전역의 Envoy 액세스 로그의 경우 메타데이터에서 네임스페이스를 제거합니다.
cat <<EOF | kubectl apply -n default -f - apiVersion: telemetry.istio.io/v1 kind: Telemetry metadata: name: mesh-logging-default namespace: default spec: accessLogging: - providers: - name: envoy EOFEnvoy 액세스 로그는 Container Insights 추가 기능이 설정된 Log Analytics 작업 영역에서 사용할 수 있습니다.
Log Analytics 작업 영역으로 이동하고 다음 쿼리를 실행하여 Envoy 액세스 로그를 봅니다.
ContainerLogV2 | where TimeGenerated > ago(45m) | where PodName contains "gateway" | take 10
컨트롤 플레인 로그 활성화
컨트롤 플레인 로그를 사용하도록 설정하려면 진단 설정을 만들고 Log Analytics 작업 영역으로 로그를 보냅니다.
다음 명령을 사용하여 진단 설정 이름에 대한 환경 변수를 설정합니다.
export DS_NAME=<diagnostic-settings-name>Azure Kubernetes Application Network 멤버 리소스에 대한 진단 설정을 만들고 명령을 사용하여
az monitor diagnostic-settings createLog Analytics 작업 영역을 대상으로 지정합니다.az monitor diagnostic-settings create \ --resource /subscriptions/$SUBSCRIPTION/resourceGroups/$APPNET_RG/providers/Microsoft.AppLink/appLinks/$APPNET_NAME/appLinkMembers/$APPNET_MEMBER_NAME \ --workspace /subscriptions/$SUBSCRIPTION/resourcegroups/$AKS_RG/providers/microsoft.operationalinsights/workspaces/$LAW_NAME \ --logs "[{category:istiod,enabled:true}]" \ --name $DS_NAME사용하도록 설정되면 Log Analytics 작업 영역으로 이동하여 다음 쿼리를 실행합니다.
메모
$appnet_member_resourceId는 다음과 같은 형식/subscriptions/$subscription/resourceGroups/$appnet_rg/providers/microsoft.applink/applinks/$appnet_name/applinkmembers/$appnet_member_name이어야 합니다.MeshControlPlane | where TimeGenerated > ago(1h) | where _ResourceId == $appnet_member_resourceId // appnet member resourceId
로그 테이블 및 스키마
다음 표에는 Log Analytics 작업 영역의 Azure Kubernetes Application Network 로그가 포함되어 있습니다.
| 로그 테이블 | 설명 |
|---|---|
ContainerLogV2 |
애플리케이션/워크로드 로그 포함 |
MeshControlPlane |
Istiod 로그 포함 |
스키마
스키마를 ContainerLogV2 찾으려면 ContainerLogV2 열을 참조하세요.
MeshControlPlane 는 다음 스키마가 있는 사용자 지정 테이블입니다.
| # | 열 이름 | 유형 |
|---|---|---|
| 0 | 테넌트아이디 | 문자열 |
| 1 | 타임제너레이티드 | datetime |
| 2 | 카테고리 | 문자열 |
| 3 | 수준 | 문자열 |
| 4 | Message | 문자열 |
| 5 | 컨테이너 | 문자열 |
| 6 | PodName | 문자열 |
| 7 | 소스 시스템 | 문자열 |
| 8 | 유형 | 문자열 |
| 9 | _리소스아이디 | 문자열 |
샘플 쿼리
AKS 클러스터 리소스 ID로 로그 필터링
다음 쿼리를 사용하여 ContainerLogV2 테이블의 AKS 관리형 클러스터 리소스 ID를 기반으로 로그를 필터링합니다.
ContainerLogV2 | where TimeGenerated > ago(45m) | where _ResourceId == $aks_cluster_resource_id // managed cluster resourceId
Azure Kubernetes Application Network 멤버 리소스 ID로 로그 필터링
다음 쿼리를 사용하여 컨트롤 플레인 로그에 대한 MeshControlPlane 테이블의 Azure Kubernetes Application Network 멤버 리소스 ID를 기반으로 로그를 필터링합니다.
MeshControlPlane | where TimeGenerated > ago(45m) | where Level == "ERROR" | where _ResourceId == $appnet_member_resourceId // appnet member resourceId다음 스크린샷은 Azure Monitor 로그의 Application Network Istiod 오류 예제를 보여 줍니다.
관련 콘텐츠
Azure Kubernetes Application Network 관찰 및 모니터링에 대한 자세한 내용은 다음 문서를 참조하세요.