linux AWS Cloudwatch代理disk_used_percent测量的是什么?它与我看到的lsblk或df使用情况不匹配

yqkkidmi  于 2022-12-26  发布在  Linux
关注(0)|答案(1)|浏览(156)

我有一个t4g.large EC2示例,运行Ubuntu 22.04,有一个30 GB的存储卷,我已经安装并配置了Cloudwatch代理来监视磁盘使用情况。
目前,Cloudwatch上的指标显示,磁盘已满56%。
如果我运行lsblk -f,我会看到以下内容(为了简洁起见,我删除了uuid列):

NAME         FSTYPE   FSVER LABEL           FSAVAIL FSUSE% MOUNTPOINTS  
loop0        squashfs 4.0                         0   100% /snap/core20/1699  
loop1        squashfs 4.0                         0   100% /snap/amazon-ssm-agent/5657  
loop2        squashfs 4.0                                   
loop3        squashfs 4.0                         0   100% /snap/lxd/23545  
loop4        squashfs 4.0                         0   100% /snap/core18/2658  
loop5        squashfs 4.0                         0   100% /snap/core18/2636  
loop6        squashfs 4.0                         0   100% /snap/snapd/17885  
loop7        squashfs 4.0                         0   100% /snap/amazon-ssm-agent/6313  
loop8        squashfs 4.0                         0   100% /snap/core20/1740  
nvme0n1                                                    
├─nvme0n1p1  ext4     1.0   cloudimg-rootfs    2.9G    90% / 
└─nvme0n1p15 vfat     FAT32 UEFI              92.4M     5% /boot/efiNAME

如果我运行df -h,我会看到:

Filesystem       Size  Used Avail Use% Mounted on
/dev/root         29G   27G  2.9G  91% /
tmpfs            3.9G     0  3.9G   0% /dev/shm
tmpfs            1.6G  1.1M  1.6G   1% /run
tmpfs            5.0M     0  5.0M   0% /run/lock
/dev/nvme0n1p15   98M  5.1M   93M   6% /boot/efi
tmpfs            782M  8.0K  782M   1% /run/user/1000

我不明白56%是从哪里来的。即使Cloudwatch代理对所有挂载点进行求和,结果也会是~ 75%,而不是56%。
这是我的代理配置:

{
    "agent": {
        "metrics_collection_interval": 60,
        "run_as_user": "root"
    },
    "metrics": {
        "aggregation_dimensions": [
            [
                "InstanceId"
            ]
        ],
        "append_dimensions": {
            "AutoScalingGroupName": "${aws:AutoScalingGroupName}",
            "ImageId": "${aws:ImageId}",
            "InstanceId": "${aws:InstanceId}",
            "InstanceType": "${aws:InstanceType}"
        },
        "metrics_collected": {
            "collectd": {
                "metrics_aggregation_interval": 60
            },
            "disk": {
                "measurement": [
                    "used_percent"
                ],
                "metrics_collection_interval": 60,
                "resources": [
                    "*"
                ]
            },
            "mem": {
                "measurement": [
                    "mem_used_percent"
                ],
                "metrics_collection_interval": 60
            },
            "statsd": {
                "metrics_aggregation_interval": 60,
                "metrics_collection_interval": 30,
                "service_address": ":8125"
            }
        }
    }
}

我尝试将资源中的“*”更改为“/”或“/dev/root”,并重新启动代理,但报告的值没有任何变化。
编辑:我现在已经删除了一堆文件,lsblk报告说“/”挂载点的磁盘使用率为33%,而cloudwatch报告说为52%。

wxclj1h5

wxclj1h51#

我发现了。罪魁祸首是配置的这一部分:

"aggregation_dimensions": [
            [
                "InstanceId"
            ]
        ],

这意味着代理向CloudWatch发送一个“聚合”值,这是我偶然使用的,要获得这个聚合,我浏览了Cloudwatch GUI中的指标,如“CWAgent”-“InstanceId”-“disk_used_percent”。这将报告每个时间点的一组数据点-代理报告的所有不同路径的所有结果。从那里,您可以选择“平均”,“最大”,“最小”等来使用这个数据。我已经选择了“平均”。
我应该做的是浏览“CWAgent”-“ImageId,InstanceId,InstanceType,device,fstype,path”-“disk_used_percent”以查找路径/。然后我将只查看该路径的值,每个时间步长只有一个样本,并且它将与我在终端中看到的匹配。
注意:如果你真的想深入了解,你可以在/etc/collectd/collectd.conf上查看collectd配置,它有一个“"的配置,它会把你指向collectd存储cloudwatch代理阅读的df信息的路径。

相关问题