Nginx支援Nagios相關配置

2021-06-18 22:04:38 字數 4128 閱讀 6026

由於公司使用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模組已...