gpt4 book ai didi

ruby - 在 Nagiosgraph 中绘制多个磁盘卷

转载 作者:行者123 更新时间:2023-12-04 19:16:43 24 4
gpt4 key购买 nike

我想在单个 nagiosgraph 中绘制服务器上所有/dev/卷的可用磁盘空间。我一直在关注教程 here

本教程使用 Ruby 脚本使用以下代码检查整个磁盘结构:

used_space=`df -h / | grep -v "Filesystem" | awk '{print $5}'`

我有两个问题,如何最好地动态确定服务器具有哪些卷,然后如何将每个卷的可用空间输出到 nagios perfdata,以便我可以为服务器上的每个卷获取一行。

这是我的完整脚本-感谢以下答案:
#!/usr/bin/env ruby

def largest_hash_key(hash)
hash.max_by{|k,v| v}
end

filesystem = %x(df -h)

perfdata = filesystem.split("\n")
.grep(/\A\/dev/)
.map(&:split)
.map{ |e| "'%s'=%s" % [ e[-1], e[-2] ] }
.join(" ")

volumes = Hash[perfdata.split(" ").map {|str| str.split("=")}]

volumes = volumes.map{ |k, v| [k, v.to_i] }

full_disk = largest_hash_key(volumes)

pc_full = full_disk[1]

message = "#{perfdata} | #{perfdata}"

if pc_full > 94
puts "DISK CRITICAL - #{message}"
exit 2
elsif pc_full > 89
puts "DISK WARNING - #{message}"
exit 1
else
puts "DISK OK - #{message}"
exit 0
end

最佳答案

更新:加入空格而不是新行,请参阅下面的 markhorrocks 评论。

假设您的脚本在 Linux 机器上运行并且 this是您通过 nagios perfdata 引用的格式,您可以编写:

%x(df -h)
.split("\n")
.grep(/\A\/dev/)
.map(&:split)
.map{ |e| "'%s'=%s" % [ e[0], e[-2] ] }
.join(" ")

这将输出
'/dev/sda3'=50%

关于ruby - 在 Nagiosgraph 中绘制多个磁盘卷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35086133/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com