题 如何从命令行手动运行nagios检查?


在nagios中定义和测试新服务时,我一直在重新启动nagios,然后单击该服务,并尽快重新安排检查,然后等待检查发生。

有没有更有效的方法来做到这一点?我想使用命令行来运行该特定检查并获取输出。


23
2017-12-11 23:14






答案:


有时我觉得很难弄清楚插件究竟在做什么。为了解决这个问题,我使用这样的配置将nagios设置为调试模式。 debug_level=2048  在调试模式下使用nagios,我只是拖尾了 debug_log 文件 debug_file=/var/log/nagios3/nagios.debug。强制检查,您将看到该命令的确切运行方式。我不会正常地保留此设置,但它非常冗长并且以很快的速度填充您的日志文件。


30
2017-12-12 00:01



真棒。这更符合我的意思。只是因为我已经查看了commands.cfg文件来确定哪些命令正在运行,但我想知道正在设置哪些标志。谢谢! :) - cwd
我还将为使用的新用户提供建议 tail -f 将允许您继续实时查看文件更新,以及 control+c 将取消这个。 - cwd
debug_levels是二进制 - 2048只打开来自宏的消息。打开要设置的所有内容debug_level = 4095。 (1 + 2 + ... + 2048) - jwg


这很简单。只需cd(或不)进入plugins目录(此目录位置会有所不同,具体取决于您的安装方式,但请检查/ usr / local / nagios或/ usr / lib / nagios)。

找到你想要运行的插件(如果你不确定,可以将你在Linux机器上的插件目录中看到的内容与这里的插件进行比较: http://exchange.nagios.org/directory/Plugins,或尝试运行“./plugin-name -h”以获取有关插件的帮助信息)。

从命令行使用任何这些“插件”的方法与任何其他Linux脚本相同:只需使用要检查的相应标志运行“./plugin-name”,瞧!


17
2017-12-11 23:26



+1 ......如果这看起来太麻烦你总是可以查看Nagios配置文件,看看需要运行什么命令和参数。甚至插件目录的位置也在那里。 - John Gardeniers
请记住,总是这样做 nagios 用户 su - nagios -s /bin/bash。 - quanta
不错。和 - 加载该用户的环境变量? - cwd
是的,就像任何其他linux标志一样,“ - ”与你使用的任何标志将加载标志。 (如果我在linux CLI上运行df -h,我使用“h”标志 - 在df命令的情况下,h代表“人类可读”。)所以如果你想运行check_http检查从CLI,您将运行./check_http -I,其中I标志代表IP地址(nagiosplugins.org/man/check_http)。 nagiosplugins.org/man 可能会有所帮助,以及我之前链接的插件目录。 - David W
帮助选项应该是--help。 nagios-plugins.org/doc/guidelines.html - dmourati


我采取比@Zoredache略强一些的暴力方向,我登录到nagios服务器并执行“while true; do ps awwlx | grep NAGIOS_CHECK_NAME; done”,同时我强制重新检查服务,其中NAGIOS_CHECK_NAME要么检查名称的一部分或我正在寻找的服务器的IP。通常在几秒钟内弹出完整的检查命令,然后我杀死while循环并运行check命令。

是的,这是完全蛮力,但<耸肩>它对我有用。


4
2017-12-12 02:24



尝试“观察”代替while循环。 linux.about.com/library/cmd/blcmdl1_watch.htm - dmourati


您可能还想尝试“捕获”插件。它基本上与调试级别2048相同,但可以在每个插件的基础上使用。这样可以减少挖掘的输出。

http://www.waggy.at/nagios/capture_plugin.htm


3
2017-12-28 22:30



我努力让这个工作,不知道我做错了什么(noob)但是debug_level技巧对我有用:) - sbditto85


转到你的插件目录 - 在我的例子中是

/usr/lib64/nagios/plugins/

输入您的插件名称 - 在我的示例中是

check_tcp

现在运行完整命令 - (插件名称)-H(主机名)-p(端口号)

/usr/lib64/nagios/plugins/check_tcp -H myservername -p 8080

产量

TCP OK - 0.004 second response time on port 8080|time=0.004146s;;;0.000000;10.000000

但是在此示例中,端口号是可选的

另一个例子 -

在你的配置文件中看起来像下面(myserver.cfg),你想从命令行运行check_cpu

define service{
  use                             generic-service
  host_name                       myserver
  servicegroups                   windows
  service_description             CPU
  contact_groups                  sysadmin_email_only
  notification_options            w,c,r
  check_command                   check_nrpe!check_cpu
}

立即检查(没有GUI绿色或红色)

试试这个 - (插件完整路径) - H(servername)-c(checkname)

/usr/lib64/nagios/plugins/check_nrpe -H spc7atc01 -c check_cpu

输出 -

OK CPU Load ok.|'5'=4;80;90; '10'=3;80;90; '15'=3;80;90;

而已


2
2017-09-02 08:41