我已为在 nagioshost 上运行的 perl 自定义脚本设置了 Nagios/NSCA。
我已将其配置如下:
echo "myhost;myservice;1;Message"|/usr/local/nagios/libexec/send_nsca -to 10 -d ';' -c /etc/send_nsca.cfg -H localhost
它运行完美。
所以我的问题是,Nagios 或 NSCA 中是否有办法计算被动检查?
即 Nagios 收到警报的次数myservice
注意myhost
:自定义脚本永远不会为服务发送“OK”
答案1
您可以nsca
通过在 nsca.cfg 中设置来配置(守护进程)以将调试输出到 syslog debug = 1
。确保调试选项不会在配置文件中以不同的值多次出现,否则它可能会被覆盖。我遇到过这种情况 :)。
nsca.cfg:
# LOG FACILITY
# The syslog facility that should be used for logging purposes.
log_facility=daemon
# DEBUGGING OPTION
# This option determines whether or not debugging
# messages are logged to the syslog facility.
# Values: 0 = debugging off, 1 = debugging on
debug=1
CentOS 7 上 /var/log/messages 中的示例输出:
Sep 23 10:53:14 centos nsca[4504]: Starting up daemon
Sep 23 10:53:19 centos nsca[4504]: Handling the connection...
Sep 23 10:53:19 centos nsca[4504]: Time difference in packet: 0 seconds for host myhost
Sep 23 10:53:19 centos nsca[4504]: SERVICE CHECK -> Host Name: 'myhost', Service Description: 'myservice', Return Code: '1', Output: 'Message'
Sep 23 10:53:19 centos nsca[4504]: Attempting to write to nagios command pipe
Sep 23 10:53:19 centos nsca[4504]: Command file '/var/spool/nagios/cmd/nagios.cmd' does not exist, attempting to use alternate dump file '/var/spool/nagios/cmd/nsca.dump' for output
Sep 23 10:53:19 centos nsca[4504]: End of connection...
下一步是处理日志以获取所需的信息/数字。有很多方法可以做到这一点...
按照您的要求举个例子: Nagios 收到针对我的主机上的我的服务的警报的次数
grep "SERVICE CHECK -> Host Name: 'myhost', Service Description: 'myservice'" /var/log/messages | wc -l
1
在这里您可以看到处理日志显示有 1 个条目符合您的条件。
如果您可以编写脚本或程序,那么一旦您的日志中有了这些数据,您就可能编写出一些能够很好地工作的东西,即使对于许多提交被动检查的客户端主机来说也是如此。