上次更新时间:2020 年 11 月 9 日
如何在无互联网访问权限的 Amazon EC2 Auto Scaling 组中配置 Amazon Elastic Compute Cloud (Amazon EC2) 实例以将指标和日志发送到 Amazon CloudWatch?
解决方案-
在 Amazon EC2 实例上安装 CloudWatch 代理。此实例必须具有互联网连接。或者,您可以选择一个已使用 CloudWatch 代理将日志和指标推送到 CloudWatch 的 Amazon EC2 实例。
验证 CloudWatch 代理是否正在从 Amazon EC2 实例推送指标和日志。
为 Auto Scaling 组创建启动模板。要让实例将指标和日志推送到 CloudWatch,请在启动模板中提供正确的 AWS Identity and Access Management (IAM) 角色。在高级设置中,使用类似于以下内容的脚本定义用户数据。使用此脚本的自定义版本根据第 1 步中的 JSON 配置安装和配置 CloudWatch 代理。
注意:此示例用户数据脚本将 CloudWatch 代理安装在 Amazon EC2 Linux 实例中。该脚本用于配置代理,以监控内存和磁盘使用率,然后启动代理。您必须使用 Auto Scaling 组的特定区域的下载链接。
#!/bin/bash
cd /tmp
wget https://s3.<region>.amazonaws.com/amazoncloudwatch-agent-<region>/amazon_linux/amd64/latest/amazon-cloudwatch-agent.rpm
rpm -U ./amazon-cloudwatch-agent.rpm
cat << EOF > /opt/aws/amazon-cloudwatch-agent/bin/config.json
{
"agent": {
"metrics_collection_interval": 60
},
"metrics": {
"append_dimensions": {
"InstanceId": "\${aws:InstanceId}"
},
"metrics_collected": {
"disk": {
"measurement": ,
"resources":
},
"mem": {
"measurement":
}
}
}
}
EOF
/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json -s
为托管私有子网的 VPC 添加 Virtual Private Cloud (VPC) 接口终端节点(用于 CloudWatch 监控和 CloudWatch Logs)。要查找正确的终端节点,请参阅 Amazon CloudWatch 终端节点和配额。要仅允许在这些 VPC 终端节点中执行所需的 CloudWatch 操作,请使用自定义策略更新终端节点策略。CloudWatch 监控 VPC 终端节点的策略示例:
{
"Statement": ,
"Effect": "Allow",
"Resource": "*"
}
]
}
CloudWatch Logs VPC 终端节点的策略示例:
{
"Statement": ,
"Effect": "Allow",
"Resource": "*"
}
]
}
有关更多详细信息,请参阅后面的“创建 VPC 接口终端节点的注意事项”。
将 Amazon S3 的 Virtual Private Cloud (VPC) 网关终端节点添加到托管私有子网的 VPC 中。此终端节点允许私有子网中的实例用户数据脚本从 Amazon S3 访问和下载 CloudWatch 代理程序包。 使用您在第 3 步中创建的启动模板来创建 Auto Scaling 组(启用私有子网)。CloudWatch 代理将在此 Auto Scaling 组中启动的实例内运行。该代理还通过您在第 4 步中创建的 VPC 接口终端节点来发送指标和日志。 创建 VPC 接口终端节点的注意事项 请务必使用与 Auto Scaling 组所在的 AWS 区域对应的终端节点。例如,如果 Auto Scaling 组位于伦敦区域,则指标的终端节点为 monitoring.eu-west-2.amazonaws.com。在这种情况下,日志的终端节点为 logs.eu-west-2.amazonaws.com。 确认已启用启用私有 DNS 名称选项。仅当 VPC 的启用 DNS 主机名和启用 DNS 支持属性设置为 true 时,才能启用此选项。如果禁用该选项,则 VPC 接口终端节点不会映射到服务终端节点。因此,实例将无法访问公共服务终端节点。启用此选项会将服务终端节点映射到 VPC 接口终端节点,并使其与服务终端节点的通信变为专用通信。默认情况下,CloudWatch 代理将连接到此终端节点。如果需要,您可以使用代理配置文件中的 endpoint_override 参数覆盖默认终端节点。 确认安全组规则允许终端节点网络接口与 VPC 中负责与服务通信的资源进行通信。用于推送日志和指标的 API 调用是基于 HTTPS 的 GET/POST 请求。终端节点网络接口安全组需要来自源 IP 的 HTTPS 协议的入站规则。源 IP 地址是负责推送指标和日志的 EC2 实例或 VPC CIDR 的 IP 地址。 如果实例属于 Auto Scaling 组,请在代理配置文件中将其中一个维度指定为 Auto Scaling 组名称。为了查找 Auto Scaling 组的名称,代理会从 Amazon EC2 终端节点获取与实例关联的标签。您必须为 Amazon EC2 服务添加 VPC 接口终端节点。代理将从 Amazon EC2 实例的元数据中获取 ImageId、InstanceId 和 InstanceType 值。 </ul