**文章首发于INFOQ
默认监控
一般提到服务器的监控,都是看CPU,内存,磁盘的占用率这几个参数。同样对于云上EC2也是如此,EC2服务提供了一个监控界面可以监控各个指标,这个甚至不要进入到操作系统中执行指令就可以看见,常见的有:
- CPU使用率:监控EC2的CPU占用率(虚拟机级别的)
- 网络吞吐量:EC2的网络IO吞吐量和数据包个数
- 磁盘吞吐量:Disk IO 吞吐量和IOPS
- CPU积分:(如果该实例类型有brust,没有突增或者无限积分可以忽略这个指标)
与自建服务器常规指标不同的是,这个还增加了系统健康检查失败和实例健康检查失败的指标,系统健康检查失败说明云服务器底层硬件出现了问题影响网络通信,实例健康检查失败说明实例系统内部出现了问题导致网卡无法响应ARP请求(CPU打满,OOM等)。在正常情况下这两个参数数值应该是0,如果出现了波动说明EC2出现了问题,需要尽快进行排查。以上指标都可以作为自动拓展的或者监控警报的条件。根据不同的指标有最大,最小,平均和总计四个维度的统计,也可以调整指标的查看周期,这个时间理论上可以从一秒到无限时间。
增强监控
默认的是基本监控,每五分钟采集一个指标,基本监控是免费的,如果想要更细粒度的监控,可以开启增强监控来查看一分钟的监控聚合指标,这样能很好的避免由于监控不能及时检测变动导致未能及时捕获警报的情况。
自定义指标
需要注意的是,默认监控和增强监控看不到实例内部的信息,换句话说看不到内存和磁盘占用率的相关信息,更多的监控需要安装Cloudwatch Agent,这样可以在操作系统内部收集信息发送到云端,操作如下:
ubuntu 安装:
wget https://s3.cn-north-1.amazonaws.com.cn/amazoncloudwatch-agent/ubuntu/amd64/latest/amazon-cloudwatch-agent.deb
sudo dpkg -i -E ./amazon-cloudwatch-agent.deb
sudo /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
Centos安装:
wget https://s3.cn-north-1.amazonaws.com.cn/amazoncloudwatch-agent/centos/amd64/latest/amazon-cloudwatch-agent.rpm [1]
sudo rpm -U ./amazon-cloudwatch-agent.rpm
sudo /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
当然,如果可以的话,也可以自定义指标然后使用API/SDK进行发布,从某种程度上来讲,cloudwatch agent也算是集成好的自定义指标,相当于亚马逊云用SSM agent整理了常见一些指标,然后整合发布了一个软件。
如果使用CLI来发布自定义指标的话,命令是:
aws cloudwatch put-metric-data --namespace MyNamespace --metric-name MyMetric --value 42 --unit Count
然后可以在cloudwatch控制台来查看效果,发现已经可以成功上传。
参考:
- EC2 基本监控:https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/monitoring_ec2.html
- 下载Cloudwatch agent:https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/download-cloudwatch-agent-commandline.html
- Cloudwatch agent 配置文件: https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/create-cloudwatch-agent-configuration-file.html
- 自定义指标:https://docs.aws.amazon.com/zh_cn/AmazonCloudWatch/latest/monitoring/publishingMetrics.html