共用方式為


在容器深入解析中設定記錄收集

本文提供如何在 Kubernetes 叢集上線之後,為 Kubernetes 叢集設定數據收集的詳細數據。 如需在叢集上啟用容器深入解析的指引,請參閱 啟用 Kubernetes 叢集的監視。

設定方法

有兩種方法可用來設定和篩選容器深入解析中收集的數據。 視設定而定,您可以選擇這兩種方法,或者您可能需要使用其中一個或另一種方法。 下表說明這兩種方法,下列各節中有詳細資訊。

方法 描述
資料收集規則 (DCR) 數據收集規則是一組使用 Azure 監視器管線支持數據收集的指示。 當您啟用容器深入解析時,會建立 DCR,而且您可以使用 Azure 入口網站 或其他方法修改此 DCR 中的設定。
ConfigMap ConfigMaps 是 Kubernetes 機制,可讓您儲存非機密數據,例如組態檔或環境變數。 容器深入解析會在每個叢集上尋找 ConfigMap,其中包含定義其應該收集的數據的特定設定。

使用 DCR 設定數據收集

Container insights 所建立的 DCR 名為 MSCI-cluster-region-cluster-name>><<。 您可以和訂用帳戶中的其他人一起檢視此 DCR,並使用 Azure 監視器中建立和編輯數據收集規則 (DCR) 中所述的方法加以編輯。 雖然您可以直接修改特定自定義的 DCR,但您可以使用下列方法執行大部分必要的設定。 如需直接編輯 DCR 以取得更進階設定的詳細資訊,請參閱 容器深入解析 中的數據轉換。

重要

AKS 叢集必須使用系統指派或使用者指派的受控識別。 如果叢集使用服務主體,您必須更新叢集,以使用系統指派的受控識別使用者指派的受控識別

使用 Azure 入口網站 設定 DCR

使用 Azure 入口網站,您可以從容器深入解析中數據收集的多個預設組態中選取。 這些組態包括不同的數據表集合和集合頻率,視您的特定優先順序而定。 您也可以自定義設定,只收集所需的數據。 您可以在啟用容器深入解析之後,使用 Azure 入口網站 來自定義現有叢集上的設定,或在叢集上啟用容器深入解析時執行此設定。

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

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

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

    具有監視設定按鈕的 AKS 叢集螢幕擷取畫面。

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

  5. 選取其中一個成本預設值。

    顯示上線選項的螢幕擷取畫面。

    成本預設設定 收集頻率 命名空間篩選 Syslog 收集 收集的資料
    標準 1 公尺 未啟用 所有標準容器深入解析資料表
    成本最佳化 5 公尺 排除 kube-system、gatekeeper-system、azure-arc 未啟用 所有標準容器深入解析資料表
    Syslog 1 公尺 預設為啟用 所有標準容器深入解析資料表
    記錄和事件 1 公尺 未啟用 ContainerLog/ContainerLogV2
    KubeEvents
    KubePodInventory
  6. 如果您想要自訂設定,請按一下 [編輯收集設定]

    顯示收集設定選項的螢幕擷取畫面。

    名稱 描述
    收集頻率 決定代理程式收集資料的頻率。 有效值為 1m - 30m,間隔為 1m,預設值為 1m。
    命名空間篩選 關閉:收集所有命名空間的數據。
    包含:只從 [命名空間] 欄位中的值收集資料。
    排除:從 [命名空間] 欄位中的值以外的所有命名空間收集資料。

    以逗號分隔的 Kubernetes 命名空間陣列,可根據 namespaceFilteringMode 收集庫存和效能資料。 例如,搭配 Includenamespaces = ["kube-system", "default"] 設定只會收集這兩個命名空間。 如果使用 Exclude 設定,則代理程式會從kube-systemdefault 以外的所有其他命名空間收集資料。
    收集的資料 定義要收集的容器深入解析數據表。 如需每個群組的描述,請參閱下方。
    啟用 ContainerLogV2 布爾值旗標以啟用 ContainerLogV2 架構。 如果設定為 true,stdout/stderr 記錄會擷取至 ContainerLogV2 資料表。 如果未設定,除非在 ConfigMap 中另有指定,否則容器記錄會擷取至 ContainerLog 資料表。 指定個別資料流時,您必須包含 ContainerLog 或 ContainerLogV2 的對應資料表。
    啟用 Syslog 集合 從叢集啟用 Syslog 集合。

    [收集的資料] 選項可讓您選取為叢集填入的資料表。 數據表會依最常見的案例分組。 若要指定個別數據表,您必須使用其他方法來修改 DCR。

    顯示已收集資料選項的螢幕擷取畫面。

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

DCR 適用的數據表和計量

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

資料表名稱 間隔? 命名空間? 備註
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

DCR 中的數據流值

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

注意

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

串流 容器深入解析資料表
Microsoft-ContainerInventory ContainerInventory
Microsoft-ContainerLog ContainerLog
Microsoft-ContainerLogV2 ContainerLogV2
Microsoft-ContainerLogV2-HighScale ContainerLogV2 (高縮放模式)1
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 效能

1 您不應該在相同的 DCR 中使用 Microsoft-ContainerLogV2 和 Microsoft-ContainerLogV2-HighScale。 這會導致重複的數據。

與多個叢集共用 DCR

當您在 Kubernetes 叢集上啟用容器深入解析時,會針對該叢集建立新的 DCR,而且可以獨立修改每個叢集的 DCR。 如果您有多個具有自定義監視組態的叢集,您可能想要與多個叢集共用單一 DCR。 然後,您可以針對任何與其相關聯的叢集自動實作的單一 DCR 進行變更。

DCR 與具有資料收集規則關聯之叢集 相關聯 (DCRA)使用預覽 DCR 體驗來檢視和移除每個叢集的現有 DCR 關聯。 然後,您可以使用這項功能,將關聯新增至多個叢集的單一 DCR。

使用 ConfigMap 設定數據收集

ConfigMaps 是 Kubernetes 機制,可讓您儲存非機密數據,例如組態檔或環境變數。 容器深入解析會在每個叢集上尋找 ConfigMap,其中包含定義其應該收集的數據的特定設定。

重要

ConfigMap 是全域清單,且只能有一個 ConfigMap 套用至容器深入解析的代理程式。 套用另一個 ConfigMap 將會覆寫先前的 ConfigMap 收集設定。

必要條件

  • 支援從容器工作負載收集 stdout、stderr 和環境變數的最低代理程式版本是 ciprod06142019 或更新版本。

設定及部署 ConfigMap

使用下列程序,設定 ConfigMap 組態檔並將其部署至叢集:

  1. 如果您還沒有適用於容器深入解析的 ConfigMap,請下載 範本 ConfigMap YAML 檔案 ,並在編輯器中開啟它。

  2. 使用您的自定義項目編輯 ConfigMap YAML 檔案。 此範本包含具有描述的所有有效設定。 若要啟用設定,請移除批註字元 (#) 並設定其值。

  3. 執行下列 kubectl 命令來建立 ConfigMap:

    kubectl config set-context <cluster-name>
    kubectl apply -f <configmap_yaml_file.yaml>
    
    # Example: 
    kubectl config set-context my-cluster
    kubectl apply -f container-azm-ms-agentconfig.yaml
    

    可能需要幾分鐘的時間才能完成設定變更並生效。 然後,叢集中的所有 Azure 監視器代理程式 Pod 都將重新啟動。 重新啟動會將所有 Azure 監視器代理程式 Pod 輪流啟動,因此其不會全部同時重新啟動。 重新啟動完成時,您會收到類似以下結果的訊息:

    configmap "container-azm-ms-agentconfig" created`.
    

確認設定

若要驗證設定已成功套用至叢集,請使用下列命令來檢閱代理程式 Pod 的記錄。

kubectl logs ama-logs-fdf58 -n kube-system -c ama-logs

如果來自 Azure 監視器代理程式 Pod 的組態錯誤,輸出會顯示類似下列的錯誤:

***************Start Config Processing******************** 
config::unsupported/missing config schema version - 'v21' , using defaults

使用下列選項來執行更多組態變更的疑難解答:

  • kubectl logs從代理程式 Pod 使用相同的命令。

  • 檢閱即時記錄中是否有類似下列的錯誤:

    config::error::Exception while parsing config map for log collection/env variable settings: \nparse error on value \"$\" ($end), using defaults, please check config map for errors
    
  • 數據會每小時傳送至 KubeMonAgentEvents Log Analytics 工作區中的數據表,並出現設定錯誤的錯誤嚴重性。 如果沒有錯誤,資料表中的項目會包含嚴重性為「資訊」的資料,其不會回報任何錯誤。 數據 Tags 行包含有關發生錯誤之 Pod 和容器識別碼的詳細資訊,以及過去一小時內發生的第一次、最後一次發生和計數。

驗證結構描述版本

支援的設定結構描述版本會在 Azure 監視器代理程式 Pod 上以 Pod 註釋 (結構描述版本) 的形式提供。 您可以使用下列 kubectl 命令來加以查看。

kubectl describe pod ama-logs-fdf58 -n=kube-system.

ConfigMap 設定

下表描述您可以使用 ConfigMap 設定來控制數據收集的設定。

設定 資料類型 Description
schema-version 字串 (區分大小寫) v1 剖析此 ConfigMap 時,由代理程式使用。 目前支援的結構描述版本為 v1。 不支援修改此值,且此值會在評估 ConfigMap 時遭到拒絕。
config-version String 允許您在原始檔控制系統/存放庫中追蹤此組態檔的版本。 允許的最大字元為 10,而所有其他字元都會被截斷。
[log_collection_settings]
[stdout]
enabled
布林值 true
false
控制是否已啟用 stdout 容器記錄收集。 當設定為 true 且沒有任何命名空間從 stdout 記錄收集中排除時,則會從叢集中所有 Pod 和節點的所有容器收集 stdout 記錄。 如果未在 ConfigMap 中指定,預設值為 true
[stdout]
exclude_namespaces
String 逗號分隔的陣列 不會收集 stdout 記錄的 Kubernetes 命名空間陣列。 此設定只有在 enabled 設定為 true 時有效。 如果未在 ConfigMap 中指定,預設值為
["kube-system","gatekeeper-system"].
[stderr]
enabled
布林值 true
false
控制是否已啟用 stderr 容器記錄收集。 當設定為 true 且沒有任何命名空間從 stderr 記錄收集中排除時,則會從叢集中所有 Pod 和節點的所有容器收集 stderr 記錄。 如果未在 ConfigMap 中指定,預設值為 true
[stderr]
exclude_namespaces
String 逗號分隔的陣列 不會收集 stderr 記錄的 Kubernetes 命名空間陣列。 此設定只有在 enabled 設定為 true 時有效。 如果未在 ConfigMap 中指定,預設值為
["kube-system","gatekeeper-system"].
[env_var]
enabled
布林值 true
false
控制叢集中所有 Pod 和節點的環境變數集合。 如果未在 ConfigMap 中指定,預設值為 true
[enrich_container_logs]
enabled
布林值 true
false
控制容器記錄擴充,針對叢集中所有容器記錄,填Name入寫入 ContainerLog 數據表之每個記錄檔記錄的 和 Image 屬性值。 如果未在 ConfigMap 中指定,預設值為 false
[collect_all_kube_events]
enabled
布林值 true
false
控制是否收集所有類型的 Kube 事件。 根據預設,不會收集類型為 Normal 的 Kube 事件。 當此設定為 true 時,不會再篩選 Normal 事件,而且會收集所有事件。 如果未在 ConfigMap 中指定,預設值為 false
[schema]
containerlog_schema_version
字串 (區分大小寫) v2
v1
設定記錄擷取格式。 如果為 v2,則會使用 ContainerLogV2 資料表。 如果為 v1,則會使用 ContainerLog 資料表 (此資料表已被取代)。 針對使用 Azure CLI 2.54.0 版或更新版本的叢集啟用容器深入解析,預設值為 v2。 如需詳細資訊,請參閱容器深入解析記錄結構描述
[enable_multiline_logs]
enabled
布林值 true
false
控制是否啟用多行容器記錄。 如需詳細資料,請參閱容器深入解析中的多行記錄。 如果未在 ConfigMap 中指定,預設值為 false。 這需要 schema 設定成為 v2
[metadata_collection]
enabled
布林值 true
false
控制是否在數據表的數據ContainerLogV2行中KubernetesMetadata收集元數據。
[metadata_collection]
include_fields
String 逗號分隔的陣列 要包含的元數據欄位清單。 如果未使用設定,則會收集所有欄位。 有效值為 ["podLabels","podAnnotations","podUid","image","imageID","imageRepo","imageTag"]
[metric_collection_settings]
[collect_kube_system_pv_metrics]
enabled
布林值 true
false
允許在 kube-system 命名空間中收集永續性磁碟區 (PV) 使用計量。 根據預設,不會收集 kube-system 命名空間中具有永續性磁碟區宣告的永續性磁碟區使用計量。 當此設定設為 true,會收集所有命名空間的 PV 使用計量。 如果未在 ConfigMap 中指定,預設值為 false
[agent_settings]
[proxy_config]
ignore_proxy_settings
布林值 true
false
若為 true,會忽略 Proxy 設定。 在 AKS 和已啟用 Arc 的 Kubernetes 環境中,如果您的叢集設定為正向 Proxy,則會自動套用 Proxy 設定,並用於代理程式。 針對某些設定,例如使用 AMPLS + Proxy,您可能想要忽略 Proxy 設定。 如果未在 ConfigMap 中指定,預設值為 false

下一步

  • 如需藉由設定容器深入解析來篩選您不需要的數據,以節省成本的詳細資訊,請參閱 在容器深入解析 中篩選記錄收集。