介绍
由于/usr/local/nagios/etc/nsca.cfg被replace为默认configuration,如果opsview已经重新启动,驻留在/etc/init.d/opsview的这个文件的引用被改为/ usr / local / nagios / etc / nsca_puppet.cfg,后者使用Puppet ERB模板进行部署。
目标
目的是发送使用nsca的被动检查到Opsview。
假设是执行:
echo -e "HOST\tService\t0\tRemote File does not exist" | \ sudo /usr/local/nagios/bin/send_nsca -H host -c \ /usr/local/nagios/etc/send_nsca.cfg
将更新驻留在Opsview中的(被动)检查。
结果
尾随/ var / log / messages指示以下内容:
Jan 24 14:27:37 host nsca[X]: Handling the connection for <ip>... Jan 24 14:27:37 host nsca[X]: Command file '/usr/local/nagios/var/rw/nagios.cmd#015' does not exist, attempting to use alternate dump file '/dev/null' for output Jan 24 14:27:37 host nsca[X]: SERVICE CHECK -> Host Name: 'HOST', Service Description: 'Service', Return Code: '0', Output: 'Remote File does not exist' client <ip> Jan 24 14:27:37 host nsca[X]: End of connection for <ip>...
试图解决这个问题
1)也许nsca命令应该作为nagios用户发布
sudo -u nagios /usr/local/nagios/bin/send_nsca
不解决问题
2)ncsa运行?
是
user@host:~$ ps -ef | grep nsca nagios PID 1 0 13:38 ? 00:00:00 /usr/local/nagios/bin/nsca -c /usr/local/nagios/etc/nsca.cfg --single
3)它是否工作从本地发送ncsa命令
不,也行不通
4)不正确的权限nagios.cmd?
似乎没问题
user@host:~$ ls -ltr /usr/local/nagios/var/rw/ total 4 -rw-rw-r--. 1 nagios nagios 1321 Jan 23 22:13 config_output.last_okay srw-rw----. 1 nagios nagcmd 0 Jan 24 13:38 nagios.qh prw-rw----. 1 nagios nagcmd 0 Jan 24 13:38 nagios.cmd srw-rw----. 1 nagios nagcmd 0 Jan 24 13:38 opsviewd.cmd
5)它是否工作发送其他检查,然后被动的使用nsca的Opsview
这个问题出现在所有types的检查中
6) nagios.cmd#015 does not exist …? nagios.cmd被configuration? 或不?
是的,这是正确的
7)相关的错误到这个版本的NSCA?
user@host:~$ sudo /usr/local/nagios/bin/nsca --version NSCA - Nagios Service Check Acceptor Copyright (c) 2000-2007 Ethan Galstad (www.nagios.org) Version: 2.7.2 Last Modified: 07-03-2007 License: GPL v2 Encryption Routines: AVAILABLE
似乎没有问题,因为在互联网上没有发现问题。
8)谁可以写信给nagios.cmd?
用户不允许写入:
user@host:~$ echo hello >> /usr/local/nagios/var/rw/nagios.cmd -bash: /usr/local/nagios/var/rw/nagios.cmd: Permission denied
而纳吉奥斯是:
user@host:~$ sudo su - nagios nagios@host:~$ echo hello >> /usr/local/nagios/var/rw/nagios.cmd nagios@host:~$
/usr/local/nagios/etc/nsca.cfg
command_file=/usr/local/nagios/var/rw/nagios.cmd
问题
有几个问题可以问,但目前的假设是,检查不能被处理,因为这些不写入nagios.cmd。
#015从哪里来? 根据这个问答 ,syslog中的#015对应于一个\r 。
这个问题是由于CRs是由Puppet ERB模板添加的。
执行以下命令 :
sudo sed -i 's/\r//' /usr/local/nagios/etc/nsca.cfg
并重新启动opsview解决了这个问题。
为了解决Puppet中的CR模板erb问题 ,使用content => regsubst(template("opsview/nsca.cfg.erb"), '\r', '', 'G'),
你没有提到运行nsca服务器 。 这是最重要的一块。
Send_nsca需要数据。 这里你的testing是无效的:
1) Perhaps the nsca command should be issued as the nagios user
sudo -u nagios / usr / local / nagios / bin / send_nsca
相反,您需要先回声并将数据传送到send_nsca。 您在服务器端的nsca守护程序需要以nagios / nagcmd用户/组的身份运行。
有关如何设置nsca的更多详细信息,请参阅以下指南: