我注意到,在较新的 ec2 实例类型上使用 nvme 安装的 ebs 卷的磁盘使用情况监控创建警报时,“设备”作为指标维度发送。问题是 nvme 设备名称在 ec2 实例重新启动时可能会更改,因此先前设置的警报不再监控来自正确指标的数据。
我正在使用 CloudWatch Agent 从 ec2 实例发送指标https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html在 ubuntu 16.04 服务器上,disk_used_percent 指标所附加的维度是:
"path", "/home", "host", "ip-xxx-xxx-xxx-xxx", "device", "nvme1n1", "fstype", "ext4"
我发现从警报中省略任何一个维度都无法将警报与指标关联起来,因此我认为它们都是必需的,以便将警报与正确的指标链接起来。
当我重新启动服务器时,尺寸可能会更改为:
"path", "/home", "host", "ip-xxx-xxx-xxx-xxx", "device", "nvme3n1", "fstype", "ext4"
设备已发生变化,由于维度不再匹配,因此该指标的警报不再与任何指标关联。
我查看了代理配置,想看看是否有办法改变发送的尺寸,但找不到任何方法https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-Configuration-File-Details.html
它实际上只需要发送path
和host
尺寸以保证唯一性,因此如果可能的话,我可以省略device
和尺寸。fstype
如何才能让警报在 ec2 实例重启后依然有效而无需重新配置?
答案1
JamieD,
我能够使用 bash 脚本来实现这个目的。
#!/usr/bin/env bash
function push_disk_used {
aws cloudwatch put-metric-data \
--metric-name "$1" \
--namespace Test \
--unit Percent \
--value "$2" \
--dimensions ClusterName=TestInstance \
--region "$REGION"
}
# MongoDB Root Disk Space
HOME_DISK_USED=$(df -H /home | awk 'NR ==2 {print $5}' | sed -r 's/%//')
echo 'MongoDB Home Disk Used Percent:' "$HOME_DISK_USED";
push_disk_used Home_DISK_USED "$HOME_DISK_USED"
设置 cron 作业来推送 disk_used_percent 指标,并在 cloudformation 中使用以下属性设置警报。
Namespace: Test
MetricName: HOME_DISK_USED
Dimensions:
- Name: ClusterName
Value: TestInstance