Amazon CloudWatch
用户指南

使用 AWS CloudFormation 安装 CloudWatch 代理

Amazon 已将若干 AWS CloudFormation 模板上传到 GitHub,以帮助您安装和更新 CloudWatch 代理。有关使用 AWS CloudFormation 的更多信息,请参阅什么是 AWS CloudFormation?

模板位置为使用 AWS CloudFormation 将 Amazon CloudWatch 代理部署到 EC2 实例。此位置既包括 inline 又包括 ssm 目录。其中每个目录包含同时适用于 Linux 和 Windows 实例的模板。

  • inline 目录中的模板已将 CloudWatch 代理配置嵌入到 AWS CloudFormation 模板中。默认情况下,Linux 模板收集指标 mem_used_percentswap_used_percent,Windows 模板收集 Memory % Committed Bytes In UsePaging File % Usage

    要修改这些模板以收集不同的指标,请修改模板的以下部分。下面的示例来自 Linux 服务器的模板。按照代理配置文件的格式和语法来进行这些更改。有关更多信息,请参阅 手动创建或编辑 CloudWatch 代理配置文件

    { "metrics":{ "append_dimensions":{ "AutoScalingGroupName":"${!aws:AutoScalingGroupName}", "ImageId":"${!aws:ImageId}", "InstanceId":"${!aws:InstanceId}", "InstanceType":"${!aws:InstanceType}" }, "metrics_collected":{ "mem":{ "measurement":[ "mem_used_percent" ] }, "swap":{ "measurement":[ "swap_used_percent" ] } } } }

    注意

    在内联模板中,所有占位符变量必须具有感叹号 (!),然后才能将它们作为一个转义字符。您可以在示例模板中看到此内容。如果您添加其他占位符变量,请务必在名称前添加一个感叹号。

  • ssm 目录中的模板从 Parameter Store 加载代理配置文件。要使用这些模板,您必须先创建配置文件并将其上传到 Parameter Store。然后,您可以提供模板中的文件的 Parameter Store 名称。您可以手动或使用向导来创建配置文件。有关更多信息,请参阅创建 CloudWatch 代理配置文件

您可以使用这两种类型的模板安装 CloudWatch 代理和更新代理配置。

教程:使用 AWS CloudFormation 内联模板安装和配置 CloudWatch 代理

本教程将演练如何使用 AWS CloudFormation 在新的 Amazon EC2 实例上安装 CloudWatch 代理。本教程使用内联模板在运行 Amazon Linux 2 的新实例上进行安装,这不要求使用 JSON 配置文件或 Parameter Store。内联模板在模板中包含代理配置。在本教程中,您将使用模板中包含的默认代理配置。

在介绍安装代理的过程之后,该教程继续说明如何更新代理。

使用 AWS CloudFormation 在新实例上安装 CloudWatch 代理

  1. 从 GitHub 下载模板。在本教程中,下载 Amazon Linux 2 的内联模板,如下所示:

    curl -O https://raw.githubusercontent.com/awslabs/aws-cloudformation-templates/master/aws/solutions/AmazonCloudWatchAgent/inline/amazon_linux.template
  2. 通过以下网址打开 AWS CloudFormation 控制台:https://console.aws.amazon.com/cloudformation

  3. 选择创建堆栈

  4. 对于选择一个模板,选择将模板上传到 Amazon S3,选择下载的模板,然后选择下一步

  5. Specify Details (指定详细信息) 页面上,填写以下参数,然后选择 Next (下一步)

    • 堆栈名称:为 AWS CloudFormation 堆栈选择堆栈名称。

    • IAMRole:选择一个 IAM 角色,该角色有权写入 CloudWatch 指标和日志。有关更多信息,请参阅 在 Amazon EC2 实例上创建用于 CloudWatch 代理的 IAM 角色

    • InstanceAMI:选择在您将要启动堆栈的区域中有效的 AMI。

    • InstanceType:选择有效的实例类型。

    • KeyName:要对新实例启用 SSH 访问,请选择一个现有 Amazon EC2 密钥对。如果还没有 Amazon EC2 密钥对,可以在 AWS 管理控制台中创建一个。有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的 Amazon EC2 密钥对

    • SSHLocation:指定可用于通过 SSH 连接到实例的 IP 地址范围。默认情况下,允许从任何 IP 地址进行访问。

  6. Options (选项) 页面上,您可以选择为堆栈资源添加标签。选择 Next

  7. 审核页面上,审核您的信息,确认堆栈可创建 IAM 资源,然后选择创建

    如果您刷新控制台,您将看到新堆栈具有 CREATE_IN_PROGRESS 状态。

  8. 创建实例时,您可以在 Amazon EC2 控制台中看到它。(可选)您可以连接到主机并检查进度。

    使用以下命令确认代理已安装:

    rpm -qa amazon-cloudwatch-agent

    使用以下命令确认代理正在运行:

    ps aux | grep amazon-cloudwatch-agent

以下过程演示使用 AWS CloudFormation 通过内联模板更新 CloudWatch 代理。默认内联模板收集 mem_used_percent 指标。在本教程中,您将更改代理配置以停止收集该指标。

使用 AWS CloudFormation 更新 CloudWatch 代理

  1. 在上一个过程中下载的模板中,删除以下行,然后保存该模板:

    "mem": { "measurement": [ "mem_used_percent" ] },
  2. 通过以下网址打开 AWS CloudFormation 控制台:https://console.aws.amazon.com/cloudformation

  3. 在 AWS CloudFormation 控制面板中,选择您创建的堆栈,然后选择 Update Stack (更新堆栈)

  4. 对于选择模板,选择将模板上传到 Amazon S3,选择修改的模板,然后选择下一步

  5. Options (选项) 页面上,选择 Next (下一步),然后选择 Next (下一步)

  6. 审核页面上,审核您的信息,然后选择更新

    经过一段时间后,您会看到 UPDATE_COMPLETE

教程:使用 AWS CloudFormation 和 Parameter Store 安装 CloudWatch 代理

本教程将演练如何使用 AWS CloudFormation 在新的 Amazon EC2 实例上安装 CloudWatch 代理。本教程使用您在 Parameter Store 中创建并保存的代理配置文件,在运行 Amazon Linux 2 的新实例上进行安装。

在介绍安装代理的过程之后,该教程继续说明如何更新代理。

使用 Parameter Store 中的配置通过 AWS CloudFormation 在新实例上安装 CloudWatch 代理

  1. 如果您尚未执行此操作,请将 CloudWatch 代理软件包下载到您的某台计算机上,以便您可以创建代理配置文件。有关使用 Parameter Store 下载代理的更多信息,请参阅下载和配置 CloudWatch 代理。有关使用命令行下载软件包的更多信息,请参阅使用命令行下载和配置 CloudWatch 代理

  2. 创建代理配置文件并将其保存在 Parameter Store 中。有关更多信息,请参阅创建 CloudWatch 代理配置文件

  3. 从 GitHub 下载模板,如下所示:

    curl -O https://raw.githubusercontent.com/awslabs/aws-cloudformation-templates/master/aws/solutions/AmazonCloudWatchAgent/ssm/amazon_linux.template
  4. 通过以下网址打开 AWS CloudFormation 控制台:https://console.aws.amazon.com/cloudformation

  5. 选择创建堆栈

  6. 对于选择一个模板,选择将模板上传到 Amazon S3,选择您下载的模板,然后选择下一步

  7. Specify Details (指定详细信息) 页面上,相应填写以下参数,然后选择 Next (下一步)

    • 堆栈名称:为 AWS CloudFormation 堆栈选择堆栈名称。

    • IAMRole:选择一个 IAM 角色,该角色有权写入 CloudWatch 指标和日志。有关更多信息,请参阅在 Amazon EC2 实例上创建用于 CloudWatch 代理的 IAM 角色

    • InstanceAMI:选择在您将要启动堆栈的区域中有效的 AMI。

    • InstanceType:选择有效的实例类型。

    • KeyName:要对新实例启用 SSH 访问,请选择一个现有 Amazon EC2 密钥对。如果还没有 Amazon EC2 密钥对,可以在 AWS 管理控制台中创建一个。有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的 Amazon EC2 密钥对

    • SSHLocation:指定可用于通过 SSH 连接到实例的 IP 地址范围。默认情况下,允许从任何 IP 地址进行访问。

    • SSMKey:指定在 Parameter Store 中创建并保存的代理配置文件。

  8. Options (选项) 页面上,您可以选择为堆栈资源添加标签。选择 Next

  9. 审核页面上,审核您的信息,确认堆栈可创建 IAM 资源,然后选择创建

    如果您刷新控制台,您将看到新堆栈具有 CREATE_IN_PROGRESS 状态。

  10. 创建实例时,您可以在 Amazon EC2 控制台中看到它。(可选)您可以连接到主机并检查进度。

    使用以下命令确认代理已安装:

    rpm -qa amazon-cloudwatch-agent

    使用以下命令确认代理正在运行:

    ps aux | grep amazon-cloudwatch-agent

以下过程演示如何使用 AWS CloudFormation,通过您在 Parameter Store 中保存的代理配置更新 CloudWatch 代理。

使用 AWS CloudFormation 通过 Parameter Store 中的配置更新 CloudWatch 代理

  1. 将存储在 Parameter Store 中的代理配置文件更改为所需的新配置。

  2. 在您于教程:使用 AWS CloudFormation 和 Parameter Store 安装 CloudWatch 代理主题中下载的 AWS CloudFormation 模板中更改版本号。例如,您可能将 VERSION=1.0 更改为 VERSION=2.0

  3. 通过以下网址打开 AWS CloudFormation 控制台:https://console.aws.amazon.com/cloudformation

  4. 在 AWS CloudFormation 控制面板中,选择您创建的堆栈,然后选择 Update Stack (更新堆栈)

  5. 对于选择模板,选择将模板上传到 Amazon S3,选择您刚刚修改的模板,然后选择下一步

  6. Options (选项) 页面上,选择 Next (下一步),然后选择 Next (下一步)

  7. 审核页面上,审核您的信息,然后选择更新

    经过一段时间后,您会看到 UPDATE_COMPLETE

通过 AWS CloudFormation 安装 CloudWatch 的问题排查

本节帮助您排查使用 AWS CloudFormation 安装和更新 CloudWatch 代理时出现的问题。

检测何时更新失败

如果您使用 AWS CloudFormation 更新您的 CloudWatch 代理配置并使用无效的配置,代理将停止向 CloudWatch 发送任何指标。检查代理配置更新是否成功的快速方法是查看 cfn-init-cmd.log 文件。在 Linux 服务器上,此文件位于 /var/log/cfn-init-cmd.log。在 Windows 实例上,此文件位于 C:\cfn\log\cfn-init-cmd.log

指标缺失

如果您在安装或更新代理后没有看到预期会看到的指标,请确认代理配置为收集该指标。要执行此操作,请检查 amazon-cloudwatch-agent.json 文件,以确保该指标已列出,并且检查您是否可以在正确的指标命名空间中看到它。有关更多信息,请参阅CloudWatch 代理文件和位置