在 nagios 中定义和测试新服务时,我一直在重新启动 nagios,然后单击该服务,并尽快重新安排检查,然后等待检查完成。
有没有更有效的方法来做到这一点?我想使用命令行来运行该特定检查并获取输出。
答案1
有时我发现弄清楚插件到底在做什么很棘手。为了弄清楚这一点,我将 nagios 设置为调试模式,配置如下。 debug_level=2048
在 nagios 处于调试模式时,我只需跟踪文件debug_log
。debug_file=/var/log/nagios3/nagios.debug
强制检查,您将确切看到命令的运行方式。不过,我通常不会保留此设置,因为它非常冗长,并且会快速填满您的日志文件。
答案2
这很简单。只需 cd(或不 cd)进入插件目录(此目录位置会有所不同,具体取决于您的安装方式,但请检查 /usr/local/nagios 或 /usr/lib/nagios)。
找到您想要运行的插件(如果您不确定,请将您在 Linux 机器上的插件目录中看到的内容与位于此处的插件进行比较:http://exchange.nagios.org/directory/Plugins,或者尝试运行“。/plugin-name -h”来获取有关插件的帮助信息)。
从命令行使用这些“插件”的方法与任何其他 Linux 脚本相同:只需运行“./plugin-name”并加上您想要检查的适当标志,就可以了!
答案3
我采取了比 @Zoredache 更暴力的方向,我登录到 nagios 服务器并执行“while true; do ps awwlx | grep NAGIOS_CHECK_NAME; done”,同时我强制重新检查服务,其中 NAGIOS_CHECK_NAME 是检查名称的一部分或我正在寻找的服务器的 IP。通常在几秒钟内就会弹出完整的检查命令,然后我会终止 while 循环并运行检查命令。
是的,这完全是蛮力,但是<耸肩>它对我来说有效。
答案4
转到你的插件目录 - 在我的示例中它是
/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;
就是这样