共用方式為


使用 Azure 監視器和雲端原生工具監視 Kubernetes 叢集

Azure 監視器中的 Kubernetes 監視器描述 用來完整監視 Kubernetes 環境及其上執行的工作負載的 Azure 監視器服務。 本文提供如何利用這些服務,根據管理 Kubernetes 環境的一般角色來監視 Kubernetes 環境不同層的最佳做法。

以下是一般 Kubernetes 環境的常見模型圖例,從基礎結構層到應用程式。 每一層都有不同的監視需求,這些需求會由不同的服務來處理,且通常由組織中的不同角色來管理。

具有相關系統管理角色的 Kubernetes 環境層級圖表。

Kubernetes 環境中的不同層級及與其相依應用程式的責任通常會由多個角色處理。 視組織大小而定,這些角色可能由不同的人員或甚至不同的小組來執行。 下表說明不同的角色,而下列各節則提供通常會遇到的監視案例。

角色 描述
開發人員 開發和維護在叢集上執行的應用程式。 負責應用程式特定流量,包括應用程式效能和失敗。 根據 SLA 維護應用程式的可靠性。
平台工程師 負責 Kubernetes 叢集。 佈建和維護開發人員所使用的平台。
網路工程師 負責工作負載與叢集的任何輸入/輸出之間的流量。 分析網路流量並執行威脅分析。

網路工程師

網路工程師負責工作負載與叢集的任何輸入/輸出之間的流量。 他們會分析網路流量並執行威脅分析。

適用於網路工程師的 Kubernetes 環境層圖表。

監視層級 1 - 網路

以下是監視網路的常見案例。

  • 使用網路監看員建立流量記錄,以記錄流經叢集所使用網路安全性群組的 IP 流量相關資訊,然後使用流量分析來分析和提供此資料的深入解析。 使用您用於容器記錄和控制平面記錄的相同 Log Analytics 工作區進行流量分析。
  • 使用 流量分析,判斷是否有任何流量流向或流向叢集所使用的任何非預期連接埠,以及是否有任何流量流經不應公開的公用 IP。 請使用這項資訊來判斷您的網路規則是否需要修改。
  • 針對 AKS 叢集,使用 AKS 的網路可觀察性附加元件(預覽版) 來監視和觀察叢集中服務之間的存取權(東西部流量)。

平台工程師

平台工程師也稱為叢集管理員,負責 Kubernetes 叢集本身。 他們會佈建和維護開發人員所使用的平台。 他們需要了解叢集及其元件的健康情況,並能夠針對任何偵測到的問題進行疑難排解。 他們也需要了解營運叢集的成本,並可能能夠將成本分配給不同的小組。

Kubernetes 環境層次結構的圖表,供平台工程師使用。

大型組織可能也有機群架構師,類似於平台工程師,但負責多個叢集。 他們需要整個環境的可見度,而且必須大規模執行系統管理工作。 大規模建議包含在下列指導中。 如需建立多叢集和大規模案例的 Fleet 資源的詳細資訊,請參閱什麼是 Azure Kubernetes Fleet Manager?

設定平台工程師的監視

下列各節說明在 容器層級中使用 Azure 服務監視 Kubernetes 環境的步驟。 每個功能與整合選項都會提供,以協助您判斷可能需要修改此設定的位置,以符合您的特定需求。 將受控 Prometheus 和容器記錄上線可以屬於與啟用 Kubernetes 叢集監視 (部分內容可能是機器或 AI 翻譯) 中所述的相同體驗。 下列各節分別說明各項,因此您可考慮各項的所有上線和設定選項。

啟用 Prometheus 計量抓取

重要事項

若要使用適用於 Prometheus 的 Azure 監視器受控服務,您需要有 Azure 監視器工作區。 如需工作區設定設計考慮的詳細資訊,請參閱 Azure 監視器工作區架構

啟用 Azure 監視器對 Prometheus 的資料抓取功能,可於建立叢集時啟用此功能,或將此功能新增至現有叢集。 如需詳細資訊,請參閱 啟用 Prometheus 指標

如果您已有要用於 AKS 叢集的 Prometheus 環境,請啟用 Azure 監視器適用於 Prometheus 的受管理服務,然後使用遠端寫入將資料傳送至現有的 Prometheus 環境。 您也可以 使用遠端寫入,將數據從現有的自我管理 Prometheus 環境傳送至適用於 Prometheus 的 Azure 監視器受控服務

如需預設收集計量及其收集頻率的詳細資訊,請參閱 Azure 監視器中的預設 Prometheus 計量組態。 如果您想要自定義設定,請參閱 在適用於 Prometheus 的 Azure 監視器受控服務中自定義 Prometheus 計量的擷取

啟用 Grafana 以分析 Prometheus 資料

附註

Grafana 整合的 Azure Monitor 儀表板 目前處於公開預覽狀態,可以取代受管控的 Grafana。 此版本的 Grafana 不收取任何成本,不需要任何設定,並在 Azure 入口網站中呈現儀錶板。 如果您想要建立結合多個資料來源資料的儀表板,或想要與現有的 Grafana 環境整合,請使用 Managed Grafana。

建立受控 Grafana 的實例 ,並將其 連結至您的 Azure 監視器工作區 ,讓您可以使用 Prometheus 數據作為數據源。 您也可以使用 新增適用於 Prometheus 的 Azure 監視器受控服務作為數據源,手動執行此設定。 各種 預先建置的儀表板 提供用來監視 Kubernetes 叢集,其中包括數個呈現與 Container Insights 檢視相似資訊的儀表板。

如果您有現有的 Grafana 環境,則可以繼續使用它,並將 適用於 Prometheus 的 Azure 監視器受控服務新增為數據源。 您也可以 將 Azure Monitor 資料來源新增至 Grafana,以使用容器見解所收集的數據在自訂 Grafana 儀錶板中顯示。 如果您想要專注於 Grafana 儀表板,而不是使用容器深入解析檢視和報告,請執行此設定。

啟用容器日誌的收集

重要事項

若要使用適用於 Prometheus 的 Azure 監視器受控服務,您必須有 Log Analytics 工作區。 如需工作區設定設計考慮的詳細資訊,請參閱 Azure 監視器工作區架構

當您啟用 Kubernetes 叢集的容器記錄收集時,Azure 監視器會部署容器化版本的 Azure 監視器代理程式 ,將 stdout/stderr 和基礎結構記錄傳送至 Azure 監視器中的 Log Analytics 工作區 ,以便使用 Kusto 查詢語言 (KQL) 進行分析。

如需上線 Kubernetes 叢集的必要條件和設定選項,請參閱啟用 AKS 叢集的監視 。 使用 Azure 原則上線,以確保所有叢集都會保留一致的設定。

為叢集啟用容器記錄之後,請執行下列動作來最佳化您的安裝。

  • 如果您只使用記錄進行偶爾的疑難解答,請考慮將此數據表設定為 基本記錄
  • 使用容器深入解析中啟用成本優化設定中所述的成本預設,藉由減少收集的數據量來降低容器深入解析數據擷取的成本。 藉由將 Container Insights 設定為只收集 記錄和事件 ,以停用計量的收集,因為有許多與 Prometheus 相同的計量值。

如果您有現有的記錄收集解決方案,請遵循該工具的指引,或使用 Azure 監視器啟用記錄收集,並使用 Log Analytics 工作區的資料匯出功能 ,將資料傳送至 Azure 事件中樞 ,以轉送至替代系統。

收集 AKS 叢集的控制平面記錄

AKS 控制平面元件記錄會在 Azure 中實作為資源記錄。 為每個 AKS 叢集建立診斷設定,以將資源記錄傳送至 Log Analytics 工作區。 使用 Azure 原則 來確保跨多個叢集的設定一致。

將資源記錄傳送至工作區需要成本,因此應當只收集您想要使用的記錄類別。 如需 AKS 可用類別的描述,請參閱 資源記錄。 首先收集最少的類別,然後修改診斷設定,以在需求增加時收集其他類別,以及瞭解相關的成本。 如果您基於合規性考慮需要保留資訊,則可以將記錄傳送至 Azure 儲存體帳戶以降低成本。 如需擷取和保留日誌數據成本的詳細資訊,請參閱 Azure Monitor 日誌定價詳細資料

如果您不確定一開始要啟用哪些資源記錄,請使用下列以最常見客戶需求為基礎的建議。 如有需要,您可以稍後啟用其他類別。

類別 要啟用嗎? 目的地
kube-apiserver 啟用 Log Analytics 工作區
kube-audit 啟用 Azure 儲存體中的 Blob。 此能將成本保持最小化,但稽核員需要保留稽核記錄。
kube-audit-admin 啟用 Log Analytics 工作區
kube-controller-manager (kube 控制器管理器) 啟用 Log Analytics 工作區
kube-scheduler 停用
cluster-autoscaler 如果已啟用自動調整,則請進行啟用 Log Analytics 工作區
成立條件 如果已啟用 Microsoft Entra ID,請予以啟用 Log Analytics 工作區
AllMetrics 因為在受控 Prometheus 中收集計量而停用 Log Analytics 工作區

如果您有現有的記錄收集解決方案,請遵循該工具的指引,或使用 Azure 監視器啟用記錄收集,並使用 Log Analytics 工作區的資料匯出功能 ,將資料傳送至 Azure 事件中樞,以轉送至替代系統。

收集 AKS 叢集的活動記錄

AKS 叢集的組態變更會儲存在 活動記錄中。 建立診斷設定,以將此數據傳送至 Log Analytics 工作區 ,以使用其他監視數據進行分析。 此資料收集不會產生成本,且您可以使用 Log Analytics 來分析資料或發出警示。

監視層級 2 - 叢集層級元件

叢集層級包括下列元件:

元件 監視需求
Node 了解每個節點 CPU、記憶體、磁碟和 IP 使用量的整備狀態和效能,並在部署任何工作負載前主動監視其使用量趨勢。

以下是監視叢集層級元件的常見案例。

Azure 入口網站

  • 使用 Azure 入口網站中的統一監視儀錶板來查看叢集中節點的效能,包括 CPU 和記憶體使用率。
  • 使用 [節點] 檢視來查看每個節點的健康情況,以及其上所執行 Pod 的健康情況和效能。 如需分析節點健康情況和效能的詳細資訊,請參閱在 Azure 入口網站中分析 Kubernetes 叢集效能。
  • 在 [報告] 下,使用 [節點監視] 活頁簿來分析磁碟容量、磁碟 IO 和 GPU 使用量。 如需這些活頁簿的詳細資訊,請參閱 節點監視活頁簿
  • 在 [監視] 底下,選取 [活頁簿],然後選取 [子網路 IP 使用量],以查看所選時間範圍每個節點上的 IP 配置和指派。

Grafana 儀表板

  • 使用 Managed Grafana for Kubelet 中的預先建置儀錶板來查看每個儀錶板的健康情況和效能。
  • 使用 Grafana 儀錶板搭配 與磁碟相關的 Prometheus 指標值,例如 node_disk_io_time_seconds_totalwindows_logical_disk_free_bytes,來監控已連接的儲存裝置。
  • 有多個 Kubernetes 儀錶板 可供使用,根據儲存在 Prometheus 中的數據,將節點的效能和健康情況可視化。

Log Analytics

  • 選取 Log Analytics 工作區 [查詢] 對話方塊中 的 [容器] 類別,以存取針對叢集預先建置的記錄查詢,包括從容器深入解析填入的 ContainerImageInventory 資料表擷取資料的映像詳細目錄記錄查詢。

故障排除

成本分析

  • 設定 OpenCost,這是開放原始碼、廠商中立的 CNCF 沙箱專案,以瞭解 Kubernetes 成本,以支援對叢集成本的分析。 它會將詳細的成本資料匯出至 Azure 儲存體。
  • 使用 OpenCost 中的資料,細分組織中不同小組的相對叢集使用量,讓您可以在每個小組之間配置成本。
  • 使用 OpenCost 的資料,藉由密集封裝工作負載,確保叢集使用其節點的完整容量,且使用較少的大型節點,而不是許多較小的節點。

監視層級 3 - 受控 Kubernetes 元件

受控 Kubernetes 層級包含下列元件:

元件 監視
API 伺服器 監視 API 伺服器的狀態,並找出服務關閉時所要求的任何負載和瓶頸的增加。
Kubelet 監視 Kubelet 以協助針對 Pod 管理問題、Pod 未啟動、節點未就緒或 Pod 遭到終止進行疑難排解。

以下是監視受控 Kubernetes 元件的常見案例。

Azure 入口網站

Grafana

  • 使用 Managed Grafana for Kubelet 中的預先建置儀錶板來查看每個 kubelet 的健康情況和效能。
  • 使用 Kubernetes apiserver 之類的儀錶板來完整檢視 API 伺服器效能。 此會包含像是要求延遲和 WorkQueue 處理時間的值。

Log Analytics

  • 使用 記錄查詢搭配資源記錄 來分析 AKS 元件所產生的 控制平面記錄

  • 針對 AKS 的任何設定活動都會記錄在活動記錄中。 當您 將活動記錄傳送至 Log Analytics 工作區 時,您可以使用 Log Analytics 加以分析。 例如,下列範例查詢可用來傳回所有 AKS 叢集上識別成功升級的記錄。

    AzureActivity
    | where CategoryValue == "Administrative"
    | where OperationNameValue == "MICROSOFT.CONTAINERSERVICE/MANAGEDCLUSTERS/WRITE"
    | extend properties=parse_json(Properties_d) 
    | where properties.message == "Upgrade Succeeded"
    | order by TimeGenerated desc
    

故障排除

監視層級 4 - Kubernetes 物件和工作負載

Kubernetes 物件和工作負載層級包含下列元件:

元件 監視需求
部署 監視部署的實際與預期狀態,以及執行於其上的 Pod 狀態與資源使用率。
Pod 監視在 AKS 叢集上執行的 Pod 狀態與資源使用率,其中包含 CPU 和記憶體。
容器 監視在 AKS 叢集上容器執行的資源使用率,其中包含 CPU 和記憶體。

以下是監視 Kubernetes 物件和工作負載的常見案例。

Azure 入口網站

Grafana 儀表板

  • 使用 Managed Grafana 中的預建儀錶板來查看節點Pods的健康狀況和性能。
  • 有多個 Kubernetes 儀錶板 可供使用,根據儲存在 Prometheus 中的數據,將節點的效能和健康情況可視化。

實時數據

適用於平台工程師的警示

Azure 監視器中的警示 會主動通知您監視數據中有趣的數據和模式。 如此便能在您的客戶注意到之前,先在您的系統中識別問題並加以對應。 如果您有現有的 ITSM 警示解決方案,您可以將其整合至 Azure 監視器。 您也可以 匯出工作區數據 ,以將數據從Log Analytics工作區傳送至支援您目前警示解決方案的另一個位置。

警示類型

下表說明您可以根據上述服務所收集資料建立的不同自訂警示規則類型。

警示類型 描述
Prometheus 警示 Prometheus 警示是以 Prometheus 查詢語言 (Prom QL) 撰寫,並套用在適用於 Prometheus 的 Azure 監視器受控服務中儲存的 Prometheus 計量上。 建議的警示已經包含最常見的 Prometheus 警示,您可以視需要 建立新增警示規則
計量警示規則 計量警示規則會使用與計量瀏覽器相同的計量值。 事實上,可以從計量瀏覽器直接建立警示規則,其中也包含您目前正在分析的資料。 計量警示規則對於使用 AKS 數據參考計量中的任何值來警示 AKS 效能很有用。
記錄搜尋警示規則 使用記錄搜尋警示規則,從記錄查詢的結果來產生警示。 如需詳細資訊,請參閱 如何從 Container Insights 建立記錄搜尋警示 ,以及如何 從 Container Insights 查詢記錄

容器深入解析 (預覽) 中計量警示規則的一組建議 Prometheus 警示開始,其中包含 Kubernetes 叢集最常見的警示條件。 您可以在稍後識別其他警示條件時新增更多警示規則。

開發人員

除了開發應用程式, 開發人員 也會維護在叢集上執行的應用程式。 他們負責應用程式特定流量,包括應用程式效能和失敗,並根據公司定義的 SLA 維護應用程式的可靠性。

適用於開發人員的 Kubernetes 環境層圖表。

監視層級 5 - 應用程式

實作 Azure 監視器 OpenTelemetry 發行版 以啟用 Application Insights 體驗 ,並設定 取樣 以控制成本。

Application Insights 使用體驗

應用程式記錄

  • 容器深入解析會將 stdout/stderr 記錄傳送至 Log Analytics 工作區。 欲了解不同日誌的描述,請參閱資源日誌,欲了解每個日誌所發送到的數據表清單,請參閱Kubernetes Services

服務網格

  • 針對 AKS 叢集,部署 Istio 型服務網格附加元件 ,以提供微服務架構的可觀察性。 Istio 是開放原始碼服務網格,可透明地分層至現有的分散式應用程式。 附加元件可協助部署和管理適用於 AKS 的 Istio。

另請參閱