由於公司使用nginx作為web監控伺服器,但是nagios依賴php環境和perl環境。由於nginx不支援perl的cgi,這裡就需要先來搭建perl環境,經過試驗使用spawn-fcgi+fcgiwrap為最佳的選擇。
安裝spawn-fcgi
# wget -p /usr/src
# tar xf spawn-fcgi-1.6.3.tar.gz
# cd /usr/local/src/spawn-fcgi-1.6.3
# ./configure
# make && make install
安裝fcgi庫
# wget -p /usr/src
# wget -p /usr/src
# rpm -ivh fcgi-2.4.0-10.el6.x86_64.rpm fcgi-devel-2.4.0-10.el6.x86_64.rpm
fcgi:
fcgi-devel: 】
安裝fcgiwrap
fcgiwrap wiki -->
最新版本為gnosek-fcgiwrap-1.1.0-0-g333ff99.tar.gz
# cd gnosek-fcgiwrap-333ff99/
# autoreconf -i
# ./configure
# make && make install
nginx.conf相關nagios配置
location ~ \.php$
location ~.*\.(cgi|pl)?$
location /nagios
建立nagios鏈結
# ln -s /usr/local/nagios/share/www/nagios
配置nagios nginxweb認證
# htpasswd -c/usr/local/nagios/etc/.nagiospasswd nagiosadmin
在fastcgi_params 中增加
fastcgi_param remote_user $remote_user;
傳遞登陸的使用者名稱,否則登陸到nagios介面後,會顯示無許可權
【注:
1、htpasswd這個工具由apache安裝包所提供,如果沒有,可安裝httpd-tools這個軟體包
2、如果想新增非nagiosadmin的使用者則需要修改配置檔案cgi.cfg,在cgi配置檔案中新增指定使用者,以逗號隔開,如下我想加入admin使用者並且賦予它所有的許可權:
# grep -ev '^#|^$'/usr/local/nagios/etc/cgi.cfg | grep authorized
authorized_for_system_information=nagiosadmin,admin
authorized_for_configuration_information=nagiosadmin,admin
authorized_for_system_commands=nagiosadmin,admin
authorized_for_all_services=nagiosadmin,admin
authorized_for_all_hosts=nagiosadmin,admin
authorized_for_all_service_commands=nagiosadmin,admin
authorized_for_all_host_commands=nagiosadmin,admin
建立乙個shell指令碼來用spawn-fcgi 啟動fcgiwrap例項
# cat /usr/local/bin/fcgiwrap_phpcgi.sh
#!/bin/bash
/usr/local/bin/spawn-fcgi-f /usr/bin/php-cgi -a 127.0.0.1 -p 9000 -c 10 -u daemon -g daemon
/usr/local/bin/spawn-fcgi-f /usr/local/sbin/fcgiwrap -a 127.0.0.1 -p 10000 -f 10 -u daemon -g daemon
# chmod +x /usr/local/bin/fcgiwrap_phpcgi.sh
引數含義如下:
-a 繫結到位址addr
-p 繫結到埠port
-s 繫結到unixsocket的路徑path
-c < children> 指定產生的fastcgi的程序數(僅用於php)
-f 指定產生的fastcgi的程序數
-p 指定產生的程序的pid檔案路徑
-u和-g fastcgi使用什麼身份(-u使用者-g使用者組)執行,這裡使用nginx的使用者和組daemon執行
編寫啟動指令碼
# cat /etc/init.d/fcgiwrap_phpcgi
[plain]view plain
copy
print?
#!/bin/bash
# fcgiwrap_phpcgi - this script starts and stops the fcgiwrap && php-cgi instance
# # chkconfig: - 96 28
# description: fcgiwrap_phpcgi
# processname: fcgiwrap_phpcgi
c_script=/usr/local/bin/fcgiwrap_phpcgi.sh
retval=0
case "$1" in
start)
echo "starting cgi"
$c_script
retval=$?
;;
stop)
echo "stopping cgi"
killall -9 fcgiwrap
killall -9 php-cgi
retval=$?
;;
restart)
echo "restarting cgi"
killall -9 fcgiwrap
killall -9 php-cgi
$c_script
retval=$?
;;
*)
echo "usage: fcgiwrap_phpcgi "
exit 1
;;
esac
exit $retval
# chkconfig --add fcgiwrap_phpcgi
# chkconfig fcgiwrap_phpcgi on
# service fcgiwrap_phpcgi start
# chmod +x /etc/init.d/fcgiwrap_phpcgi
# chkconfig --add fcgiwrap_phpcgi
# chkconfig --level 2345 fcgiwrap_phpcgi on
# service fcgiwrap_phpcgi restart
# netstat -tulnp | grep -e '9000|10000'
tcp 0 0 127.0.0.1:9000 0.0.0.0:* listen 17588/php-cgi
tcp 0 0 127.0.0.1:10000 0.0.0.0:* listen 17600/fcgiwrap
Nginx環境下配置Nagios筆記
nginx php mysql環境已配置好,cacti環境已配置好,見 cacti安裝配置文件 下面看下nagios的安裝。1 建立nagios使用者及組 建立使用者組名為nagios用於從web介面執行外部命令。將nagios使用者和nginx使用者加入組中。usr sbin useradd na...
搭建基於nginx環境的nagios監控系統
搭建基於apache的nagios系統比較容易,網上的資料也比較多。可是在nginx環境下就有點費勁了,因為nginx本身不支援cgi,所以需要在三方程式的配合下,才能實現cgi的解析。準備工作 wget wget wget wget wget wget wget groupadd nagios u...
nginx支援動態模組
之前一直以為nginx只支援靜態模組,每次新增新模組的時候只能重新編譯,最近在看nginx的原始碼,發現新版nginx已經支援進行動態載入模組。通過模組動態載入指令load module,我們可以在執行中修改nginx的配置,指定要載入的第三方模組,然後reload,是不是方便了很多。core模組已...