共用方式為


監視 Azure Kubernetes Service

本文章說明:

  • 您可以為此服務收集的監視資料類型。
  • 分析資料的方式。

注意

如果您已經熟悉此服務和/或 Azure 監視器,只想知道如何分析監視資料,請參閱本文靠近結尾的分析一節。

當您有依賴 Azure 資源的重要應用程式和商務流程時,就需要監視並取得系統的警示。 Azure 監視器服務會從您系統的每個元件收集及彙總計量和記錄。 Azure 監視器讓您能夠檢視可用性、效能及復原能力,並在發生問題時通知您。 您可以使用 Azure 入口網站、PowerShell、Azure CLI、REST API 或用戶端程式庫來設定及檢視監視資料。

重要

Kubernetes 是具有許多行動元件的複雜分散式系統。 需要多個層級的監視。 雖然 AKS 是受控 Kubernetes 服務,但是對多個等級進行相同嚴謹程度的監視仍有必要。 本文提供監視 AKS 叢集的高等級資訊和最佳做法。

深入解析

Azure 中的某些服務在 Azure 入口網站中有內建的監視儀表板,可提供監視服務的起點。 這些儀表板稱為深入解析,您可以在 Azure 入口網站中 Azure 監視器的深入解析中樞中找到這些儀表板。

Azure 監視器容器深入解析會收集節點、Pod、容器和永續性磁碟區的自定義計量。 如需詳細資訊,請參閱 容器深入解析所收集的計量。

監視資料

AKS 會產生與其他 Azure 資源相同類型的監視資料,如監視 Azure 資源中的資料中所述。 如需 AKS 中樞建立的計量和記錄的詳細資訊,請參閱 監視 AKS 中樞資料參考其他 Azure 服務和功能收集其他資料和啟用其他分析選項,如下圖和資料表中所示。

從 AKS 收集監視資料的圖表。

來源 描述
平台計量 平台計量 會自動針收集 AKS 叢集,且無需費用。 您可以使用 計量檔案總管 來分析這些計量,或使用計量警示
Prometheus 計量 當您啟用叢集的計量擷取時,適用於 Prometheus 的 Azure 監視器受控服務會收集 Prometheus 計量,並將其儲存在 Azure 監視器工作區。 使用 Azure 受控 Grafana 中的 預先建置儀錶板,並使用 Prometheus 警示來分析。
活動記錄 會自動收集 AKS 叢集的活動記錄,且無需費用。 這些記錄會追蹤資訊,例如,建立叢集或進行設定變更的時機。 若要使用其他記錄數據進行分析,請將 活動記錄傳送至Log Analytics工作區
資源記錄 AKS 的控制平面記錄會實作為資源記錄。 建立診斷設定,將記錄送至 Log Analytics 工作區 ,您可以在其中使用 Log Analytics 中的記錄查詢來分析和警示。
容器深入解析 容器深入解析會從叢集收集各種記錄和效能數據,包括 stdout/stderr 數據流,並將其儲存在 Log Analytics 工作區Azure 監視器計量中。 使用容器深入解析隨附的檢視和活頁簿,或使用 Log Analytics計量檔案總管來分析此資料。

資源類型

Azure 會使用資源類型和識別碼的概念來識別訂用帳戶中的所有內容。 資源類型也是 Azure 中所執行每個資源的資源識別碼組成部分。 例如,虛擬機器的一種資源類型是 Microsoft.Compute/virtualMachines。 如需服務及其相關聯資源類型的清單,請參閱資源提供者 (機器翻譯)。

Azure 監視器同樣會依據資源類型將核心監視資料組織成計量和記錄,也稱為命名空間。 不同的計量和記錄適用於不同的資源類型。 您的服務可能會與多個資源類型相關聯。

如需 AKS 資源類型的詳細資訊,請參閱 Azure Kubernetes Service 監視數據參考

資料存放區

對於 Azure 監視器:

  • 計量資料會儲存在 Azure 監視器計量資料庫中。
  • 記錄資料會儲存在 Azure 監視器記錄存放區中。 Log Analytics 是可查詢此存放區的 Azure 入口網站工具。
  • Azure 活動記錄是個單獨存放區,其介面位於 Azure 入口網站。

您可選擇性地將計量和活動記錄資料路由傳送至 Azure 監視器記錄存放區。 然後,可以使用 Log Analytics 來查詢資料,並將其與其他記錄資料相互關聯。

許多服務可以使用診斷設定,將計量和記錄資料傳送至 Azure 監視器以外的其他儲存位置。 範例包括 Azure 儲存體、託管的合作夥伴系統以及使用事件中樞的非 Azure 合作夥伴系統

如需進一步了解 Azure 監視器如何儲存資料,請參閱 Azure 監視器資料平台

Azure 監視器平台計量

Azure 監視器為大多數服務提供平台計量。 這些計量包括:

  • 針對每個命名空間個別定義。
  • 儲存在 Azure 監視器時間序列計量資料庫中。
  • 輕量且能支援近即時警示。
  • 用來追蹤資源效能的長期變化。

收集:Azure 監視器會自動收集平台計量。 不需要組態。

路由:通常您也可以將平台計量路由傳送至 Azure 監視器記錄/Log Analytics,以便與其他記錄資料一同查詢。 如需詳細資訊,請參閱計量診斷設定 (機器翻譯)。 如需了解如何設定服務的診斷設定,請參閱在 Azure 監視器中建立診斷設定 (機器翻譯)。

如需 Azure 監視器中所有資源可收集的計量完整清單,請參閱 Azure 監視器中所支援的計量

如需 AKS 可用計量的清單,請參閱 Azure Kubernetes Service 監視數據參考

計量在叢集監視、識別問題,以及最佳化 AKS 叢集中的效能方面扮演著重要角色。 平台計量是使用安裝在 kube-system 命名空間中的立即可用計量伺服器來擷取,該伺服器會定期從 Kubelet 服務的所有 Kubernetes 節點擷取計量。 您也應該啟用 Azure 受控 Prometheus 計量來收集容器計量和 Kubernetes 物件計量,例如部署的物件狀態。 如需詳細資訊,請參閱 從 AKS 叢集收集 Prometheus 計量。

AKS 也會透過 Azure 受控 Prometheus 公開重要控制平面元件的計量,例如 API 伺服器、ETCD、排程器。 此功能目前為預覽功能。 如需詳細資訊,請參閱 監視 Azure Kubernetes Service (AKS) 控制平面計量 (預覽)

非 Azure 監視器型計量

此服務提供 Azure 監視器計量資料庫中未包含的其他計量。

Azure 監視器的下列 Azure 服務和功能可用來額外監視 Kubernetes 叢集。 您可以從 Azure 入口網站中的整合索引標籤、Azure CLI、Terraform、Azure 原則在 AKS 叢集建立期間啟用這些功能,或稍後在叢集上上線。 每項功能都可能會產生成本,因此請先參閱每個功能的定價資訊,再加以啟用。

服務/功能 描述
容器深入解析 使用 Azure 監視器代理程式的容器化版本,從叢集中的每個節點收集 stdout/stderr 記錄和 Kubernetes 事件。 此功能支援 AKS 叢集的各種監視案例。 您可以使用 Azure CLI、Azure 原則、Azure 入口網站 或 Terraform 來建立 AKS 叢集時啟用監視。 如果您在建立叢集時未啟用容器深入解析,請參閱啟用 Azure Kubernetes Service (AKS) 叢集的容器深入解析以取得啟用的其他選項。

容器深入解析會將大部分的數據儲存在Log Analytics工作區中,而且您通常會使用與叢集的資源記錄相同的記錄分析工作區。 請參閱設計 Log Analytics 工作區架構,以取得應建立的工作區數目和放置位置的指引。
適用於 Prometheus 的 Azure 監視器受管理服務 Prometheus 是來自 Cloud Native Compute Foundation 的雲端原生計量解決方案。 這是用來從 Kubernetes 叢集收集和分析計量數據的最常用工具。 適用於 Prometheus 的 Azure 監視器受控服務是 Azure 中完全受控的 Prometheus 相容監視解決方案。 如果您在建立叢集時未啟用受控 Prometheus,請參閱 從 AKS 叢集收集 Prometheus 計量,以取得啟用的其他選項。

適用於 Prometheus 的 Azure 監視器受控服務會將其資料儲存在 Azure 監視器工作區中, 連結至 Grafana 工作區 ,讓您可以使用 Azure 受控 Grafana 分析資料。
Azure 受控 Grafana Grafana的完全受控實作,是一個開放原始碼資料視覺效果平台,通常用來呈現 Prometheus 資料。 多個預先定義的 Grafana 儀錶板可用來監視 Kubernetes 和完整堆棧疑難排解。 如果您在建立叢集時未啟用受控 Grafana,請參閱 連結 Grafana 工作區。 您可以將它連結至 Azure 監視器工作區,以便存取叢集的 Prometheus 計量。

監視 AKS 控制平面計量 (預覽)

本節說明如何使用控制平面計量 (預覽) 功能。 從控制平面收集計量,並在 Azure 監視器中檢視遙測。 控制平面計量功能與 Prometheus 和 Grafana 完全相容。 此功能可讓您更瞭解控制平面元件的可用性和效能,例如 API 伺服器、ETCD、排程器、自動調整程式和控制器管理員。 您可使用這些計量,將整體可檢視性最大化,並維持 AKS 叢集的卓越運作。

先決條件與限制

安裝 aks-preview 擴充功能

重要

AKS 預覽功能可透過自助服務,以加入方式使用。 預覽會以「現狀」和「可供使用時」提供,其其不受服務等級協定和有限瑕疵擔保所保護。 客戶支援部門會盡最大努力,部分支援 AKS 預覽。 因此,這些功能不適合實際執行用途。 如需詳細資訊,請參閱下列支援文章:

  • 使用 az extension addaz extension update 命令來安裝或更新 aks-preview Azure CLI 延伸模組。

    # Install the aks-preview extension
    az extension add --name aks-preview
    
    # Update the aks-preview extension
    az extension update --name aks-preview
    

註冊 AzureMonitorMetricsControlPlanePreview 旗標

  1. 使用 az feature register 命令註冊 AzureMonitorMetricsControlPlanePreview 功能旗標。

    az feature register --namespace "Microsoft.ContainerService" --name "AzureMonitorMetricsControlPlanePreview"
    

    狀態需要幾分鐘的時間才會顯示「已註冊」

  2. 使用 az feature show 命令確認註冊狀態。

    az feature show --namespace "Microsoft.ContainerService" --name "AzureMonitorMetricsControlPlanePreview"
    
  3. 當狀態反映「已註冊」時,使用 az provider register (部分機器翻譯) 命令,重新整理 Microsoft.ContainerService 資源提供者的註冊。

    az provider register --namespace "Microsoft.ContainerService"
    

在您的 AKS 叢集上啟用控制平面計量

您可以在建立新叢集或更新現有叢集時,使用適用於 Prometheus 的 Azure 監視器受管理服務附加元件啟用控制平面計量。

在新的 AKS 叢集上啟用控制平面計量:

若要從 Kubernetes 叢集收集 Prometheus 計量,請參閱為 AKS 叢集啟用 Prometheus 和 Grafana,並遵循 AKS 叢集的 CLI 索引標籤上的步驟。

在現有的 AKS 叢集上啟用控制平面計量

  • 如果您的叢集已經有 Prometheus 附加元件,請更新叢集,以確保它會使用 az aks update 命令開始收集控制平面計量。

    az aks update --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP
    

注意

不同於從叢集節點收集的計量,控制平面計量是由不屬於 ama-metrics 附加元件的元件所收集。 啟用 AzureMonitorMetricsControlPlanePreview 功能旗標和受管理的 Prometheus 附加元件可確保收集控制平面計量。 啟用計量集合之後,可能需要幾分鐘的時間,資料才會出現在工作區中。

查詢控制平面計量

控制平面計量會儲存在叢集區域的 Azure 監視器工作區中。 您可以直接從工作區或透過連線至工作區的 Azure 受控 Grafana 執行個體來查詢計量。

使用下列步驟,在 Azure 監視器工作區中檢視控制平面計量:

  1. Azure 入口網站中,瀏覽至您的 AKS 叢集。

  2. 在 [監視] 下,選取 [深入解析]

    Azure 監視器工作區的螢幕快照。

注意

AKS 提供儀表板範本,可協助您即時檢視和分析控制平面遙測資料。 如果您使用 Azure Managed Grafana 將資料可視化,您可以匯入下列儀表板:

自訂控制平面計量

AKS 包含一組預先設定的計量,可收集並儲存每個元件。 API serveretcd 依預設為啟用。 您可以透過 ama-settings-configmap 自訂這份清單。

預設目標包含下列值:

controlplane-apiserver = true
controlplane-cluster-autoscaler = false
controlplane-kube-scheduler = false
controlplane-kube-controller-manager = false
controlplane-etcd = true

所有 ConfigMap 都應該套用至任何叢集的 kube-system 命名空間。

如需 minimal-ingestion 設定檔計量的詳細資訊,請參閱受管理 Prometheus 中控制平面計量的最小擷取設定檔

  • 從預設目標僅擷取最小計量

    設定 default-targets-metrics-keep-list.minimalIngestionProfile="true" 時,只會為每個預設目標擷取最小計量集:controlplane-apiservercontrolplane-etcd

  • 從所有目標擷取所有計量

    使用下列步驟,從叢集上的所有目標收集所有計量:

    1. 下載 ConfigMap 檔案 ama-metrics-settings-configmap.yaml,並將其重新命名為 configmap-controlplane.yaml

    2. 設定 minimalingestionprofile = false

    3. default-scrape-settings-enabled 之下,確認您想要抓取的目標設定為 true。 您可以指定的唯一目標包括:controlplane-apiservercontrolplane-cluster-autoscalercontrolplane-kube-schedulercontrolplane-kube-controller-managercontrolplane-etcd

    4. 使用 kubectl apply 命令套用 ConfigMap。

      kubectl apply -f configmap-controlplane.yaml
      

      套用設定之後,從控制平面擷取的指定目標計量需要幾分鐘的時間才會出現在 Azure 監視器工作區中。

  • 除了最小計量之外,也會擷取一些其他計量

    minimal ingestion profile 設定有助於降低計量的擷取量,因為它只會收集預設儀表板、預設錄製規則及預設警示所使用的計量。 若要自訂此設定,請執行下列步驟:

    1. 下載 ConfigMap 檔案 ama-metrics-settings-configmap,並將其重新命名為 configmap-controlplane.yaml

    2. 設定 minimalingestionprofile = true

    3. default-scrape-settings-enabled 之下,確認您想要抓取的目標設定為 true。 您可以指定的唯一目標包括:controlplane-apiservercontrolplane-cluster-autoscalercontrolplane-kube-schedulercontrolplane-kube-controller-managercontrolplane-etcd

    4. default-targets-metrics-keep-list 之下,指定 true 目標的計量清單。 例如:

      controlplane-apiserver= "apiserver_admission_webhook_admission_duration_seconds| apiserver_longrunning_requests"
      
    5. 使用 kubectl apply 命令套用 ConfigMap。

      kubectl apply -f configmap-controlplane.yaml
      

    套用設定之後,從控制平面擷取的指定目標計量需要幾分鐘的時間才會出現在 Azure 監視器工作區中。

  • 僅從部分目標擷取特定計量

    1. 下載 ConfigMap 檔案 ama-metrics-settings-configmap,並將其重新命名為 configmap-controlplane.yaml

    2. 設定 minimalingestionprofile = false

    3. default-scrape-settings-enabled 之下,確認您想要抓取的目標設定為 true。 此處您可以指定的唯一目標包括:controlplane-apiservercontrolplane-cluster-autoscalercontrolplane-kube-schedulercontrolplane-kube-controller-managercontrolplane-etcd

    4. default-targets-metrics-keep-list 之下,指定 true 目標的計量清單。 例如:

      controlplane-apiserver= "apiserver_admission_webhook_admission_duration_seconds| apiserver_longrunning_requests"
      
    5. 使用 kubectl apply 命令套用 ConfigMap。

      kubectl apply -f configmap-controlplane.yaml
      

      套用設定之後,從控制平面擷取的指定目標計量需要幾分鐘的時間才會出現在 Azure 監視器工作區中。

疑難排解控制平面計量問題

請確定已啟用 AzureMonitorMetricsControlPlanePreview 功能旗標,且 ama-metrics Pod 正在執行。

注意

Azure 受管理服務 Prometheus 的疑難排解方法不會直接在此轉譯,因為抓取控制平面的元件不存在於受管理的 Prometheus 附加元件中。

  • ConfigMap 格式化

    請確定您在 ConfigMap 中使用適當的格式設定,而且欄位 (尤其是 default-targets-metrics-keep-listminimal-ingestion-profiledefault-scrape-settings-enabled) 都已正確填入其預期值。

  • 隔離控制平面與資料平面

    首先,將部分節點相關計量設定為 true,並確認計量已轉送至工作區。 這有助於判斷問題是否與抓取控制平面計量有關。

  • 已擷取的事件

    套用變更後,您即可從 [Azure 監視器概觀] 頁面,或從所選叢集的 [監視] 區段開啟計量總管,並檢查每分鐘擷取的事件數目增加或減少。 其應可協助您判斷特定計量是否遺失,或所有計量皆遺失。

  • 不會公開特定計量

    在某些情況下會記錄計量,但不會從目標公開,也不會轉送至 Azure 監視器工作區。 在此情況下,必須確認其他計量是否轉送至工作區。

  • 無法存取 Azure 監視器工作區

    當您啟用附加元件時,您可以指定您沒有存取權的現有工作區。 在此情況下,看起來會像是您並未收集及轉送此計量。 請確定您在啟用附加元件或建立叢集時建立新的工作區。

在您的 AKS 叢集上停用控制平面計量

停用受管理的 Prometheus 附加元件,並取消註冊 AzureMonitorMetricsControlPlanePreview 功能旗標,即可隨時停用控制平面計量。

  1. 使用 az aks update 命令來移除可抓取 Prometheus 計量的計量附加元件。

    az aks update --disable-azure-monitor-metrics --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP
    
  2. 使用 az feature unregister 命令取消註冊 AzureMonitorMetricsControlPlanePreview 功能旗標,以停用 AKS 叢集上控制平面計量的抓取。

    az feature unregister "Microsoft.ContainerService" --name "AzureMonitorMetricsControlPlanePreview"
    

常見問題集

  • 是否可使用自我主控的 Prometheus 來抓取控制平面計量?

    否,您目前無法使用自我主控的 Prometheus 來抓取控制平面計量。 自我主控的 Prometheus 只能根據負載平衡器來抓取單一執行個體。 計量不可靠,因為通常只能透過受管理的 Prometheus 顯示控制平面計量的多個複本

  • 為何使用者代理程式無法透過控制平面計量使用?

    Kubernetes 中的控制平面計量沒有使用者代理程式。 使用者代理程式只能透過診斷設定中提供的控制平面記錄使用。

Azure 監視器資源記錄

資源記錄提供對 Azure 資源所完成作業的深入解析。 系統會自動產生記錄,但您必須將其路由傳送至 Azure 監視器記錄,才能儲存或查詢這些記錄。 按類別組織記錄。 指定的命名空間可能會有多個資源記錄類別。

收集:您必須先建立「診斷設定」,並將記錄路由傳送至一個或多個位置,才會開始收集和儲存資源記錄。 在建立診斷設定時,您可以指定要收集的記錄類別。 有多種方式可以建立和維護診斷設定,包括透過 Azure 入口網站、程式設計方式,以及 Azure 原則。

路由傳送:建議的預設設定是將資源記錄路由傳送至 Azure 監視器記錄,以便與其他記錄資料一同查詢。 您也可以使用其他位置,例如 Azure 儲存體、Azure 事件中樞及特定 Microsoft 監視合作夥伴。 如需詳細資訊,請參閱 Azure 資源記錄 (機器翻譯) 和資源記錄目的地 (機器翻譯)。

如需收集、儲存及路由傳送資源記錄的詳細資訊,請參閱 Azure 監視器中的診斷設定 (機器翻譯)。

如需 Azure 監視器中所有可用資源記錄類別的清單,請參閱 Azure 監視器中支援的資源記錄 (機器翻譯)。

Azure 監視器中的所有資源記錄都有相同的標頭欄位,後面接著服務特定的欄位。 一般結構描述如 Azure 監視器資源記錄結構描述中所述。

如需可用的資源記錄類別、其相關聯的Log Analytics資料表和AKS的記錄架構,請參閱 Azure Kubernetes Service 監視數據參考

AKS 控制平面/資源記錄

AKS 叢集的控制平面記錄會實作為 Azure 監視器中的資源記錄。 在您建立診斷設定並將其路由至一個或多個位置之前,不會收集並儲存資源記錄。 您通常會將其傳送至 Log Analytics 工作區,這是儲存容器深入解析的大部分數據。

如需使用 Azure 入口網站、Azure CLI 或 PowerShell 建立診斷設定的詳細程序,請參閱建立診斷設定以在 Azure 中收集平台記錄和計量。 在建立診斷設定時,您可以指定要收集的記錄類別。 AKS 的類別會列在 AKS 監視資料參考中。

重要

收集 AKS 的資源記錄時可能會花費大量成本,特別是 kube-audit 記錄。 請考慮下列建議,以減少收集的資料量:

  • 若不需要,請停用 kube-audit 記錄。
  • kube-audit-admin 啟用收集,這會排除取得和列出稽核事件。
  • 啟用此處所述的資源特定記錄,並將數據表設定 AKSAudit基本記錄

請參閱使用 Azure 服務和雲端原生工具監視 Kubemetes取得進一步建議,以及成本最佳化和 Azure 監視取得進一步降低監視費用的策略。

AKS 對資源記錄支援 AKS 診斷模式資源專屬模式。 此模式會指定Log Analytics工作區中傳送資料的數據表。 Azure 診斷模式會將所有資料傳送至 AzureDiagnostics 資料表,而資源專屬模式會將資料傳送至 AKS 稽核AKS 稽核管理員,以及 AKS 控制平面 ,如 資源記錄資料表所示。

基於下列原因,建議對 AKS 使用資源專屬模式:

  • 因為位於 AKS 專屬的個別資料表中,資料更容易查詢。
  • 支援設定為基本記錄,以節省大量費用。

如需收集模式之間差異的詳細資訊,包括如何變更現有設定,請參閱 選取收集模式

注意

您也可以透過 CLI 設定診斷設定。 在這些情況下,不保證能夠順利運作,因為它不會檢查叢集的布建狀態。 請務必檢查叢集的診斷設定,使其在設定之後確實反映。

az monitor diagnostic-settings create --name AKS-Diagnostics --resource /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myresourcegroup/providers/Microsoft.ContainerService/managedClusters/my-cluster --logs '[{"category": "kube-audit","enabled": true}, {"category": "kube-audit-admin", "enabled": true}, {"category": "kube-apiserver", "enabled": true}, {"category": "kube-controller-manager", "enabled": true}, {"category": "kube-scheduler", "enabled": true}, {"category": "cluster-autoscaler", "enabled": true}, {"category": "cloud-controller-manager", "enabled": true}, {"category": "guard", "enabled": true}, {"category": "csi-azuredisk-controller", "enabled": true}, {"category": "csi-azurefile-controller", "enabled": true}, {"category": "csi-snapshot-controller", "enabled": true}]'  --workspace /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/myresourcegroup/providers/microsoft.operationalinsights/workspaces/myworkspace --export-to-resource-specific true

記錄查詢範例

重要

當您從叢集的 AKS 功能表中選取記錄時,Log Analytics 會隨即開啟,並將查詢範圍設定為目前的叢集。 這表示記錄查詢只會包含來自該資源的資料。 如果您想要執行包含其他叢集資料或其他 Azure 服務資料的查詢,請從 Azure 監視器 功能表中選取 記錄。 如需詳細資訊,請參閱 Azure 監視器 Log Analytics 中的記錄查詢範圍和時間範圍

如果叢集的診斷設定使用 Azure 診斷模式,AKS 的資源記錄會儲存在 AzureDiagnostics 資料表。 您可以使用 [類別] 資料行區分不同記錄。 如需每個類別的描述,請參閱 AKS 參考資源記錄

描述 記錄檔查詢
計算每個類別的記錄
(Azure 診斷模式)
AzureDiagnostics
| where ResourceType == "MANAGEDCLUSTERS"
| 依類別總結 Count = count()
所有 API 伺服器記錄
(Azure 診斷模式)
AzureDiagnostics
| where Category == "kube-apiserver"
時間範圍內的所有 kube-audit 記錄
(Azure 診斷模式)
起始時間 = datetime("2023-02-23");
結束時間 = datetime("2023-02-24");
AzureDiagnostics
| where TimeGenerated between(starttime..endtime)
| where Category == "kube-audit"
| extend event = parse_json(log_s)
| extend HttpMethod = tostring(event.verb)
| extend User = tostring(event.user.username)
| extend Apiserver = pod_s
| extend SourceIP = tostring(event.sourceIPs[0])
|project TimeGenerated, Category, HttpMethod, User, Apiserver, SourceIP, OperationName, event
所有稽核記錄
(資源專屬模式)
AKSAudit
排除取得和列出稽核事件的所有稽核記錄
(資源專屬模式)
AKSAuditAdmin
所有 API 伺服器記錄
(資源專屬模式)
AKSControlPlane
| where Category == "kube-apiserver"

若要存取 Log Analytics 工作區中的一組預先組建的查詢,請參閱 Log Analytics 查詢介面,然後選取 Kubernetes Services 資源類型。 如需容器深入解析的常見查詢清單,請參閱 容器深入解析查詢

AKS 資料平面/容器深入解析記錄

Container Insights 會從容器和 Kubernetes 叢集收集各種類型的遙測資料,以協助您監視、疑難排解,以及深入瞭解在 AKS 叢集中執行的容器化應用程式。 如需容器見解使用的資料表及其詳細描述的清單,請參閱 Azure 監視器資料表參考。 這些資料表全都可用於記錄查詢

成本最佳化設定可讓您自訂和控制透過容器深入解析代理程式收集的計量資料。 此功能支援個別資料表選取、資料收集間隔和命名空間的資料收集設定,以透過 Azure 監視器資料收集規則 (DCR)排除資料收集。 這些設定可控制擷取的數量,並降低容器深入解析的監視成本。 您可以使用下列選項,透過 Azure 入口網站自訂容器深入解析收集的資料。 選取全部 (預設) 以外的任何選項,會導致容器深入解析體驗變得無法使用。

分組 資料表 備註
全部 (預設) 所有標準容器深入解析資料表 啟用預設容器深入解析視覺效果時為必要項目
效能 Perf、InsightsMetrics
記錄和事件 ContainerLog 或 ContainerLogV2、KubeEvents、 KubePodInventory 如果您已啟用受控 Prometheus 計量,則建議使用
工作負載、部署和 HPA InsightsMetrics、KubePodInventory、KubeEvents、ContainerInventory、ContainerNodeInventory、KubeNodeInventory、KubeServices
永續性磁碟區 InsightsMetrics, KubePVInventory

記錄和事件群組會從 ContainerLogContainerLogV2KubeEventsKubePodInventory 資料表擷取資料,但不會擷取計量。 收集計量的建議路徑是從 AKS 叢集啟用適用於 Prometheus 的 Azure 監視器受控服務,並使用 Azure 受控 Grafana 取得資料視覺效果。 如需詳細資訊,請參閱管理 Azure 監視器工作區

ContainerLogV2 結構描述

Azure 監視器容器深入解析提供容器記錄的架構,稱為 ContainerLogV2,這是建議的選項。 此格式包含下列欄位,可協助檢視與 AKS 和已啟用 Azure Arc 的 Kubernetes 叢集相關的資料時常見的查詢:

  • ContainerName
  • PodName
  • PodNamespace

此外,此結構描述與基本記錄資料方案相容,提供標準分析記錄以外的低成本替代方案。 基本記錄數據計劃可讓您節省在Log Analytics工作區中擷取和儲存大量詳細資訊記錄的成本,以進行偵錯、疑難解答和稽核。 這不會影響分析和警示的成本。 如需詳細資訊,請參閱Log Analytics 工作區中的管理資料表

ContainerLogV2 是建議的方法,是客戶使用 ARM、Bicep、Terraform、Policy和 Azure 入口網站,使用受控識別驗證上線容器深入解析的預設架構。 如需如何透過叢集的資料收集規則 (DCR) 或 ConfigMap 啟用 ContainerLogV2 的詳細資訊,請參閱啟用 ContainerLogV2 架構

Azure 活動記錄 (部分機器翻譯)

活動記錄包含訂用帳戶層級事件,用於追蹤每個 Azure 資源外部可見的作業;例如,建立新的資源或啟動虛擬機器。

收集:活動記錄事件會自動產生並收集至個別存放區中,以便使用者在 Azure 入口網站中檢視。

路由:您可以將活動記錄資料傳送至 Azure 監視器記錄,以便與其他記錄資料一起分析。 您也可以使用其他位置,例如 Azure 儲存體、Azure 事件中樞及特定 Microsoft 監視合作夥伴。 如需進一步了解如何路由傳送活動記錄,請參閱 Azure 活動記錄概觀 (機器翻譯)。

即時檢視 Azure Kubernetes Service (AKS) 容器記錄、事件和 Pod 計量

在本節中,您將瞭解如何使用 Container Insights 中的實時數據 功能,即時檢視 Azure Kubernetes Service (AKS) 容器記錄、事件和 Pod 計量。 這項功能可讓您直接存取 kubectl logs -ckubectl get 事件以及 kubectl top pods,協助您即時排解疑難問題。

注意

AKS 使用 Kubernetes 叢集層級的記錄架構。 容器記錄位於節點上的 /var/log/containers 內。 若要存取節點,請參閱連線至 Azure Kubernetes Service (AKS) 叢集節點

如需設定「即時資料」功能的說明,請參閱在 Container Insights 中設定即時資料。 此功能會直接存取 Kubernetes API。 如需驗證模型的詳細資訊,請參閱 Kubernetes API

檢視 AKS 資源即時記錄

注意

若要從私人叢集存取記錄,您必須位於與叢集相同私人網路的電腦上。

  1. Azure 入口網站中,瀏覽至您的 AKS 叢集。

  2. 在 [Kubernetes 資源] 之下,選取 [工作負載]

  3. 選取您要檢視記錄的部署Pod副本集、具狀態集作業Cron 作業,然後選取 [即時記錄]。

  4. 選取您要檢視記錄的資源。

    下列範例顯示 [Pod] 資源的記錄:

    顯示即時記錄部署的螢幕擷取畫面。

檢視即時記錄

當容器引擎在叢集、節點控制器容器產生記錄數據時,您可以檢視即時記錄數據。

  1. Azure 入口網站中,瀏覽至您的 AKS 叢集。

  2. 在 [監視] 下,選取 [深入解析]

  3. 選取 [叢集]、[節點]、[控制器] 或 [容器] 索引標籤,然後選取您要檢視記錄的物件。

  4. 在資源 [概觀] 上,選取 [即時記錄]

    注意

    若要從 Log Analytics 工作區檢視資料,請選取 [在 Log Analytics 中檢視記錄]。 請參閱如何從 Container Insights 查詢記錄,以深入了解如何檢視歷程記錄、事件和計量。

    成功驗證之後,如果可以擷取資料,就會開始串流處理至 [即時記錄] 索引標籤。您可在此檢視連續串流的記錄資料。 下圖顯示 [容器] 資源的記錄:

    顯示容器 [即時記錄] 檢視資料選項的螢幕擷取畫面。

檢視即時事件

您可以檢視即時事件數據,因為容器引擎會在叢集節點控制器容器產生。

  1. Azure 入口網站中,瀏覽至您的 AKS 叢集。

  2. 在 [監視] 下,選取 [深入解析]

  3. 選取 [叢集]、[節點]、[控制器] 或 [容器] 索引標籤,然後選取您要檢視事件的物件。

  4. 在資源 [概觀] 頁面上,選取 [即時活動]

    注意

    若要從 Log Analytics 工作區檢視資料,請選取 [在 Log Analytics 中檢視事件]。 請參閱如何從 Container Insights 查詢記錄,以深入了解如何檢視歷程記錄、事件和計量。

    成功驗證之後,如果可以擷取資料,就會開始串流處理至 [即時事件] 索引標籤。下圖顯示 [容器] 資源的事件:

    顯示容器 [即時事件] 檢視資料選項的螢幕擷取畫面。

檢視計量

您可以選取 Pod 資源,檢視即時計量數據,因為容器引擎會在節點控制器產生數據。

  1. Azure 入口網站中,瀏覽至您的 AKS 叢集。

  2. 在 [監視] 下,選取 [深入解析]

  3. 選取 [節點] 或 [控制器] 索引標籤,然後選取您要檢視計量的 [Pod] 物件。

  4. 在資源 [概觀] 頁面上,選取 [即時計量]

    注意

    若要從 Log Analytics 工作區檢視資料,請選取 [在 Log Analytics 中檢視事件]。 請參閱如何從 Container Insights 查詢記錄,以深入了解如何檢視歷程記錄、事件和計量。

    成功驗證之後,如果可以擷取資料,就會開始串流處理至 [即時計量] 索引標籤。下圖顯示 [Pod] 資源的計量:

    顯示 Pod [即時計量] 檢視資料選項的螢幕擷取畫面。

分析監視資料

有許多工具可用來分析監視資料。

Azure 監視器工具

Azure 監視器支援下列基本工具:

支援更複雜視覺效果的工具包括:

  • 儀表板 (機器翻譯) 可讓您將不同類型的資料合併到 Azure 入口網站中的單一窗格。
  • 活頁簿 (機器翻譯) 是能在 Azure 入口網站中建立的可自訂報表。 活頁簿可以包含文字、計量及記錄查詢。
  • Grafana 是在操作儀表板中表現相當出色的開放平台工具。 您可以使用 Grafana 來建立儀表板,納入 Azure 監視器以外多個來源的資料。
  • Power BI (機器翻譯) 是一項商務分析服務,可提供跨各種資料來源的互動式視覺效果。 你可以將 Power BI 設定為自動從 Azure 監視器匯入記錄資料,以利用這些視覺效果。

Azure 監視器匯出工具

您可以使用下列方法將資料從 Azure 監視器中提取至其他工具:

若要開始使用適用於 Azure 監視器的 REST API,請參閱 Azure 監視 REST API 逐步解說 (機器翻譯)。

Azure 入口網站中的 [監視] 概觀頁面

AKS 叢集資源 [概觀] 頁面上的 [監視] 索引卷標可讓您快速開始檢視 Azure 入口網站 中的監視數據。 此索引標籤包含圖表,其中包含以節點集區分隔之叢集的常見計量。 您可以選取其中任何一個圖表,以進一步分析計量總管中的數據

[監視] 索引標籤也包含叢集受控 PrometheusContainer Insights 的連結。 如果您需要啟用這些工具,您可以在這裡加以啟用。 您也可以在畫面頂端看到橫幅,建議您啟用其他功能來改善叢集的監視。

提示

您可以在 Azure 入口網站 首頁上選取 [Azure 監視器],以存取訂用帳戶中所有 AKS 叢集的監視功能。

Kusto 查詢

您可以使用 Kusto 查詢語言 (KQL) 分析 Azure 監視器記錄/Log Analytics 存放區中的監視資料。

重要

當您從入口網站的服務功能表中選取 [記錄] 時,Log Analytics 會隨即開啟,並將查詢範圍設定為目前的服務。 此範圍表示記錄查詢只會包含該資源類型的資料。 如果您想要執行包含其他 Azure 服務資料的查詢,請從 [Azure 監視器] 功能表中選取 [記錄]。 如需詳細資訊,請參閱 Azure 監視器 Log Analytics 中的記錄查詢範圍和時間範圍

如需各項服務的常見查詢清單,請參閱 Log Analytics 查詢介面 (機器翻譯)。

警示

在監視資料中發現特定狀況時,Azure 監視器警示會主動通知您。 警示可讓您在客戶發現系統發生問題前,就先及早識別和解決問題。 如需詳細資訊,請參閱 Azure 監視器警示

Azure 資源的常見警示有許多來源。 如需 Azure 資源的常見警示範例,請參閱記錄警示查詢範例 (機器翻譯)。 Azure 監視器基準警示 (AMBA) 網站提供半自動化方法來實作重要的平台計量警示、儀表板和指導方針。 此網站適用於持續擴充的 Azure 服務子集,包括屬於 Azure 登陸區域 (ALZ) 的所有服務。

常見的警示結構描述會將 Azure 監視器警示通知的使用量標準化。 如需詳細資訊,請參閱一般警示結構描述 (機器翻譯)。

警示類型

您可以針對在 Azure 監視器資料平台中的任何計量或記錄資料來源發出警示。 警示有許多不同的類型,具體取決於您監視的服務以及所收集的監視資料。 不同類型的警示各有優缺點。 如需詳細資訊,請參閱選擇正確的監視警示類型 (機器翻譯)。

下列清單介紹可建立的 Azure 監視器警示類型:

  • 計量警示 (機器翻譯) 會定期評估資源計量。 這些計量可以是平台計量、自訂計量、Azure 監視器轉換成計量的記錄,或 Application Insights 計量。 計量警示還可以套用多個條件和動態閾值。
  • 記錄警示 (機器翻譯) 可讓使用者使用 Log Analytics 查詢,以預先定義的頻率評估資源記錄。
  • 活動記錄警示 (機器翻譯) 會在發生符合定義條件的新活動記錄事件時觸發。 資源健康狀態警示和服務健康情況警示是報告服務和資源健康狀態的活動記錄警示。

某些 Azure 服務也支援智慧偵測警示Prometheus 警示建議的警示規則

對於某些服務,若要進行大規模監控,您可以將同一計量警示規則套用至相同 Azure 區域中存在的多個同類型資源。 系統會針對每個受監視的資源傳送個別通知。 如需支援的 Azure 服務和雲端,請參閱使用一個警示規則監視多個資源 (機器翻譯)。

從部分 Azure 服務,您可以啟用建議的現成警示規則

系統會編譯建議的警示規則清單,根據:

  • 資源提供者對於監視資源的重要訊號和臨界值的知識。
  • 告知我們客戶經常針對此資源發出警示的資料。

注意

建議的警示規則適用於:

  • 虛擬機器
  • Azure Kubernetes Service (AKS) 資源
  • Log Analytics 工作區

Prometheus 計量型警示

當您 啟用叢集的 Prometheus 計量 集合時,您可以下載建議的 Prometheus 警示規則集合。 此下載包含下列規則:

層級 警示
叢集層級 KubeCPUQuotaOvercommit
KubeMemoryQuotaOvercommit
KubeContainerOOMKilledCount
KubeClientErrors
KubePersistentVolumeFillingUp
KubePersistentVolumeInodesFillingUp
KubePersistentVolumeErrors
KubeContainerWaiting
KubeDaemonSetNotScheduled
KubeDaemonSetMisScheduled
KubeQuotaAlmostFull
節點等級 KubeNodeUnreachable
KubeNodeReadinessFlapping
Pod 等級 KubePVUsageHigh
KubeDeploymentReplicasMismatch
KubeStatefulSetReplicasMismatch
KubeHpaReplicasMismatch
KubeHpaMaxedOut
KubePodCrashLooping
KubeJobStale
KubePodContainerRestart
KubePodReadyStateLow
KubePodFailedState
KubePodNotReadyByController
KubeStatefulSetGenerationMismatch
KubeJobFailed
KubeContainerAverageCPUHigh
KubeContainerAverageMemoryHigh
KubeletPodStartUpLatencyHigh

請參閱如何從容器深入解析建立記錄警示如何從容器深入解析查詢記錄。 記錄警示可以測量兩種不同的東西,可用於監視不同案例:

  • 結果計數:計算查詢傳回的資料列數目,並可用於處理 Windows 事件記錄、Syslog 和應用程式例外狀況等事件。
  • 值的計算:根據數值資料行進行計算,可用於包含任意數目的資源。 例如 CPU 百分比。

根據所需的警示案例,必須使用 now 運算子來建立記錄查詢,以比較 DateTime 與目前時間,並返回一小時。 若要瞭解如何組建記錄型警示,請參閱 從容器深入解析建立記錄警示

AKS 警示規則

下表列出 AKS 的一些建議警示規則。 這些警示只是範例。 您可以針對 Azure Kubernetes Service 監視數據參考中列出的任何計量、記錄專案或活動記錄項目設定警示。

Condition 描述
CPU 使用率百分比 > 95 在所有節點的平均 CPU 使用率超過閾值時引發。
記憶體工作集百分比 > 100 在所有節點的平均工作集使用率超過閾值時引發。

Advisor 建議

對於一些服務,如果在資源作業期間發生重大狀況或有即將到來的變更,入口網站的服務 [概觀] 頁面上會顯示警示。 您可以在左側功能表中 [監視] 底下的 [Advisor 建議] 中找到警示的詳細資訊和建議的修正。 在正常作業期間,不會顯示 Advisor 建議。

如需 Azure Advisor 的詳細資訊,請參閱 Azure Advisor 概觀 (機器翻譯)。

注意

如果您要建立或執行在您的服務上執行的應用程式,Azure 監視器 Application Insights 可提供更多類型的警示。

網路可檢視性

網路可檢視性是維護狀況良好且高效能 Kubernetes 叢集的重要部分。 藉由收集和分析網路流量的相關資料,您可以深入瞭解叢集的運作方式,並在造成中斷或效能降低之前找出潛在問題。

網路可檢視性附加元件啟用時,它會收集並將有用的計量轉換成 Prometheus 格式,其可在 Grafana 中可視化。 啟用時,收集的計量會自動內嵌至適用於 Prometheus 的 Azure 監視器受控服務。 Grafana 功用儀錶板存放庫中提供 Grafana 儀錶板,以可視化 Prometheus 收集的網路可檢視性計量。 如需詳細資訊,請參閱網路可檢視性設定以取得詳細指示。