背景介绍

AWS的Cloudwatch 可以很方便的监控各种数据,但是他的缺陷在于默认情况下他只能监控Hypervisor 的数据,而不会监控客户端OS级别的数据。传统的解决方式,比如我们需要监控内存,硬盘使用状况,或者其他自定义的数据,我们需要自己写个脚本,发送到对应的Cloudwatch API。这种方式相对而言,不算太友好,AWS提供了一个官方的解决方案,叫做Cloudwatch agent(https://docs.aws.amazon.com/zh_cn/AmazonCloudWatch/latest/monitoring/install-CloudWatch-Agent-on-EC2-Instance.html) ,安装之后,使用向导生成对应的配置文件,就可以实现手写脚本的功能了。

操作步骤

配置IAM Role

下面看看如何实现的。豆子所有的部署都是通过SSM实现的,这样不需要一台台的手动去配置。因此第一步需要配置IAM Role,确保EC2实例可以访问SSM。 具体步骤参考 https://blog.51cto.com/beanxyz/2316695

除此之外,我们还需要权限安装 CloudwatchAgent,以及权限访问 SSM的 Parameter Store; 后者是为了把配置文件写入Parameter Store, 这样统一推送的时候可以直接指定这个文件进行配置。

AWS CloudWatch Agent 的配置和使用_第1张图片

配置好IAM Role的 权限之后,记得分配给EC2实例。

安装CloudWatchAgent

然后回到SSM,在Managed Instances 里面 确保所有的EC2 实例都安装了最新的SSM Agent,如果没有,可以点击 Agent auto update 进行升级

AWS CloudWatch Agent 的配置和使用_第2张图片

在Run Command 执行下列操作,统一安装 CloudWatchAgent

AWS CloudWatch Agent 的配置和使用_第3张图片

输入安装的Name和Version

AWS CloudWatch Agent 的配置和使用_第4张图片

等待1分钟之后就成功下载安装了

AWS CloudWatch Agent 的配置和使用_第5张图片

生成配置文件

接下来,我们需要生成配置文件。

在一台安装了CloudwatchAgent的服务器上 打开配置向导,根据自己的需求进行选择,选择的最后他会询问是否保存生成的config.json文件到 parameter store,选择yes,然后输入一个文件名字即可

AWS CloudWatch Agent 的配置和使用_第6张图片

生成的配置文件

AWS CloudWatch Agent 的配置和使用_第7张图片

配置CloudwatchAgent

接下来再次打开Run Command, 选择 AmazonCloudWatch-ManageAgent

AWS CloudWatch Agent 的配置和使用_第8张图片

指定配置文件的名字
AWS CloudWatch Agent 的配置和使用_第9张图片

执行 run 操作

AWS CloudWatch Agent 的配置和使用_第10张图片

查看结果

他会在Cloudwatch 里面自动生成一个叫做 CWAgent的名称空间

AWS CloudWatch Agent 的配置和使用_第11张图片

等待片刻之后,就可以查看对应的内存,CPU和磁盘甚至自定义的数据使用情况了

AWS CloudWatch Agent 的配置和使用_第12张图片