分享方式:


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

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

設定方法

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

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

使用 DCR 設定資料收集

容器深入解析所建立的 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 的 [數據流 ] 區段中。

串流 容器深入解析資料表
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

使用下列選項進一步執行設定變更的疑難排解:

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

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

    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
    
  • 資料會每小時傳送至 Log Analytics 工作區中的 KubeMonAgentEvents 資料表,並出現組態錯誤的錯誤嚴重性。 如果沒有錯誤,資料表中的項目會包含嚴重性為「資訊」的資料,其不會回報任何錯誤。 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
控制容器記錄擴充,為寫入至叢集中所有容器記錄的 ContainerLog 資料表的每項記錄檔記錄,填入 NameImage 屬性值。 如果未在 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

下一步