不用從nagios主頁獲取源碼,那份源碼已經陳舊,而且存在不少問題,直接從做者php
<pre> git clone https://github.com/NagiosEnterprises/nrdp.git </pre>html
將應用拷貝到apache根目錄下python
<pre> git clone https://github.com/NagiosEnterprises/nrdp.git cp -rp nrdp/server /var/www/html/nrdp chown -R nagios.nagios /var/www/html/nrdp </pre>ios
修改nrdp插件配置 /var/www/html/nrdp/config.inc.phpgit
$cfg['authorized_tokens'] = array( "k&d@dlz9x", "df23m7jadI34", ); $cfg["command_file"]="/var/lib/nagios3/rw/nagios.cmd"; $cfg["check_results_dir"]="/var/lib/nagios3/spool/checkresults"; $cfg["tmp_dir"]="/var/lib/nagios3/spool/tmp/";
添加 http 配置 /etc/apache2/conf-enabled/nrdp.confgithub
<Directory "/var/www/html/nrdp"> # SSLRequireSSL Options None AllowOverride None Order allow,deny Allow from 10.0.0.0/8 # Order deny,allow # Deny from all # 使用與nagios相同的認證用戶 #AuthName "NRDP" #AuthType Basic #AuthUserFile /etc/nagios3/htpasswd.users #Require valid-user </Directory>
修改 apache 守護進程用戶 /etc/apache2/envvarsapache
<pre> export APACHE_RUN_USER=nagios export APACHE_RUN_GROUP=nagios </pre>ubuntu
重啓服務,訪問 URLvim
/etc/init.d/httpd restart http://server_ip/nrdp/
若是提交數據返回 OK 的結果,說明 http 配置正確,正確結果以下:安全
<result> <status>0</status> <message>OK</message> </result> <result> <status>0</status> <message>OK</message> <meta> <output>2 checks processed.</output> </meta> </result>
參考 Nagios被動檢測的配置 定義要被動監控的主機及其服務,使用nrdp客戶端向服務器發送檢測結果,看nagios是否正確接收到並正確反饋處理!
<pre> python send_nrdp.py --url=http://server_ip/server/ --token="l@bs&d" --host=localhost --service=check_disk_passive --state=0 --output="ok ok ok" </pre>
<pre> python send_nrdp.py --url=http://server_ip/server/ --token="l@bs&d" --host=localhost --state=0 --output="ok ok ok" </pre>
因爲 nrdp-server 是運行在 apache 服務器上的應用,能夠充分利用apache提供的安全機制,好比
1 SSL加密傳輸 ,對應配置
SSLRequireSSL
2 限制IP訪問
Order allow,deny Allow from 10.0.0.0/8
3 用戶認證
#使用與nagios相同的認證用戶 #AuthName "NRDP" #AuthType Basic #AuthUserFile /etc/nagios3/htpasswd.users #Require valid-user
在ubuntu 14.04 系統探索部署 nagios nrdp 插件過程當中,測試 http: ip /nrdp/ 提交結果的頁面中,老是報以下錯誤:
<result> <status>-1</status> <message>BAD COMMAND FILE</message> </result> <result> <status>-1</status> <message>BAD CHECK RESULTS DIR</message> </result>
「BAD COMMAND FILE」 「BAD CHECK RESULTS DIR」 開發者定義的這兩條運行錯誤提示信息,語義解誤差很大,弄了兩天依然無頭緒, 只能在閱讀插件的源碼,分別找到了源碼中對應的位置,如今把報錯信息出處的調用的函數寫成兩個測試腳本
test_file_exists.php <?php $result=file_exists("/var/lib/nagios3/spool/checkresults","c"); print $result."\n\r"; ?> test_tempnam.php <?php $tmpname=tempnam("/var/lib/nagios3/spool/checkresults","c"); print $tmpname."\n\r"; ?>
分別以nagios www-data 用戶身份執行,會返回不一樣的結果,插件不能工做的正常緣由就這裏!
sudo -u nagios php test_tempnam.php sudo -u nagios php test_file_exists.php sudo -u www-data php test_tempnam.php sudo -u www-data php test_file_exists.php
最後給出一種解決辦法,更改apache服務的運行時用戶 vim /etc/apache2/envvars
<pre> export APACHE_RUN_USER=nagios export APACHE_RUN_GROUP=nagios </pre>
最後測試一切OK