Amazon Linux 2023 快速部署 CloudWatch Agent 监控内存和文件系统使用率脚本

一、配置本机使用的IAM Role

创建一个IAM Role,绑定2个IAM Policy,分别选中AWS managed Policy即系统内置的AmazonSSMManagedInstanceCore用于Session Manager,然后选择CloudWatch上传日志的Policy叫做CloudWatchAgentAdminPolicy

将这个IAM Role绑定到EC2上。绑定后需要一段时间才可以生效。如果不想等待这段时间,可以重启EC2则立刻生效。如果您不掌握如何创建EC2使用的IAM Role,当前EC2也没有使用IAM Role,那么请参考本篇创建IAM Role并绑定到EC2。

二、部署并配置

如果是新创建EC2,则在创建过程中选择高级,然后为EC2绑定上文创建的IAM Role,并在Userdata位置输入如下脚本:

#! /bin/bash
yum update -y
yum install amazon-cloudwatch-agent -y
curl -O /opt/aws/amazon-cloudwatch-agent/bin/config.json https://blogimg.bitipcman.com/workshop/cloudwatch/config1.json
/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json

配置完成。无须手工设置开机自动启动,因为CloudWatch Agent已经将随机启动配置到/etc/init/amazon-cloudwatch-agent.conf,因此重启EC2时候,CloudWatch Agent将会自动启动。

三、验证工作正常

运行如下命令查看是否运行成功:

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

返回如下结果表示正常。

{
  "status": "running",
  "starttime": "2023-07-26T15:11:42+00:00",
  "configstatus": "configured",
  "version": "1.247358.0"
}

现在进入CloudWatch,点击左侧的Metrics指标菜单,点击All metrics全部指标,从右侧Browse浏览标签页中找到Custom namespaces自定义命名空间,从其中可看到如下:

  • CWAgent下可找到device, fstype, host, path,在其中deivcenvme0n1p1path/Metric name名称叫做disk_used_percent的数据,就是文件系统使用率
  • host下可找到Metric name名称为mem_used_percent的数据,这一项就是内存使用率

至此配置监控完成。如下截图。

四、生成配置文件的参考(可选)

注:不需要修改监控项的话本章节可跳过。

1、启动配置向导重新生成配置文件

执行如下命令启动配置向导:

/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard

2、自动生成的配置文件

{
        "agent": {
                "metrics_collection_interval": 60,
                "run_as_user": "cwagent"
        },
        "metrics": {
                "aggregation_dimensions": [
                        [
                                "InstanceId"
                        ]
                ],
                "metrics_collected": {
                        "disk": {
                                "measurement": [
                                        "used_percent"
                                ],
                                "metrics_collection_interval": 60,
                                "resources": [
                                        "*"
                                ]
                        },
                        "mem": {
                                "measurement": [
                                        "mem_used_percent"
                                ],
                                "metrics_collection_interval": 60
                        }
                }
        }
}

五、参考文档

运行 CloudWatch 代理配置向导

https://docs.aws.amazon.com/zh_cn/AmazonCloudWatch/latest/monitoring/create-cloudwatch-agent-configuration-file-wizard.html

使用命令行启动 CloudWatch 代理

https://docs.aws.amazon.com/zh_cn/AmazonCloudWatch/latest/monitoring/install-CloudWatch-Agent-commandline-fleet.html#start-CloudWatch-Agent-EC2-commands-fleet