我有一个进程可以获取服务器上所有磁盘的大小,将其写入这样的文件中
# cat disksize
DISK# ACTUAL WARNING CRITICAL
disk1 12 20 30
disk2 45 60 75
文件的第一行供参考,显示每列的用途。下面是监控脚本,但我不确定它是否适用于 nagios,因为其中一些大小可能会导致正常,有些可能会发出警告。任何人对此有任何见解,请
# cat check-disk_size
#!/usr/bin/env bash
LOGFILE='disksize'
cat ${LOGFILE} | while
read disk_name actual warning critical
do
if [ $actual -ge $warning ]; then
echo "WARNING: $disk_name has reached standard warning limit, Current actual: ${actual}"
exit 1
elif [ $actual - ge $critical ]; then
echo "WARNING: $disk_name has reached standard critical limit, Current actual: ${actual}"
exit 2
else
echo "OK: $disk_name is under optical limit, Current actual: ${actual}"
exit 0
done
您的脚本(如所写)不会按照您的预期进行。最大的问题是您可能会
exit 0
过早地退出循环,从而丢失随后可能出现的关键磁盘条目。exit 1
不太危险的是,当存在严重问题时,脚本可能会发出警告。Nagios 将根据退出代码检查此检查的状态,因此您的脚本可能会仅根据文件中条目的顺序给出令人困惑的结果。鉴于文件中的数据,我建议重组脚本,以便它完全返回您所期望的。它应该卷起最坏的警报吗?它应该计算文件中有多少警报吗?最安全的想法是汇总最差警报,以便每个磁盘都必须低于警告阈值才能使 Nagios 警报“正常”,但您的环境可能会规定其他要求。
这是引发最糟糕警报的一种可能性:
这只是一个演示这个想法的例子。