Amazon CloudWatch
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

CloudWatch 代理故障排除

可以使用以下信息帮助解决 CloudWatch 代理问题。

CloudWatch 代理命令行参数

要查看 CloudWatch 代理支持的参数的完整列表,请在安装了此代理的计算机上的命令行处键入以下命令:

amazon-cloudwatch-agent-ctl -help

使用 Run Command 安装 CloudWatch 代理失败

要使用 Systems Manager Run Command 安装 CloudWatch 代理,目标服务器上的 SSM Agent 必须为 2.2.93.0 或更高版本。如果 SSM Agent 不是正确的版本,您可能会看到以下错误消息:

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

有关更新 SSM Agent 版本的信息,请参阅安装和配置 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 远程执行此操作。也可以使用命令行,但仅用于检查本地服务器。

使用 Run Command 查询 CloudWatch 代理的状态

  1. Open the Systems Manager console at https://console.amazonaws.cn/systems-manager/.

  2. In the navigation pane, choose Run Command.

    -or-

    If the AWS Systems Manager home page opens, scroll down and choose Explore Run Command.

  3. 选择运行命令

  4. 命令文档列表中,选择 AmazonCloudWatch-ManageAgent

  5. 目标区域,选择要检查的实例。

  6. 操作列表中,选择状态

  7. 可选的配置源可选的配置位置保留空白。

  8. 选择 Run

如果该代理正在运行,输出将类似于以下内容:

{ "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 Server 的服务器上,以管理员身份在 PowerShell 中键入以下命令:

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

指标存储在何处?

如果 CloudWatch 代理已运行,但在 AWS 管理控制台 或 AWS CLI 中找不到收集的指标,请确认使用的是正确的命名空间。默认情况下,该代理收集的指标的命名空间为 CWAgent。您可以使用代理配置文件的 metrics 部分中的 namespace 字段自定义该命名空间。如果未看到所需的指标,请检查配置文件以确认正在使用该命名空间。

在首次下载 CloudWatch 代理软件包时,代理配置文件为 amazon-cloudwatch-agent.json。该文件位于运行配置向导的目录中,或者您可能已将其移到其他目录中。如果使用配置向导,该向导的代理配置文件输出命名为 config.json。有关配置文件 (包括 namespace 字段) 的更多信息,请参阅 CloudWatch 代理配置文件:Metrics 部分

代理未启动,并且错误中提及了 Amazon EC2 区域

如果代理将不会启动,并且错误消息中提及了 Amazon EC2 区域终端节点,则您可能已将代理配置为需要访问 Amazon EC2 终端节点但未授予该访问权限。

例如,如果您在代理配置文件中为 append_dimensions 参数指定一个值(取决于 Amazon EC2 元数据),并且使用代理,则必须确保服务器能够访问 Amazon EC2 的终端节点。有关这些终端节点的更多信息,请参阅 Amazon Web Services 一般参考 中的 Amazon Elastic Compute Cloud (Amazon EC2)

CloudWatch 代理文件和位置

下表列出了 CloudWatch 代理安装和使用的文件及其在运行 Linux 或 Windows Server 的服务器上的位置。

File Linux 位置 Windows Server 位置

控制代理的启动、停止和重新启动的控制脚本。

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

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

代理写入的日志文件。联系客户支持时,您可能需要附上此文件。

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

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

代理配置验证文件。

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

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

在向导创建后立即用于配置代理的 JSON 文件。有关更多信息,请参阅创建 CloudWatch 代理配置文件

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

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

此 JSON 文件用于配置代理(如果此配置文件已从 Parameter Store 中下载)。

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

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

用于指定代理使用的区域和凭证信息的 TOML 文件 (覆盖系统默认值)。

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

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

在启动 CloudWatch 代理时从 JSON 配置文件生成的 TOML 文件。

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

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

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 代理配置文件

停止和重新启动 CloudWatch 代理

您可以使用 AWS Systems Manager 或命令行手动停止 CloudWatch 代理。在手动停止该代理时,您还可以禁止在系统重启时自动启动该代理。

使用 Run Command 停止 CloudWatch 代理

  1. Open the Systems Manager console at https://console.amazonaws.cn/systems-manager/.

  2. In the navigation pane, choose Run Command.

    -or-

    If the AWS Systems Manager home page opens, scroll down and choose Explore Run Command.

  3. 选择运行命令

  4. 命令文档列表中,选择 AmazonCloudWatch-ManageAgent

  5. 目标区域中,选择安装了 CloudWatch 代理的实例。

  6. 操作列表中,选择停止

  7. 可选的配置源可选的配置位置保留空白。

  8. 选择 Run

使用命令行在本地停止 CloudWatch 代理

  • 在 Linux 服务器上,键入以下命令:

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

    在运行 Windows Server 的服务器上,以管理员身份在 PowerShell 中键入以下命令:

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

要重新启动该代理,请按照启动 CloudWatch 代理中的说明进行操作。

在系统启动时启动 CloudWatch 代理

在 Linux 和 Windows Server 上,CloudWatch 代理安装脚本将该代理注册为一个系统服务。该服务配置为在您的实例或服务器引导时启动 (如果该代理在重启之前正在运行)。CloudWatch 代理必需预先正确配置才能正确启动。如果准备 AMI 或虚拟机映像以在新启动的 Amazon EC2 实例或本地服务器上启动 CloudWatch 代理(包括 Amazon EC2 Auto Scaling 和 Spot 队列启动的实例),请确保在 AMI 中包含 amazon-cloudwatch-agent.tomlcommon-config.toml 文件。在 Linux 服务器上,这些文件位于 /opt/aws/amazon-cloudwatch-agent/etc/ 中;在运行 Windows Server 的服务器上,这些文件位于 $Env:ProgramData\Amazon\AmazonCloudWatchAgent\ 中。

如果您的实例启动并且这些文件不存在,则 CloudWatch 代理将无法正确启动。