跳至内容

如何配置无法访问互联网的 EC2 Auto Scaling 组中的实例,以便向 CloudWatch 发送指标和日志?

2 分钟阅读
0

我在无法访问互联网的 Amazon EC2 Auto Scaling 组中有一个 Amazon Elastic Compute Cloud (Amazon EC2) 实例。我希望 Amazon EC2 实例向 Amazon CloudWatch 发送日志和指标。

解决方法

要在 EC2 Auto Scaling 组中配置 EC2 实例以向 CloudWatch 发送指标和日志,请执行以下操作。

安装 CloudWatch 代理

在具有互联网连接的实例上安装 CloudWatch 代理。或者,使用已经通过 CloudWatch 代理向 CloudWatch 发送日志和指标的现有实例。

**注意:**将 Auto Scaling 组名称作为维度添加到 CloudWatch 代理配置中。代理从实例标签和其他元数据(例如 ImageIdInstanceIdInstanceType)中检索此名称。

然后,验证 CloudWatch 代理是否成功向 CloudWatch 发送指标和日志。

为 EC2 Auto Scaling 组创建启动模板

为 EC2 Auto Scaling 组创建启动模板

选择 Advanced Details(高级详细信息)。然后,选择 IAM instance profile(IAM 实例配置文件)和 User data(用户数据)。对于 User data(用户数据),输入脚本,根据您配置的 JSON 安装和配置 CloudWatch 代理。对于 IAM instance profile(IMA 实例配置文件),选择允许 EC2 实例向 CloudWatch 发送指标和日志的 AWS Identity and Access Management (IAM) 角色。有关这些高级设置的信息,请参阅高级设置

实例上的用户数据脚本示例:

#!/bin/bashcd /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": [
          "disk_used_percent"
        ],
        "resources": [
          "*"
        ]
      },
      "mem": {
        "measurement": [
          "mem_used_percent"
        ]
      }
    }
  }
}
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

**注意:**请将 REGION 替换为您的 AWS 区域。要在 config.json 文件中对特殊字符进行转义,请使用反斜杠 (\)。该脚本将 CloudWatch 代理配置为监控内存和磁盘利用率,然后启动该代理。请务必使用您的 EC2 Auto Scaling 组所在区域的下载链接

创建指标和日志的 VPC 端点

为托管私有子网的 VPC 创建 CloudWatch 指标和Amazon CloudWatch Logs 的接口虚拟私有云 (VPC) 端点。然后,使用自定义策略更新您的端点策略,以允许执行所需的 CloudWatch 操作。有关服务端点的信息,请参阅 Amazon CloudWatch 端点和配额

**注意:**确保使用与您的 EC2 Auto Scaling 组的区域相对应的端点。例如,如果您的 EC2 Auto Scaling 组位于 eu-west-2 区域,请对指标使用 monitoring.eu-west-2.amazonaws.com,对日志使用 logs.eu-west-2.amazonaws.com

CloudWatch VPC 端点策略示例:

{  "Statement": [
    {
      "Sid": "PutOnly",
      "Principal": "*",
      "Action": [
        "cloudwatch:PutMetricData"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}

CloudWatch Logs VPC 端点策略示例:

{  "Statement": [
    {
      "Sid": "PutOnly",
      "Principal": "*",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}

然后,为托管您的私有子网的 VPC 创建 Amazon Simple Storage Service (Amazon S3) 的 VPC 网关端点。此端点允许私有子网中的实例下载 CloudWatch 代理包。

创建 EC2 Auto Scaling 组

使用您创建的启动模板创建激活私有子网的 EC2 Auto Scaling 组

AWS 官方已更新 7 个月前