使用 AWS CloudFormation 在新实例上安装 CloudWatch 代理
本节介绍如何使用 AWS CloudFormation 在新的 Amazon EC2 实例上安装 CloudWatch 代理。
注意
Amazon 已将若干 AWS CloudFormation 模板上传到 GitHub,可帮助您在新的 Amazon EC2 实例上安装和更新 CloudWatch 代理。有关使用 AWS CloudFormation 的更多信息,请参阅什么是 AWS CloudFormation?。
模板位置为 Deploy the Amazon CloudWatch agent to EC2 instances using AWS CloudFormation(使用 Amazon CloudFormation 将 Amazon CloudWatch 代理部署到 EC2 实例)inline
又包括 ssm
目录。其中每个目录包含同时适用于 Linux 和 Windows 实例的模板。
-
inline
目录中的模板已将 CloudWatch 代理配置嵌入到 AWS CloudFormation 模板中。默认情况下,Linux 模板收集指标mem_used_percent
和swap_used_percent
,Windows 模板收集Memory % Committed Bytes In Use
和Paging 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 代理
-
从 GitHub 下载模板。在本教程中,下载 Amazon Linux 2 的内联模板,如下所示:
curl -O https://raw.githubusercontent.com/aws-cloudformation/aws-cloudformation-templates/main/Solutions/AmazonCloudWatchAgent/inline/amazon_linux.yaml
打开 AWS CloudFormation 控制台,地址:https://console.aws.amazon.com/cloudformation
。 -
选择创建堆栈。
-
对于选择一个模板,选择将模板上传到 Amazon S3,选择下载的模板,然后选择下一步。
-
在 Specify Details (指定详细信息) 页面上,填写以下参数,然后选择 Next (下一步):
-
堆栈名称:为 AWS CloudFormation 堆栈选择堆栈名称。
-
IAMRole:选择一个 IAM 角色,该角色有权写入 CloudWatch 指标、日志和跟踪信息。有关更多信息,请参阅 在 Amazon EC2 实例上创建要与 CloudWatch 代理一起使用的 IAM 角色。
-
InstanceAMI:选择在您将要启动堆栈的区域中有效的 AMI。
-
InstanceType:选择有效的实例类型。
-
KeyName:要对新实例启用 SSH 访问,请选择一个现有 Amazon EC2 密钥对。如果还没有 Amazon EC2 密钥对,可以在 AWS Management Console 中创建一个。有关更多信息,请参阅《Amazon EC2 用户指南》中的 Amazon EC2 密钥对。
-
SSHLocation:指定可用于通过 SSH 连接到实例的 IP 地址范围。默认情况下,允许从任何 IP 地址进行访问。
-
-
在 Options (选项) 页面上,您可以选择为堆栈资源添加标签。选择下一步。
-
在 Review(审核)页面上,审核您的信息,确认堆栈可创建 IAM 资源,然后选择 Create(创建)。
如果您刷新控制台,您将看到新堆栈具有
CREATE_IN_PROGRESS
状态。 -
创建实例时,您可以在 Amazon EC2 控制台中看到它。(可选)您可以连接到主机并检查进度。
使用以下命令确认代理已安装:
rpm -qa amazon-cloudwatch-agent
使用以下命令确认代理正在运行:
ps aux | grep amazon-cloudwatch-agent
以下过程演示如何使用 AWS CloudFormation 通过内联模板更新 CloudWatch 代理。默认内联模板收集 mem_used_percent
指标。在本教程中,您将更改代理配置以停止收集该指标。
使用 AWS CloudFormation 更新 CloudWatch 代理
-
在上一个过程中下载的模板中,删除以下行,然后保存该模板:
"mem": { "measurement": [ "mem_used_percent" ] },
打开 AWS CloudFormation 控制台,地址:https://console.aws.amazon.com/cloudformation
。 -
在 AWS CloudFormation 控制面板中,选择您创建的堆栈,然后选择 Update Stack (更新堆栈)。
-
对于选择模板,选择将模板上传到 Amazon S3,选择修改的模板,然后选择下一步。
-
在 Options (选项) 页面上,选择 Next (下一步),然后选择 Next (下一步)。
-
在审核页面上,审核您的信息,然后选择更新。
经过一段时间后,您会看到
UPDATE_COMPLETE
。
教程:使用 AWS CloudFormation 和 Parameter Store 安装 CloudWatch
本教程将演练如何使用 AWS CloudFormation 在新的 Amazon EC2 实例上安装 CloudWatch 代理。本教程使用您在 Parameter Store 中创建并保存的代理配置文件,在运行 Amazon Linux 2 的新实例上进行安装。
在介绍安装代理的过程之后,该教程继续说明如何更新代理。
使用 Parameter Store 中的配置通过 AWS CloudFormation 在新实例上安装 CloudWatch 代理
-
如果您尚未执行此操作,请将 CloudWatch 代理软件包下载到您的某台电脑上,以便您可以创建代理配置文件。有关使用 Parameter Store 下载代理的更多信息,请参阅 使用 SSM 下载、配置和运行 CloudWatch 代理。有关使用命令行下载软件包的更多信息,请参阅使用命令行下载和配置 CloudWatch 代理。
-
创建代理配置文件并将其保存在 Parameter Store 中。有关更多信息,请参阅 创建 CloudWatch 代理配置文件。
-
从 GitHub 下载模板,如下所示:
curl -O https://raw.githubusercontent.com/awslabs/aws-cloudformation-templates/master/aws/solutions/AmazonCloudWatchAgent/ssm/amazon_linux.template
打开 AWS CloudFormation 控制台,地址:https://console.aws.amazon.com/cloudformation
。 -
选择创建堆栈。
-
对于选择一个模板,选择将模板上传到 Amazon S3,选择您下载的模板,然后选择下一步。
-
在 Specify Details (指定详细信息) 页面上,相应填写以下参数,然后选择 Next (下一步):
-
堆栈名称:为 AWS CloudFormation 堆栈选择堆栈名称。
-
IAMRole:选择一个 IAM 角色,该角色有权写入 CloudWatch 指标、日志和跟踪信息。有关更多信息,请参阅 在 Amazon EC2 实例上创建要与 CloudWatch 代理一起使用的 IAM 角色。
-
InstanceAMI:选择在您将要启动堆栈的区域中有效的 AMI。
-
InstanceType:选择有效的实例类型。
-
KeyName:要对新实例启用 SSH 访问,请选择一个现有 Amazon EC2 密钥对。如果还没有 Amazon EC2 密钥对,可以在 AWS Management Console 中创建一个。有关更多信息,请参阅《Amazon EC2 用户指南》中的 Amazon EC2 密钥对。
-
SSHLocation:指定可用于通过 SSH 连接到实例的 IP 地址范围。默认情况下,允许从任何 IP 地址进行访问。
-
SSMKey:指定在 Parameter Store 中创建并保存的代理配置文件。
-
-
在 Options (选项) 页面上,您可以选择为堆栈资源添加标签。选择下一步。
-
在 Review(审核)页面上,审核您的信息,确认堆栈可创建 IAM 资源,然后选择 Create(创建)。
如果您刷新控制台,您将看到新堆栈具有
CREATE_IN_PROGRESS
状态。 -
创建实例时,您可以在 Amazon EC2 控制台中看到它。(可选)您可以连接到主机并检查进度。
使用以下命令确认代理已安装:
rpm -qa amazon-cloudwatch-agent
使用以下命令确认代理正在运行:
ps aux | grep amazon-cloudwatch-agent
以下过程演示如何使用 AWS CloudFormation,通过您在 Parameter Store 中保存的代理配置更新 CloudWatch 代理。
通过 AWS CloudFormation 使用 Parameter Store 中的配置更新 CloudWatch 代理
-
将存储在 Parameter Store 中的代理配置文件更改为所需的新配置。
-
在您于教程:使用 AWS CloudFormation 和 Parameter Store 安装 CloudWatch主题中下载的 AWS CloudFormation 模板中更改版本号。例如,您可能将
VERSION=1.0
更改为VERSION=2.0
。 打开 AWS CloudFormation 控制台,地址:https://console.aws.amazon.com/cloudformation
。 -
在 AWS CloudFormation 控制面板中,选择您创建的堆栈,然后选择 Update Stack (更新堆栈)。
-
对于选择模板,选择将模板上传到 Amazon S3,选择您刚刚修改的模板,然后选择下一步。
-
在 Options (选项) 页面上,选择 Next (下一步),然后选择 Next (下一步)。
-
在审核页面上,审核您的信息,然后选择更新。
经过一段时间后,您会看到
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 代理文件和位置。