使用數據收集規則在容器深入解析中設定數據收集和成本優化

本文說明如何使用 Kubernetes 叢集的數據收集規則 (DCR) 在容器深入解析中設定數據收集。 這包括優化成本的預設設定。 當您在容器深入解析中將叢集上線時,就會建立 DCR。 容器化代理程式會使用此 DCR,來定義叢集的資料收集。

DCR 主要用於設定效能和庫存資料的資料收集,以及用來設定成本最佳化。

您可以使用 DCR 執行的特定設定包括:

  • 啟用/停用效能和清查數據的收集與命名空間篩選。
  • 定義效能和庫存資料的收集間隔
  • 啟用/停用 Syslog 集合
  • 選取記錄結構描述

重要

容器深入解析中數據收集的完整設定可能需要編輯叢集的 DCR 和 ConfigMap,因為每個方法都允許設定不同的設定集。

如需設定清單,以及使用 ConfigMap 設定資料收集的程式,請參閱 使用 ConfigMap 在容器深入解析中設定數據收集。

必要條件

  • AKS 叢集必須使用系統或使用者指派的受控識別。 如果叢集使用服務主體,您必須升級至受控識別

設定資料收集

當您啟用容器深入解析時所建立的 DCR 會命名為 MSCI-<cluster-region>-<cluster-name>。 您可以在 Azure 入口網站的 [監視器] 功能表選取 [資料收集規則] 選項,以在 Azure 入口網站中檢視此規則。 您應該使用下列其中一種方法來設定資料收集,而不是直接修改 DCR。 如需每個方法使用之不同可用設定的詳細資訊,請參閱資料收集參數

警告

預設的容器深入解析體驗取決於所有現有的資料流。 移除一或多個預設資料流會讓容器深入解析體驗無法使用,而您需要使用其他工具 (例如 Grafana 儀表板) 和記錄查詢來分析收集的資料。

您可以在啟用容器深入解析之後,使用 Azure 入口網站在現有叢集上啟用成本最佳化,也可以在叢集上啟用容器深入解析及成本最佳化。

  1. 在 Azure 入口網站中選取叢集。

  2. 在功能表的 [監視] 區段中,選取 [深入解析] 選項。

  3. 如果叢集上已啟用容器深入解析,請選取 [監視設定] 按鈕。 如果沒有,請選取 [設定 Azure 監視器],並參閱使用 Azure 監視器在 Kubernetes 叢集上啟用監視,以取得啟用監視的詳細資料。

    具有監視設定按鈕的 AKS 叢集螢幕快照。

  4. 針對已啟用 AKS 和 Arc 的 Kubernetes,如果您尚未將叢集遷移至受控識別驗證,請選取 [使用受控識別]

  5. 選取成本預設設定中所述的其中一個成本預設值。

    顯示上線選項的螢幕快照。

  6. 如果您想要自訂設定,請按一下 [編輯收集設定]。 如需每個設定的詳細資料,請參閱資料收集參數。 關於收集的資料,請參閱下方收集的資料

    顯示集合設定選項的螢幕快照。

  7. 按一下 [設定] 以儲存設定。

成本預設設定

當您使用 Azure 入口網站來設定成本最佳化時,您可以從下列預設設定中選取。 您可以選取其中一項,或提供您自己的自訂設定。 根據預設,容器深入解析會使用標準預設值。

成本預設設定 收集頻率 命名空間篩選 Syslog 收集 收集的資料
標準 1 公尺 未啟用 所有標準容器深入解析資料表
成本最佳化 5 公尺 排除 kube-system、gatekeeper-system、azure-arc 未啟用 所有標準容器深入解析資料表
Syslog 1 公尺 預設為啟用 所有標準容器深入解析資料表
記錄和事件 1 公尺 未啟用 ContainerLog/ContainerLogV2
KubeEvents
KubePodInventory

收集的資料

[收集的資料] 選項可讓您選取為叢集填入的資料表。 使用 CLI 或 ARM 執行設定時,這相當於 streams 參數。 如果您選取 [全部 (預設)] 以外的任何選項,容器深入解析體驗就會變成無法使用,而您必須使用 Grafana 或其他方法來分析收集的資料。

顯示所收集數據選項的螢幕快照。

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

資料收集參數

下表描述支援的資料收集設定,以及用於不同上線選項的每個設定名稱。

名稱 描述
收集頻率
CLI:interval
ARM:dataCollectionInterval
決定代理程式收集資料的頻率。 有效值為 1m - 30m,間隔為 1m,預設值為 1m。 如果值超出允許的範圍,則會預設為 1 m
命名空間篩選
CLI:namespaceFilteringMode
ARM:namespaceFilteringModeForDataCollection
包含:只從 [命名空間] 欄位中的值收集資料。
排除:從 [命名空間] 欄位中的值以外的所有命名空間收集資料。
關閉:忽略任何命名空間選取項目,並收集所有命名空間的資料。
命名空間篩選
CLI:namespaces
ARM:namespacesForDataCollection
以逗號分隔的 Kubernetes 命名空間陣列,可根據 namespaceFilteringMode 收集庫存和效能資料。
例如,搭配 Includenamespaces = ["kube-system", "default"] 設定只會收集這兩個命名空間。 如果使用 Exclude 設定,則代理程式會從kube-systemdefault 以外的所有其他命名空間收集資料。 如果使用 Off 設定,代理程式會從所有命名空間收集資料,包括 kube-systemdefault。 無效和無法辨識的命名空間會被忽略。
啟用 ContainerLogV2
CLI:enableContainerLogV2
ARM:enableContainerLogV2
啟用 ContainerLogV2 結構描述的布林值旗標。 如果設定為 true,stdout/stderr 記錄會擷取至 ContainerLogV2 資料表。 如果未設定,除非在 ConfigMap 中另有指定,否則容器記錄會擷取至 ContainerLog 資料表。 指定個別資料流時,您必須包含 ContainerLog 或 ContainerLogV2 的對應資料表。
收集的資料
CLI:streams
ARM:streams
容器深入解析資料表串流的陣列。 請參閱上述支援的串流至資料表對應。

適用的資料表和計量

收集頻率命名空間篩選的設定不適用於所有容器深入解析資料。 下表列出容器深入解析所用 Log Analytics 工作區中的資料表與其收集的計量,以及套用至每個資料表的設定。

注意

這項功能會設定 ContainerLog 和 ContainerLogV2 以外所有容器深入解析資料表的設定。 若要設定這些資料表的設定,請更新代理程式資料收集設定中所述的 ConfigMap。

資料表名稱 間隔? 命名空間? 備註
ContainerInventory Yes Yes
ContainerNodeInventory No 用於命名空間的資料收集設定不適用,因為 Kubernetes 節點不是以命名空間為範圍的資源
KubeNodeInventory No 用於命名空間的資料收集設定不適用,Kubernetes 節點不是以命名空間為範圍的資源
KubePodInventory Yes Yes
KubePVInventory Yes Yes
KubeServices Yes Yes
KubeEvents No Yes 用於間隔的資料收集設定不適用於 Kubernetes 事件
效能 Yes Yes 用於命名空間的資料收集設定不適用於 Kubernetes 節點相關計量,因為 Kubernetes 節點不是以命名空間為範圍的物件。
InsightsMetrics Yes Yes 資料收集設定僅適用於收集下列命名空間的計量收集:container.azm.ms/kubestate、container.azm.ms/pv 和 container.azm.ms/gpu
計量命名空間 間隔? 命名空間? 備註
Insights.container/nodes No 節點不是以命名空間為範圍的資源
Insights.container/pods Yes Yes
Insights.container/containers Yes Yes
Insights.container/persistentvolumes Yes Yes

串流值

當您指定要使用 CLI 或 ARM 收集資料表時,您可以指定對應至 Log Analytics 工作區中特定資料表的串流名稱。 下表列出每個資料表的串流名稱。

注意

如果您熟悉資料收集規則的結構,則會在 DCR 的 dataFlows 區段中指定此資料表中的資料流名稱。

串流 容器深入解析資料表
Microsoft-ContainerInventory ContainerInventory
Microsoft-ContainerLog ContainerLog
Microsoft-ContainerLogV2 ContainerLogV2
Microsoft-ContainerNodeInventory ContainerNodeInventory
Microsoft-InsightsMetrics InsightsMetrics
Microsoft-KubeEvents KubeEvents
Microsoft-KubeMonAgentEvents KubeMonAgentEvents
Microsoft-KubeNodeInventory KubeNodeInventory
Microsoft-KubePodInventory KubePodInventory
Microsoft-KubePVInventory KubePVInventory
Microsoft-KubeServices KubeServices
Microsoft-Perf 效能

對視覺效果和警示的影響

如果您目前將上述資料表用於其他自訂警示或圖表,則修改資料收集設定可能會降低這些體驗的成效。 如果您排除命名空間或降低資料收集頻率,請檢閱使用此資料的現有警示、儀表板和活頁簿。

若要掃描參考這些資料表的警示,請執行下列 Azure Resource Graph 查詢:

resources
| where type in~ ('microsoft.insights/scheduledqueryrules') and ['kind'] !in~ ('LogToMetric')
| extend severity = strcat("Sev", properties["severity"])
| extend enabled = tobool(properties["enabled"])
| where enabled in~ ('true')
| where tolower(properties["targetResourceTypes"]) matches regex 'microsoft.operationalinsights/workspaces($|/.*)?' or tolower(properties["targetResourceType"]) matches regex 'microsoft.operationalinsights/workspaces($|/.*)?' or tolower(properties["scopes"]) matches regex 'providers/microsoft.operationalinsights/workspaces($|/.*)?'
| where properties contains "Perf" or properties  contains "InsightsMetrics" or properties  contains "ContainerInventory" or properties  contains "ContainerNodeInventory" or properties  contains "KubeNodeInventory" or properties  contains"KubePodInventory" or properties  contains "KubePVInventory" or properties  contains "KubeServices" or properties  contains "KubeEvents" 
| project id,name,type,properties,enabled,severity,subscriptionId
| order by tolower(name) asc

下一步