由于退出代码,Munin的智能插件不断报告过去的错误

我的主机提供商已经插入了一个硬盘驱动器到我的服务器,似乎有过类似的错误在过去,但一个完整的离线智能检查显示,一切都(好)现在。 服务器有一个RAID1,所以我可以适应这种情况。

问题是(根据手册页)如果过去出现错误,smartctl会设置位6,所以现在一切正常,退出代码是数字64。

智能插件默认configuration的阈值为0,而我知道我可以设置阈值高达64,我会错过更重要的位3“磁盘失败”。

有没有办法设置一个门槛,让慕尼宁按比较价值?

最终我已经采取了补丁的智能插件。 根据你的版本有一些这样的代码:

if exit_status!=None : # smartctl exit code is a bitmask, check man page. num_exit_status=int(exit_status/256) 

用这个replace它

  if exit_status!=None : # smartctl exit code is a bitmask, check man page. num_exit_status=int(exit_status/256) # filter out bit 6 num_exit_status &= 191 if num_exit_status<=2 : exit_status=None if exit_status!=None : 

最有趣的部分是191行按位操作的行:这是二进制的0x11011111,所以对当前值进行AND操作,它将只设置位6到0,而不改变其他值。

因此,值64(和我一样)将被报告为0,而值8将保持在8.但是也非常重要的是,值72(总是设置位6,因为磁盘故障而设置了位3 )它也会报告8。

我发现在不修改munin源文件的情况下避免这个问题的唯一方法是避免在smartctl中使用-a选项,例如在/etc/munin/plugin-conf.d/munin-node使用类似/etc/munin/plugin-conf.d/munin-node

 [smart_sda] env.smartargs -H -i -c -A -l selftest -l selective 

(即所有选项通常包含在-a -l error )。