這很重要
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 工作區、使用資源群組的預設工作區,或建立新的工作區。
建立新的日誌分析工作區
若建立新的日誌分析工作區,請使用
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 外掛
使用
az aks enable-addons指令啟用 Azure Kubernetes Application Network 成員叢集的 Container Insights 外掛(可選擇省略工作區 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 存取日誌,請使用 Telemetry 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 存取日誌將可在啟用容器洞察外掛的日誌分析工作區中提供。
請透過 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 create指定 Log 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啟用後,前往日誌分析工作區並執行以下查詢:
備註
$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 workspace中的Azure Kubernetes應用網路日誌:
| 日志表 | 說明 |
|---|---|
ContainerLogV2 |
包含你的應用程式/工作負載日誌 |
MeshControlPlane |
包含 Istiod 日誌 |
Schema
要找到該結構, ContainerLogV2 請參閱 ContainerLogV2 欄位。
MeshControlPlane 是一個自訂表格,結構如下:
| # | 欄位名稱 | 類型 |
|---|---|---|
| 0 | 租戶識別碼 (TenantId) | 字串 |
| 1 | TimeGenerated | 日期時間 |
| 2 | 類別 | 字串 |
| 3 | 等級 | 字串 |
| 4 | Message | 字串 |
| 5 | 容器 | 字串 |
| 6 | PodName | 字串 |
| 7 | SourceSystem | 字串 |
| 8 | 類型 | 字串 |
| 9 | _ResourceId (資源識別碼) | 字串 |
範例查詢
依 AKS 叢集資源 ID 過濾日誌
請使用以下查詢:根據 AKS 管理的叢集資源識別碼,在 ContainerLogV2 表格中篩選記錄。
ContainerLogV2 | where TimeGenerated > ago(45m) | where _ResourceId == $aks_cluster_resource_id // managed cluster resourceId
依據 Azure Kubernetes 應用程式網路成員資源識別碼篩選記錄
請使用以下查詢:在控制平面記錄的 MeshControlPlane 表格中,根據您的 Azure Kubernetes 應用程式網路成員資源識別碼,篩選記錄。
MeshControlPlane | where TimeGenerated > ago(45m) | where Level == "ERROR" | where _ResourceId == $appnet_member_resourceId // appnet member resourceId以下截圖展示了 Azure Monitor 日誌中應用程式網路 Istiod 錯誤的範例:
相關內容
欲了解更多關於 Azure Kubernetes 應用網路可觀察性與監控的資訊,請參閱以下文章: