監控 Azure Kubernetes 應用程式網路 (預覽版) 中的資料平面與控制平面記錄

這很重要

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。

  1. 在下方的 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
    EOF
    

    Envoy 存取日誌將可在啟用容器洞察外掛的日誌分析工作區中提供。

  2. 請透過 Log Analytics 工作區並執行以下查詢,查看 Envoy 存取日誌:

    ContainerLogV2
    | where TimeGenerated > ago(45m)
    | where PodName contains "gateway"
    | take 10
    

啟用控制平面記錄

要啟用控制平面日誌,你需要建立診斷設定並將日誌傳送到 Log Analytics 工作區。

  1. 請使用以下指令為診斷設定名稱設定環境變數:

    export DS_NAME=<diagnostic-settings-name>
    
  2. 為你的 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
    
  3. 啟用後,前往日誌分析工作區並執行以下查詢:

    備註

    $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 Monitor 日誌中應用程式網路 Istiod 錯誤範例截圖。

欲了解更多關於 Azure Kubernetes 應用網路可觀察性與監控的資訊,請參閱以下文章: