重启后,AWS CloudWatch 发出磁盘空间指标损坏警报

重启后,AWS CloudWatch 发出磁盘空间指标损坏警报

我注意到,在较新的 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

它实际上只需要发送pathhost尺寸以保证唯一性,因此如果可能的话,我可以省略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

相关内容