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


24

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

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

Answers:


31

有时我很难弄清楚插件在做什么。为了弄清楚这一点,我使用以下配置将nagios设置为调试模式。 debug_level=2048 在nagios处于调试模式的情况下,我只需尾部debug_log文件即可debug_file=/var/log/nagios3/nagios.debug。强制检查,您将确切看到命令的运行方式。我通常不会保留此设置,因为它非常冗长,并且会迅速填充您的日志文件。


太棒了 这更符合我的意思。仅仅因为我已经查看了commands.cfg文件来找出正在运行的命令,但是我想知道正在设置哪些标志。谢谢!:)
cwd

2
我还将为新用户提供便利,该用户可以使用tail -f继续实时查看文件的更新,control+c并将其取消。
cwd 2012年

2
debug_levels是二进制的-2048仅打开来自宏的消息。要打开所有您想要设置的debug_level = 4095。(1 + 2 + ... + 2048)
jwg

18

很简单 只需cd(或不可以)进入plugins目录(此目录位置根据您的安装方式而有所不同,但请检查/ usr / local / nagios或/ usr / lib / nagios)。

查找要运行的插件(如果不确定,请将Linux盒上的插件目录中显示的内容与位于此处的插件进行比较:http : //exchange.nagios.org/directory/Plugins,或尝试运行“ ./plugin-name -h”以获取有关插件的帮助信息。

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


1
+1 ...如果那看起来太麻烦了,您可以随时查看Nagios配置文件以查看需要运行哪些命令和参数。甚至plugins目录的位置也在那里。
约翰·加迪尼尔

5
并请记住,始终由nagios用户来完成su - nagios -s /bin/bash
量子

很好 并-为该用户加载环境变量?
cwd

是的,就像其他任何Linux标志一样,带有您使用的任何标志的“-”将加载该标志。(如果我在linux CLI上运行df -h,则使用“ h”标志-在df命令的情况下,h表示“人类可读”。)因此,如果要运行check_http check在CLI中,您将运行./check_http -I,其中I标志代表IP地址(nagiosplugins.org/man/check_http)。nagiosplugins.org/man以及我之前链接的Plugins目录可能会有所帮助。
David W


5

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

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


尝试使用“观看”代替while循环。 linux.about.com/library/cmd/blcmdl1_watch.htm
dmourati 2014年

3

您可能还想尝试一下“捕获”插件。它基本上与2048的调试级别具有相同的作用,但是可以在每个插件的基础上使用。这样产生的输出量较少。

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


1
我努力使它起作用,不确定我在做什么错(菜鸟),但是debug_level技巧对我
有用

2

转到您的插件目录-在我的示例中是

/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(服务器名)-c(检查名)

/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;

而已

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.