共用方式為


管理容器深入解析代理程式

容器深入解析會使用適用於 Linux 的 Log Analytics 代理程式容器化版本。 初始部署之後,您可能需要在其生命週期期間執行一些例行性或選擇性工作。 本文將解釋如何手動升級代理程式,並停用從特定容器收集環境變數。

注意

如果您已部署 AKS 叢集,並使用 Azure CLI 或 Resource Manager 範本啟用監視,則無法使用 kubectl 升級、刪除、重新部署或部署代理程式。 範本必須部署在叢集所在的資源群組。

升級容器深入解析代理程式

容器深入解析會使用適用於 Linux 的 Log Analytics 代理程式容器化版本。 發行新版代理程式之後,該代理程式會在您裝載於 Azure Kubernetes Service (AKS) 和已啟用 Azure Arc 的 Kubernetes 中的受控 Kubernetes 叢集上自動升級。

如果代理程式在裝載於 AKS 的叢集上升級失敗,本文也說明手動升級代理程式的程序。 若要遵循所發行的版本,請參閱代理程式發行公告

升級 AKS 叢集上的代理程式

在 AKS 叢集上升級代理程式的流程包含兩個步驟。 第一個步驟是使用 Azure CLI 停用容器深入解析所進行的監視。 請遵循在 Kubernetes 叢集上停用容器深入解析一文中所述的步驟。 透過使用 Azure CLI 從叢集中的節點移除代理程式,將不會影響解決方案和儲存在工作區中的對應資料。

注意

在執行此維護活動時,叢集中的節點不會轉送收集的資料。 在您移除代理程式並安裝新版本的空窗期間,效能檢視不會顯示資料。

第二個步驟是安裝新版本的代理程式。 請遵循使用 Azure CLI 啟用監視中所述的步驟來完成此流程。

啟用監視之後,可能需要約 15 分鐘的時間才能檢視叢集的更新健康情況計量。 驗證代理程式已成功升級的方法有兩種:

  • 執行 kubectl get pod <ama-logs-agent-pod-name> -n kube-system -o=jsonpath='{.spec.containers[0].image}' 命令。 在傳回的狀態中,記下輸出 [容器] 區段中 Azure 監視器代理程式的 [映像] 底下的值。
  • 在 [節點] 索引標籤上,選取叢集節點。 在右側的 [屬性] 窗格上,記下 [代理程式映射標籤] 底下的值。

顯示的代理程式版本應該符合 [版本歷程記錄] 頁面上所列的最新版本。

升級混合式 Kubernetes 叢集上的代理程式

請執行以下步驟,以在下列位置執行的 Kubernetes 叢集上升級代理程式:

  • 使用 AKS 引擎裝載於 Azure 的自我管理 Kubernetes 叢集。
  • 使用 AKS 引擎裝載於 Azure Stack 或內部部署環境的自我管理 Kubernetes 叢集。

如果 Log Analytics 工作區位於商用 Azure,請執行下列命令:

$ helm upgrade --set omsagent.secret.wsid=<your_workspace_id>,omsagent.secret.key=<your_workspace_key>,omsagent.env.clusterName=<my_prod_cluster> incubator/azuremonitor-containers

如果 Log Analytics 工作區位於由 21Vianet 營運的 Microsoft Azure,請執行下列命令:

$ helm upgrade --set omsagent.domain=opinsights.azure.cn,omsagent.secret.wsid=<your_workspace_id>,omsagent.secret.key=<your_workspace_key>,omsagent.env.clusterName=<your_cluster_name> incubator/azuremonitor-containers

如果 Log Analytics 工作區位於 Azure 美國政府,請執行下列命令:

$ helm upgrade --set omsagent.domain=opinsights.azure.us,omsagent.secret.wsid=<your_workspace_id>,omsagent.secret.key=<your_workspace_key>,omsagent.env.clusterName=<your_cluster_name> incubator/azuremonitor-containers

在容器上停用收集環境變數

容器深入解析會從在 Pod 中執行的容器收集環境變數,並在 [容器] 檢視內所選取容器的屬性窗格中顯示。 您可以藉由在 Kubernetes 叢集部署期間,或在設定環境變數 AZMON_COLLECT_ENV 之後,停用對特定容器進行收集。 此功能可從代理程式版本 ciprod11292018 和更新版本中取得。

若要在新的或現有容器上停用收集環境變數,請在您的 Kubernetes 部署 YAML 設定檔中,將變數 AZMON_COLLECT_ENV 的值設定為 False

- name: AZMON_COLLECT_ENV  
  value: "False"  

執行下列命令,將變更套用至 Azure Red Hat OpenShift 以外的 Kubernetes 叢集:kubectl apply -f <path to yaml file>。 若要編輯 ConfigMap 並將此變更套用到 Azure Red Hat OpenShift 叢集,請執行以下命令:

oc edit configmaps container-azm-ms-agentconfig -n openshift-azure-logging

此命令會開啟您的預設文字編輯器。 設定變數後,請在編輯器中儲存檔案。

若要確認設定變更已生效,在容器深入解析中選取 [容器] 檢視中的容器。 在 [屬性] 面板中,展開 [環境變數]。 區段應該只會顯示稍早建立的變數,也就是 AZMON_COLLECT_ENV=FALSE。 對於所有其他容器,[環境變數] 區段應該會列出探索到的所有環境變數。

若要重新探索環境變數,請套用您稍早使用的相同流程,並將該值從 False 變更為 True。 接著重新執行 kubectl 命令以更新容器。

- name: AZMON_COLLECT_ENV  
  value: "True"  

容器深入解析代理程式的語意版本更新

容器深入解析已將映射版本和命名慣例轉移至 [semver 格式] (https://semver.org/)。 SemVer 可協助開發人員追蹤在開發階段對軟體執行的每項變更,並確保軟體版本設定一致且有意義。 舊版本的格式為 ciprod<timestamp>-<commitId> 和 win-ciprod<timestamp>-<commitId>,我們的第一個使用 Semver 格式的映射版本是 3.1.4 (Linux 版) 以及 win-3.1.4 (Windows 版)。

Semver 是以 MAJOR.MINOR.PATCH 格式定義的通用軟體版本設定結構描述,遵循下列條件約束:

  1. 當您進行不相容的 API 變更時,請遞增 MAJOR (主要) 版本。
  2. 當您以回溯相容的方式新增功能時,請遞增 MINOR (次要) 版本。
  3. 當您進行回溯相容錯誤修正時,請遞增 PATCH (修補程式) 版本。

隨著 Kubernetes 和 OSS 生態系統興起,容器深入解析會移轉為使用 semver 映像,遵循 K8s 建議的標準,即在推出每個次要版本時,都必須公開記錄每個 Kubernetes 新版本的所有重大變更。

修復重複的代理程式

如果您在 2022 年 10 月之前使用自訂方法手動啟用 Container Insights,則可能導致同時執行多個版本的代理程式。 請遵循下列步驟來清除此重複項目。

  1. 收集任何自訂設定的詳細資料,例如 omsagent 容器上的記憶體和 CPU 限制。

  2. 檢閱 ama-logs 的預設資源限制,並判斷是否符合您的需求。 如果沒有預設值,您可能需要建立支援主題以協助調查和切換記憶體/CPU 限制。 這有助於解決某些客戶先前所遇到導致 OOMKilled 例外狀況的規模限制問題。

    OS 控制器名稱 預設限制
    Linux ds-cpu-limit-linux 500m
    Linux ds-memory-limit-linux 750Mi
    Linux rs-cpu-limit 1
    Linux rs-memory-limit 1.5Gi
    Windows ds-cpu-limit-windows 500m
    Windows ds-memory-limit-windows 1Gi
  3. 清除先前上線的資源:

    如果您先前使用 Helm Chart 上線

    使用下列命令列出命名空間的所有版本:

     helm list --all-namespaces
    

    使用下列命令清除為容器深入解析安裝的 Chart:

    helm uninstall <releaseName> --namespace <Namespace>
    

    如果您先前使用 yaml 部署上線

    使用下列命令下載先前的自訂部署 yaml 檔案:

    curl -LO raw.githubusercontent.com/microsoft/Docker-Provider/ci_dev/kubernetes/omsagent.yaml
    

    使用下列命令清除舊的 omsagent Chart:

    kubectl delete -f omsagent.yaml
    
  4. 使用停用 Kubernetes 叢集上的容器深入解析中的指引,停用容器深入解析以清除所有相關資源

  5. 使用在 Kubernetes 叢集上啟用容器深入解析中的指引重新上線至容器深入解析

下一步

如果您在升級代理程式時遇到問題,請檢閱疑難排解指南以取得支援。