使用 Azure 監視器記錄的容器群組和執行個體記錄

Log Analytics 工作區提供集中位置,用於儲存及查詢記錄資料;這些資料不僅來自 Azure 資源,也來自內部部署資源及其他雲端中的資源。 Azure 容器執行個體包含將記錄和事件資料傳送至 Azure 監視器記錄的內建支援。

若要將容器群組記錄和事件資料傳送至 Azure 監視器記錄,請在設定容器群組時,指定現有的 Log Analytics 工作區識別碼和工作區索引鍵。

下列各節說明如何建立已啟用記錄功能的容器群組,以及如何查詢記錄。 您也可以使用工作區識別碼和工作區索引鍵來更新容器群組,以啟用記錄功能。

附註

本文最近有所更新,改為使用「Azure 監視器記錄」一詞,而非 Log Analytics。 記錄資料仍儲存在 Log Analytics 工作區中,並仍由相同的 Log Analytics 服務收集和分析。 我們會持續更新術語,以更精確地反映 Azure 監視器記錄的角色。 如需詳細資訊,請參閱 Azure 監視器 術語變更。

必要條件

若要在您的容器執行個體中啟用記錄功能,您需要具備下列先決條件:

取得 Log Analytics 認證

Azure 容器執行個體必須具備將資料傳送至 Log Analytics 工作區的權限。 若要授與此權限並啟用記錄,您必須在建立容器群組時提供 Log Analytics 工作區識別碼,以及它的其中一個金鑰 (主要或次要)。

Important

本節描述了舊有的 Log Analytics 整合,該整合需要工作空間金鑰。 舊有整合有以下限制:

  • Log Analytics 工作區必須公開存取(不支援私有端點)。
  • 工作區必須啟用本地認證。

若想獲得更完整且支援私有端點的整合,建議改用 診斷設定 。

要取得 Log Analytics workspace ID 和主鍵,請使用 Azure CLI:

# Get the workspace ID
az monitor log-analytics workspace show \
    --resource-group <resource-group> \
    --workspace-name <workspace-name> \
    --query customerId \
    --output tsv

# Get the primary shared key
az monitor log-analytics workspace get-shared-keys \
    --resource-group <resource-group> \
    --workspace-name <workspace-name> \
    --query primarySharedKey \
    --output tsv

建立容器群組

現在您已有記錄分析工作區識別碼和主要金鑰,接下來即可建立已啟用記錄的容器群組。

下列範例示範建立由單一 fluentd 容器組成之容器群組的兩種方式:Azure CLI,以及搭配 YAML 範本使用的 Azure CLI。 Fluentd 容器在其預設組態中會產生數行輸出。 此輸出會傳送到您的 Log Analytics 工作區,因此很適合用來示範記錄的檢視和查詢。

使用 Azure CLI 進行部署

若要使用 Azure CLI 進行部署,請在 az container create 命令中指定 --log-analytics-workspace 和 --log-analytics-workspace-key 參數。 在執行下列命令之前,請先將兩個工作區值取代為您在先前的步驟中取得的值 (並更新資源群組名稱)。

附註

下列範例會從 Docker Hub 提取公用容器映像。 建議您設定提取祕密,以使用 Docker Hub 帳戶進行驗證,而不是發出匿名提取要求。 若要改善使用公用內容時的可靠性,請在私人 Azure 容器登錄中匯入和管理映像。 深入了解有關公用映像的使用方式。

az container create \
    --resource-group myResourceGroup \
    --name mycontainergroup001 \
    --image fluent/fluentd:v1.3-debian-1 \
    --log-analytics-workspace <WORKSPACE_ID> \
    --log-analytics-workspace-key <WORKSPACE_KEY>

使用 YAML 進行部署

如果您想要使用 YAML 部署容器群組,請使用此方法。 下列 YAML 會定義具有單一容器的容器群組。 請將 YAML 複製到新檔案中,然後將 LOG_ANALYTICS_WORKSPACE_ID 和 LOG_ANALYTICS_WORKSPACE_KEY 取代為您在先前的步驟中取得的值。 將檔案儲存為 deploy-aci.yaml。

附註

下列範例會從 Docker Hub 提取公用容器映像。 建議您設定提取祕密,以使用 Docker Hub 帳戶進行驗證,而不是發出匿名提取要求。 若要改善使用公用內容時的可靠性,請在私人 Azure 容器登錄中匯入和管理映像。 深入了解如何使用公用映像。

apiVersion: 2019-12-01
location: eastus
name: mycontainergroup001
properties:
  containers:
  - name: mycontainer001
    properties:
      environmentVariables: []
      image: fluent/fluentd:v1.3-debian-1
      ports: []
      resources:
        requests:
          cpu: 1.0
          memoryInGB: 1.5
  osType: Linux
  restartPolicy: Always
  diagnostics:
    logAnalytics:
      workspaceId: LOG_ANALYTICS_WORKSPACE_ID
      workspaceKey: LOG_ANALYTICS_WORKSPACE_KEY
tags: null
type: Microsoft.ContainerInstance/containerGroups

接下來,執行下列命令以部署容器群組。 請將 myResourceGroup 取代為您訂用帳戶中的資源群組 (或先建立名為 "myResourceGroup" 的資源群組):

az container create --resource-group myResourceGroup --name mycontainergroup001 --file deploy-aci.yaml

在發出命令不久後,您應該就會收到 Azure 的回應,其中包含部署詳細資料。

檢視記錄

在您部署容器群組之後,可能需要幾分鐘的時間 (最多 10 分鐘),第一個記錄項目才會出現在 Azure 入口網站中。

若要在 ContainerInstanceLog_CL 資料表中檢視容器群組的記錄:

  1. 在 Azure 入口網站中瀏覽至您的 Log Analytics 工作區
  2. 在 [一般] 之下,選取 [記錄]
  3. 輸入下列查詢:ContainerInstanceLog_CL | limit 50
  4. 選取 執行

您應該會看到查詢所顯示的數個結果。 如果一開始未看到任何結果,請等候數分鐘,然後再選取 [執行] 按鈕重新執行查詢。 根據預設,記錄項目會以 [資料表] 格式顯示。 接著,您可以展開資料列來查看個別記錄項目的內容。

Azure 入口網站中的記錄檔搜尋結果

檢視事件

您也可以在 Azure 入口網站中,檢視容器執行個體的事件。 事件包括執行個體的建立時間和啟動時間。 若要在 ContainerEvent_CL 資料表中檢視事件資料:

  1. 在 Azure 入口網站中瀏覽至您的 Log Analytics 工作區
  2. 在 [一般] 之下,選取 [記錄]
  3. 輸入下列查詢:ContainerEvent_CL | limit 50
  4. 選取 執行

您應該會看到查詢所顯示的數個結果。 如果一開始未看到任何結果,請等候數分鐘,然後再選取 [執行] 按鈕重新執行查詢。 根據預設,項目會以 [資料表] 格式顯示。 接著,您可以展開資料列來查看個別項目的內容。

Azure 入口網站中的事件搜尋結果

查詢容器記錄

Azure 監視器 記錄包含一套功能完整的查詢語言,可從可能多達數千行的記錄輸出中擷取資訊。

查詢的基本結構是一個來源資料表 (在本文為 ContainerInstanceLog_CL 或 ContainerEvent_CL),後面接著一系列由管道字元 (|) 隔開的運算子。 您可以鏈結數個運算子,以找出更精確的結果及執行進階函式。

若要查看範例查詢結果,請將下列查詢貼到查詢文字方塊中,然後選取 [執行] 按鈕以執行查詢。 此查詢會顯示 [訊息] 欄位中包含「警告」一詞的所有記錄項目:

ContainerInstanceLog_CL
| where Message contains "warn"

此外也支援更複雜的查詢。 例如,下列查詢只會顯示過去一小時內為 "mycontainergroup001" 容器群組產生的記錄項目:

ContainerInstanceLog_CL
| where (ContainerGroup_s == "mycontainergroup001")
| where (TimeGenerated > ago(1h))

日誌結構描述

若要了解 Log Analytics 的 Azure 監視器舊版結構描述,請參閱舊版 Log Analytics 資料表。

使用診斷設定

使用診斷設定將容器群組的日誌和事件路由到 Log Analytics。 此特性相較於本文所述的舊有整合有多項優點:

  • 私人端點支援 — 適用於使用私有端點的 Log Analytics 工作空間。
  • 不需要工作區金鑰——Azure Resource Manager 負責認證,因此不需要管理或輪換工作區金鑰。
  • Standard Azure 監視器 tables — 日誌會傳送到標準 Azure 監視器 tables,而唔係自訂日誌。

若要深入了解,請參閱 Azure 監視器 Log Analytics 資料表。

下一步

Azure 監視器記錄

如需關於在 Azure 監視器記錄中查詢記錄和設定警示的詳細資訊,請參閱:

監視容器 CPU 和記憶體

如需監視容器執行個體 CPU 和記憶體資源的相關資訊,請參閱: