疑難排解 CloudWatch 代理 - Amazon CloudWatch

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

疑難排解 CloudWatch 代理

使用下列資訊可協助疑難排解 CloudWatch 代理程式的問題。

CloudWatch 代理程式命令列參數

若要查看代理程式支援的完整參數清單,請在已安裝該 CloudWatch 代理程式的電腦的命令列中輸入下列指令:

amazon-cloudwatch-agent-ctl -help

使用執行命令安裝 CloudWatch 代理程式失敗

若要使用 Systems Manager 執行命令來安裝 CloudWatch 代理程式,目標伺服器上的 SSM 代理程式必須是 2.2.93.0 或更新版本。如果您的 SSM Agent 不是正確的版本,您可能會看到錯誤,其中包含以下訊息:

no latest version found for package AmazonCloudWatchAgent on platform linux
failed to download installation package reliably

如需有關更新 SSM Agent 版本的資訊,請參閱《AWS Systems Manager 使用者指南》中的安裝和設定 SSM Agent

CloudWatch 代理程式無法啟動

如果 CloudWatch 代理程式無法啟動,您的組態可能有問題。組態資訊會記錄在 configuration-validation.log 檔案中。此檔案在 Linux 伺服器上位於 /opt/aws/amazon-cloudwatch-agent/logs/configuration-validation.log,在執行 Windows Server 的伺服器上則位於 $Env:ProgramData\Amazon\AmazonCloudWatchAgent\Logs\configuration-validation.log

確認 CloudWatch 代理程式正在執行

您可以查詢代理程式,以找出 CloudWatch 代理程式是否正在執行中或已停止。您可以使用 AWS Systems Manager 從遠端執行此操作。您也可以使用命令列,但只會檢查本機伺服器。

使用執行命令查詢 CloudWatch 代理程式的狀態
  1. 開啟 Systems Manager 主控台,網址為 https://console.aws.amazon.com/systems-manager/

  2. 在導覽窗格中,選擇 執行命令

    -或-

    如果 AWS Systems Manager 首頁開啟,請向下捲動並選擇「瀏覽執行命令」。

  3. 選擇 執行命令

  4. 在 [指令] 文件清單中,選擇 [AmazonCloudWatch-] 旁邊的按鈕ManageAgent。

  5. Action (動作) 清單中,選擇 status (狀態)

  6. 針對 Optional Configuration Source (選用組態來源),選擇 default (預設) 並將 Optional Configuration Location (選用組態位置) 維持空白。

  7. Target (目標) 區域,選擇要檢查的執行個體。

  8. 選擇執行

如果代理程式正在執行,輸出會如下所示。

{ "status": "running", "starttime": "2017-12-12T18:41:18", "version": "1.73.4" }

如果代理程式已停止,"status" 欄位將顯示 "stopped"

使用命令列在本機查詢 CloudWatch 代理程式的狀態
  • 在 Linux 伺服器上,輸入以下資訊:

    sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a status

    在執行 Windows 伺服器的伺服器上,以系統管理員身分輸入下列內 PowerShell 容:

    & $Env:ProgramFiles\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1 -m ec2 -a status

CloudWatch 代理程式無法啟動,錯誤提到 Amazon EC2 區域

若代理程式未啟動,而且錯誤訊息提及 Amazon EC2 區域端點,則您可能已將代理程式設定為需要存取 Amazon EC2 端點,卻沒有授予該存取權限。

例如,您若指定代理程式組態檔案中 append_dimensions 參數的值 (取決於 Amazon EC2 中繼資料),而且您使用代理,那麼您必須確保伺服器可以存取 Amazon EC2 的端點。如需有關這些端點的詳細資訊,請參閱 Amazon Web Services 一般參考中的 Amazon Elastic Compute Cloud (Amazon EC2)

CloudWatch 代理程式無法在 Windows 伺服器上啟動

若使用的是 Windows Server,您可能會看到下列錯誤:

Start-Service : Service 'Amazon CloudWatch Agent (AmazonCloudWatchAgent)' cannot be started due to the following error: Cannot start service AmazonCloudWatchAgent on computer '.'. At C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1:113 char:12 + $svc | Start-Service + ~~~~~~~~~~~~~ + CategoryInfo : OpenError: (System.ServiceProcess.ServiceController:ServiceController) [Start-Service], ServiceCommandException + FullyQualifiedErrorId : CouldNotStartService,Microsoft.PowerShell.Commands.StartServiceCommand

若要修正此問題,請先確定伺服器服務正在執行中。如果代理程式嘗試在未執行伺服器服務時啟動,就可以看到此錯誤。

如果伺服器服務已在執行中,可能是下列問題。在某些 Windows 伺服器安裝上, CloudWatch 代理程式需要 30 秒以上的時間才能啟動。由於 Windows Server 依預設只允許服務有 30 秒的時間進行啟動,因此這會導致代理程式失敗,並出現類似以下的錯誤:

若要修正此問題,請增加服務逾時值。如需詳細資訊,請參閱服務未啟動,且事件 7000 和 7011 已記錄在 Windows 事件記錄檔中

指標在哪裡?

如果 CloudWatch 代理程式一直在執行,但您無法在 AWS Management Console 或中找到其收集的指標 AWS CLI,請確認您使用的是正確的命名空間。根據預設,代理程式所收集指標的命名空間為 CWAgent。您可以使用代理程式組態檔案中 metrics 區段的 namespace 欄位來自訂此命名空間。如果看不到您預期的指標,請檢查組態檔案以確認所使用的命名空間。

當您第一次下載 CloudWatch 代理程式套件時,代理程式組態檔為amazon-cloudwatch-agent.json。此檔案位於您當初執行設定精靈的目錄,或者您可能已將它移到不同的目錄。如果您使用設定精靈,精靈輸出的代理程式組態檔案名為 config.json。如需有關組態檔案的詳細資訊,包括 namespace 欄位,請參閱 CloudWatch 代理程式組態檔:測量結果段

CloudWatch 代理程式需要很長時間才能在容器中執行,或記錄躍點限制錯誤

當您以容器服務的形式執行 CloudWatch 代理程式,並希望將 Amazon EC2 指標維度新增至代理程式收集的所有指標時,您可能會在代理程式的 v1.247354.0 版中看到下列錯誤:

2022-06-07T03:36:11Z E! [processors.ec2tagger] ec2tagger: Unable to retrieve Instance Metadata Tags. This plugin must only be used on an EC2 instance. 2022-06-07T03:36:11Z E! [processors.ec2tagger] ec2tagger: Please increase hop limit to 2 by following this document https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-options.html#configuring-IMDS-existing-instances. 2022-06-07T03:36:11Z E! [telegraf] Error running agent: could not initialize processor ec2tagger: EC2MetadataRequestError: failed to get EC2 instance identity document caused by: EC2MetadataError: failed to make EC2Metadata request status code: 401, request id: caused by:

如果代理程式試圖在沒有適當跳轉限制的情況下從容器內的 IMDSv2 取得中繼資料,您可能會看到此錯誤。在比 v1.247354.0 更早的代理程式版本中,您可能會遇見此問題但看不到此日誌訊息。

若要解決此問題,請依照設定執行個體中繼資料選項中的指示將跳轉限制增加至 2。

我已更新代理程式設定,但在 CloudWatch 主控台中看不到新的指標或記錄

如果您更新 CloudWatch 代理程式組態檔,下次啟動代理程式時,您必須使用此選fetch-config項。例如,如果您將更新的檔案存放在本機電腦上,請輸入下列命令:

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -s -m ec2 -c file:configuration-file-path

CloudWatch 代理程式檔案和位置

下表列出 CloudWatch 代理程式所安裝並搭配使用的檔案,以及它們在執行 Linux 或 Windows Server 的伺服器上的位置。

檔案 Linux 位置 Windows Server 位置

控制啟動、停用和重新啟動代理程式的控制指令碼。

/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl/usr/bin/amazon-cloudwatch-agent-ctl

$Env:ProgramFiles\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1

代理程式寫入的日誌檔。您可能需要在聯繫時附加此信息 AWS Support。

/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log/var/log/amazon/amazon-cloudwatch-agent/amazon-cloudwatch-agent.log

$Env:ProgramData\Amazon\AmazonCloudWatchAgent\Logs\amazon-cloudwatch-agent.log

代理程式組態驗證檔案。

/opt/aws/amazon-cloudwatch-agent/logs/configuration-validation.log/var/log/amazon/amazon-cloudwatch-agent/configuration-validation.log

$Env:ProgramData\Amazon\AmazonCloudWatchAgent\Logs\configuration-validation.log

在精靈建立它後用於立即設定代理程式的 JSON 檔案。如需詳細資訊,請參閱 建立 CloudWatch 代理程式組態檔

/opt/aws/amazon-cloudwatch-agent/bin/config.json

$Env:ProgramFiles\Amazon\AmazonCloudWatchAgent\config.json

若此組態檔案已從參數存放區下載,則為用於設定代理程式的 JSON 檔案。

/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json/etc/amazon/amazon-cloudwatch-agent/amazon-cloudwatch-agent.json

$Env:ProgramData\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent.json

TOML 檔案,用於指定代理程式使用的區域和登入資料資訊,將會覆寫系統預設值。

/opt/aws/amazon-cloudwatch-agent/etc/common-config.toml/etc/amazon/amazon-cloudwatch-agent/common-config.toml

$Env:ProgramData\Amazon\AmazonCloudWatchAgent\common-config.toml

包含轉換後的 JSON 組態檔案內容的 TOML 檔案。amazon-cloudwatch-agent-ctl 指令碼會產生此檔案。使用者不應直接修改此檔案。這對於驗證 JSON 到 TOML 的轉換是否成功非常有用。

/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.toml/etc/amazon/amazon-cloudwatch-agent/amazon-cloudwatch-agent.toml

$Env:ProgramData\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent.toml

包含轉換後的 JSON 組態檔案內容的 YAML 檔案。amazon-cloudwatch-agent-ctl 指令碼會產生此檔案。不應直接修改此檔案。此檔案對於驗證 JSON 到 TOML 的轉換是否成功非常有用。

/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.yaml or /etc/amazon/amazon-cloudwatch-agent/amazon-cloudwatch-agent.yaml

$Env:ProgramData\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent.yaml

尋找 CloudWatch 代理程式版本的資訊

若要尋找 Linux 伺服器上 CloudWatch 代理程式的版本號碼,請輸入下列命令:

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a status

若要尋找 Windows 伺服器上 CloudWatch 代理程式的版本號碼,請輸入下列命令:

& $Env:ProgramFiles\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1 -m ec2 -a status
注意

使用此命令是尋找 CloudWatch 代理程式版本的正確方法。如果您使用控制面板中的程式和功能,您會看到不正確的版本編號。

您也可以下載有關代理程式最新變更的 README 檔案,以及指出目前可供下載之版本編號的檔案。這些檔案位於下列位置:

  • https://amazoncloudwatch-agent.s3.amazonaws.com/info/latest/RELEASE_NOTEShttps://amazoncloudwatch-agent-region.s3.region.amazonaws.com/info/latest/RELEASE_NOTES

  • https://amazoncloudwatch-agent.s3.amazonaws.com/info/latest/CWAGENT_VERSIONhttps://amazoncloudwatch-agent-region.s3.region.amazonaws.com/info/latest/CWAGENT_VERSION

CloudWatch代理程式產生的記錄檔

代理程式會在執行時產生日誌。此日誌包含故障診斷資訊。此日誌是 amazon-cloudwatch-agent.log 檔案。此檔案在 Linux 伺服器上位於 /opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log,在執行 Windows Server 的伺服器上則位於 $Env:ProgramData\Amazon\AmazonCloudWatchAgent\Logs\amazon-cloudwatch-agent.log

您可以設定代理程式在 amazon-cloudwatch-agent.log 檔案中記錄其他詳細資訊。在代理程式組態檔的agent區段中,將debug欄位設定為true,然後重新設定並重新啟動 CloudWatch 代理程式。若要停用此額外資訊的記錄,請將 debug 欄位設為 false。然後,重新設定並重新啟動代理程式。如需詳細資訊,請參閱 手動建立或編輯 CloudWatch 代理程式組態檔

在代理程式版本 1.247350.0 及更新版本中,您可以選擇性地將 CloudWatch 代理程式組態檔agent區段中的aws_sdk_log_level欄位設定為下列一或多個選項。如有多個選項,請使用 | 字元進行分隔。

  • LogDebug

  • LogDebugWithSigning

  • LogDebugWithHTTPBody

  • LogDebugRequestRetries

  • LogDebugWithEventStreamBody

如需這些選項的更多資訊,請參閱LogLevelType

停止並重新啟動 CloudWatch 代理程式

您可以使用 AWS Systems Manager 或命令列手動停止 CloudWatch 代理程式。

使用執行命令停止 CloudWatch 代理程式
  1. 開啟 Systems Manager 主控台,網址為 https://console.aws.amazon.com/systems-manager/

  2. 在導覽窗格中,選擇 執行命令

    -或-

    如果 AWS Systems Manager 首頁開啟,請向下捲動並選擇「瀏覽執行命令」。

  3. 選擇 執行命令

  4. 在「命令」文件清單中,選擇 AmazonCloudWatch-ManageAgent

  5. 在 [目標] 區域中,選擇您安裝 CloudWatch 代理程式的執行個體。

  6. Action (動作) 清單中,選擇 stop (停止)

  7. Optional Configuration Source (選用組態來源)Optional Configuration Location (選用組態位置) 維持空白。

  8. 選擇執行

使用命令列在本機停止 CloudWatch 代理程式
  • 在 Linux 伺服器上,輸入以下資訊:

    sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a stop

    在執行 Windows 伺服器的伺服器上,以系統管理員身分輸入下列內 PowerShell 容:

    & $Env:ProgramFiles\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1 -m ec2 -a stop

若要重新啟動代理程式,請按照 啟動 CloudWatch 代理程式 中的說明操作。