如果將被動檢查發送到 NSCA 守護程序,則命令文件“nagios.cmd#015”不存在問題
介紹
由於 /usr/local/nagios/etc/nsca.cfg 被預設配置替換,如果 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>...
嘗試解決問題
- 也許 nsca 命令應該以 nagios 使用者身份發出
sudo -u nagios /usr/local/nagios/bin/send_nsca
不解決問題
- 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
- 從本地主機發送 ncsa 命令是否有效
不,也不起作用
- 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
- 使用 nsca 將其他檢查然後被動檢查發送到 Opsview 是否有效
所有類型的檢查都會出現此問題
nagios.cmd#015 does not exist
…?nagios.cmd 配置了嗎?或不?是的,這是正確的
- 與這個版本的 NSCA 相關的 bug?
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
似乎沒問題,因為在網際網路上沒有發現任何問題。
- 誰可以寫入 nagios.cmd?
不允許使用者寫:
user@host:~$ echo hello >> /usr/local/nagios/var/rw/nagios.cmd -bash: /usr/local/nagios/var/rw/nagios.cmd: Permission denied
而nagios是:
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
?
根據此問答,系統日誌中的a
#015
對應於\r
.該問題是因為 CR 是由 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 server。這是最重要的一塊。
Send_nsca 需要數據。在這裡你的測試是無效的:
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 的更多詳細資訊,請參閱以下指南: