对于我的 OpenStack 设置,我使用 LVM 作为 Cinder 块存储后端。我已经为精简配置创建了一个 cinder-volumes vg。
现在,我想监视该 vg 的使用量(而不是其中的单独磁盘)。我发现 lvs -a 可以做到这一点。我能够检查我的卷池利用率
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
cinder-volumes-pool cinder-volumes twi-aotz-- 1.49t 26.35 22.20
我可以看到该卷池的利用率约为 26%。有什么办法可以监控吗。我目前使用 Zabbix 对服务器和其他服务进行整体监控。但 Zabbix 支持监视文件系统,而不是磁盘和 LVM 池。
您知道我可以用来监控它的任何解决方案吗?诸如 bash 或 python 脚本之类的东西,当数据百分比超过 80% 左右时,通过 smtp 发送邮件?或者一些zabbix模板?
Edit1:我想我可以使用这种方法。
disk_usage=$(sudo lvs -a | grep -w cinder-volumes-pool | awk '$1 ~ /cinder-volumes-pool/ { POOL = $1 } { DISK += $5 } END { print DISK }')
我将将此 var 值与我的阈值(50% 或 80%)进行比较。当它匹配时,我将配置 SMTP 来发送邮件。这应该是一个不错的解决方案。如果你们有更好的东西,请随时帮助我。
好的,我解决了这个问题,因此发布了一个解决方案,以防有人需要帮助。首先,我们将使用 lva -a 命令获取磁盘使用情况。下面的自定义将会得到准确的值。确保替换 grep 和 awk 正则表达式中的 LVM 精简池名称。
将该值与您在 lvs -a 命令中为卷池获取的值进行比较,如果相同,我们可以继续。否则,计算它的位置并在 awk 中修改它(从 $5 到你的 disk% 位置)。
就我而言,我已经在使用 Zabbix。因此,我编辑了 zabbix 代理文件 (/etc/zabbix/zabbix_agent2.conf) 并添加了以下行。
UserParameter 在 Zabbix 中用于将用户定义的密钥从代理发送到 Zabbix 服务器。在这里,cinder-volumes.disk_usage 是我的密钥名称,命令是该密钥的值。
由于我的命令需要root权限,我修改了zabbix-agent systemd单元以root身份运行(我知道这不是最好的方法,总是欢迎更好的解决方案)。重新启动您的 Zabbix 代理。
确认您的自定义密钥是否有效:
如果获得输出值,请转到 Zabbix Dashboard。对于您的主机,使用您在上一步中创建的密钥创建一个新项目。选择数字(浮点)作为信息类型并选择更新间隔 1 小时,然后就可以开始了。
创建项目后,使用表达式基于该项目创建触发器
为了进行测试,请创建一个具有较低值的触发器(在当前磁盘使用情况下)。如果创建了触发器,则一切都很好。您现在可以创建媒体警报(电子邮件、pagerduty、slack 或任何内容)来接收触发器警报。