如何使 Nagios 服务的状态信息更易于阅读?

如何使 Nagios 服务的状态信息更易于阅读?

我在多台服务器的环境中运行 Nagios,每台服务器都运行着多项服务。有一些自定义检查,但如果可能的话,最好使用现有的检查。我使用 NRPE 插件检查检查磁盘检查每个已安装的文件系统的利用率:

command[check_all_disks]=/usr/lib/nagios/plugins/check_disk -w 10% -c 5% -p / -p /var -C -u GB -w 200 -c 100 -r '^/mounts[^/]+$'

将它们全部作为单个服务(“磁盘”)进行检查很方便,但是当其中一个进入警告模式时,很难读取状态信息行中的输出:

DISK WARNING - free space: / 6 GB (9% inode=92%): /var 125 GB (67% inode=99%): /mounts/vol0 1152 GB (16% inode=99%): /mounts/vol1 1096 GB (15% inode=99%): /mounts/vol2 126 GB (1% inode=99%): /mounts/vol3 228 GB (3% inode=99%): /mounts/vol4 3245 GB (44% inode=99%): /mounts/vol5 108 GB (1% inode=99%): 

在上述情况下,检查结果为警告,因为 /、/mounts/vol2 和 /mounts/vol5 低于阈值。操作员必须仔细检查每个值才能找到超出设定水平的值。此外,如果其中一个为严重,而其他为警告,最好以不同的方式显示它们,方法是标记它们,或将它们放在不同的行上。

有没有一种简单的方法可以做到这一点,而无需为每个挂载点创建新命令?还是我错过了 Nagios magic 的其他一些基本方法来使它变得友好?

答案1

尝试--errors-only 标志这应该会大大减少该插件输出的文本量。

 -e, --errors-only
 Display only devices/mountpoints with errors

这似乎对我有用。请注意输出中的巨大差异:

# /usr/lib64/nagios/plugins/check_disk -w 20% -c 10% 
DISK WARNING - free space: / 37167 MB (96% inode=98%); /dev/shm 244 MB (100% inode=99%); /boot 84 MB (18% inode=99%); /home 21253 MB (99% inode=99%);

但是有了这个--errors-only标志,现在很清楚我的问题在于/boot

# /usr/lib64/nagios/plugins/check_disk -w 20% -c 10% --errors-only
DISK WARNING - free space: /boot 94 MB (20% inode=99%);

如果系统没有问题,输出很短:

# /usr/lib64/nagios/plugins/check_disk -w 20% -c 10% --errors-only
DISK OK

(注意:为了清楚起见,我删除了第一个 | 之后的所有内容。Nagios Web 界面也会在将此输出显示在屏幕上之前对其进行修剪。)

另请参阅有关 Debian bugtacker 的讨论:nagios2:以难以理解的方式抱怨磁盘空间不足

答案2

标准方法是将所有内容放在一行上。你只有两个选择:

  • 为每个磁盘定义一个检查(我知道这不是你想要的,但我仍然认为这是最好的解决方案)

  • 编写您自己的插件或围绕 check_disks 的包装器来解析输出:然后您可以将低于阈值的磁盘放在状态行中,或者缩短输出以仅包含相关磁盘。

你可以用任何语言编写包装器,但考虑到任务,我建议使用脚本语言(例如,Perl)。以下是有关如何开发插件的指南:http://nagiosplug.sourceforge.net/developer-guidelines.html

答案3

正如@Matteo 提到的,我也认为你应该为每个分区定义一个检查。但这里有一个包装器示例,用于按降序对磁盘使用情况进行排序:

check_disk -w 20% -c 10% -p /dev/sda1 -p /dev/sdb2 -p /dev/sdb4 | 
    awk -F"|" '{ print $1 }' | awk -F": " '{ print $2 }' | \
        tr ";" "\n" | sed 's/^ //' | sort -k4,4n

PS:我的插件返回一个用而不是check_disk分隔的列表,正如您所展示的。;:

答案4

你可能会考虑检查多重,它结合了显示单个状态行的功能,以及通过实际单独检查每个磁盘来查看更多详细信息的功能。您可以从一些截图它如何为您工作。在磁盘检查示例中,您将有一个 check_multi 检查,显示“1 警告,2 正常”,当您单击该服务时,您将看到 3 个单独的检查,显示哪个磁盘处于警告状态,并特别提供有关该磁盘的详细信息,同时仍清楚地显示其他 2 个检查。

相关内容