Amazon ec2 如何通过AWS EC2动态资源清册获取文件系统

Amazon ec2 如何通过AWS EC2动态资源清册获取文件系统,amazon-ec2,ansible,ansible-inventory,Amazon Ec2,Ansible,Ansible Inventory,在使用ec2动态资源清册通过ansible设置AWS CloudWatch警报时,我发现了一个非常具体的问题 我已成功设置,以监视计算机上磁盘和RAM的使用情况 此外,我还使用ansible模块设置了RAM使用警报 我目前面临的问题是,当设置磁盘使用警报时,Filesystem维度参数是必需的,但变量中没有返回 我的一些机器的文件系统设置为/dev/xvda1,其他机器的文件系统设置为:/dev/disk/by uuid/abcd123-def4-… 我目前的“解决方案”如下: -name:“磁

在使用ec2动态资源清册通过ansible设置AWS CloudWatch警报时,我发现了一个非常具体的问题

我已成功设置,以监视计算机上磁盘和RAM的使用情况

此外,我还使用ansible模块设置了RAM使用警报

我目前面临的问题是,当设置磁盘使用警报时,
Filesystem
维度参数是必需的,但变量中没有返回

我的一些机器的文件系统设置为
/dev/xvda1
,其他机器的文件系统设置为:
/dev/disk/by uuid/abcd123-def4-…

我目前的“解决方案”如下:

-name:“磁盘>60%(按固定uuid划分的文件系统)”
ec2_公制_报警:
国家:现在
名称:“{ec2_tag_name}}-磁盘”
地区:“{ec2_地区}”
尺寸:
实例id:“{ec2_id}”
山径:“/”
文件系统:'/dev/disk/by uuid/abcd123-def4-…'
名称空间:“系统/Linux”
指标:磁盘空间利用率
统计:平均值
比较:“>=”
阈值:60.0
单位:百分比
期间:300
评估周期:1
描述:磁盘利用率超过60%并持续5分钟时触发
警报动作:['arn:aws:sns:us-west-2:1234567890:slack']
何时:ec2_标签_名称在['srv1','srv2']
-名称:“磁盘>60%(文件系统/dev/xvda1)”
ec2_公制_报警:
国家:现在
名称:“{ec2_tag_name}}-磁盘”
地区:“{ec2_地区}”
尺寸:
实例id:“{ec2_id}”
山径:“/”
文件系统:'/dev/xvda1'
名称空间:“系统/Linux”
指标:磁盘空间利用率
统计:平均值
比较:“>=”
阈值:60.0
单位:百分比
期间:300
评估周期:1
描述:磁盘利用率超过60%并持续5分钟时触发
警报动作:['arn:aws:sns:us-west-2:1234567890:slack']
何时:ec2_标签_名称不在['srv1','srv2']
这两个任务之间的唯一区别是
文件系统
维度和
何时
条件(
中或
不在
中)


有没有办法获得
文件系统
值,这样我就可以像使用
ec2\u id
一样轻松地使用它们?我最担心的是,在创建新机器时,我必须观察文件系统值,并根据这些值处理机器列表。

我找不到解决这个问题的好办法,最后编写了一个bash脚本来生成包含UUID变量的YAML文件

  • 使用以下命令在远程计算机上运行脚本:
    -script:../files/get\u disk\u uuid.sh>/disk\u uuid.yml
  • 从远程服务器创建的文件
  • 使用include_vars_模块从文件导入变量。YAML语法要求在变量名中用下划线替换连字符。磁盘标签“cloudimg rootfs”变为“cloudimg_rootfs”。未标记的磁盘使用变量名:“disk0、disk1、disk2…”
  • 脚本并不理想。有一天我想写一个模块来完成同样的任务

    #! /bin/bash
    # get_disk_uuid.sh
    
    echo '---'
    disk_num=0
    for entry in `blkid -o export -s LABEL -s UUID`; do
        if [[ $entry == LABEL* ]];
        then
       label=${entry: 6}
        elif [[ $entry == UUID* ]];
        then
           uuid=${entry: 5}
        fi
        if [ $label ] && [ $uuid ]; then
            printf $label: | tr - _
            printf ' '$uuid'\n'
            label=''
            uuid=''
        elif [ $uuid ]; then
            printf disk$disk_num:
            printf ' '$uuid'\n'
            label=''
            uuid=''
    fi
    done
    

    我现在正和Ansible发生同样的事情。你找到解决办法了吗?没有。仍在使用问题中提到的版本=(