Nagios依賴PHP環境和perl環境。由於Nginx不支持Perl的CGI,這裡就需要先來搭建Perl環境。
一、給Nginx加上對Perl的CGI支持
讓Nginx支持Perl的CGI方法有好幾種,基本原理都是通過Perl的FCGI模塊實現。具體哪一個更好,目前沒時間驗證。下面的方法就是其中一種:
1、安裝FCGI模塊
wget http://search.cpan.org/CPAN/authors/id/F/FL/FLORA/FCGI-0.73.tar.gz tar xvzf FCGI-0.73.tar.gz cd FCGI-0.73 perl Makefile.PL make make install cd ..
wget http://search.cpan.org/CPAN/authors/id/G/GB/GBJK/FCGI-ProcManager-0.19.tar.gz tar xvzf FCGI-ProcManager-0.19.tar.gz cd FCGI-ProcManager-0.19 perl Makefile.PL make make install cd ..
wget http://search.cpan.org/CPAN/authors/id/G/GB/GBARR/IO-1.25.tar.gz tar zxvf IO-1.25.tar.gz cd IO-1.25 perl Makefile.PL make make install cd .. wget http://search.cpan.org/CPAN/authors/id/I/IN/INGY/IO-All-0.41.tar.gz tar zxvf IO-All-0.41.tar.gz cd IO-All-0.41 perl Makefile.PL make make install cd ..
這個腳本的目的就是產生一個PERL的FastCGI接口,讓Nginx可以以CGI方式處理Perl。
wget http://www.mike.org.cn/wp-content/uploads/2011/07/perl-fcgi.zip unzip perl-fcgi.zip cp perl-fcgi.pl /usr/local/webserver/nginx/注:建議把這個腳本放在Nginx安裝目錄。
修改腳本權限
chmod 755 /usr/local/webserver/nginx/perl-fcgi.pl
5、建立一個CGI啟動/停止腳本
這個SHELL腳本只是為了方便管理上面的Perl腳本。腳本中的www為nginx的運行用戶,請據自己的實際情況調整。
注意事項:不能用root用戶執行(會提示). 要用與Nginx相同身份的用戶執行。否則可能會在Nginx Log中提示 Permision Denied。
vi /usr/local/webserver/nginx/start_perl_cgi.sh #!/bin/bash #set -x dir=/usr/local/webserver/nginx/ stop () { #pkill -f $dir/perl-fcgi.pl kill $(cat $dir/logs/perl-fcgi.pid) rm $dir/logs/perl-fcgi.pid 2>/dev/null rm $dir/logs/perl-fcgi.sock 2>/dev/null echo "stop perl-fcgi done" } start () { rm $dir/now_start_perl_fcgi.sh 2>/dev/null chown www.www $dir/logs echo "$dir/perl-fcgi.pl -l $dir/logs/perl-fcgi.log -pid $dir/logs/perl-fcgi.pid -S $dir/logs/perl-fcgi.sock" >>$dir/now_start_perl_fcgi.sh chown www.www $dir/now_start_perl_fcgi.sh chmod u+x $dir/now_start_perl_fcgi.sh sudo -u www $dir/now_start_perl_fcgi.sh echo "start perl-fcgi done" } case $1 in stop) stop ;; start) start ;; restart) stop start ;; esac修改SHELL腳本權限
chmod 755 /usr/local/webserver/nginx/start_perl_cgi.sh啟動腳本
/usr/local/webserver/nginx/start_perl_cgi.sh start正常情況下在/usr/local/webserver/nginx/logs下生成perl-fcgi.sock這個文件,如果沒有生成,請檢查下上面的步聚。
二、安裝Nagios
A、安裝前准備
安裝的機器上必須有一個WEB服務,本文是在Nginx環境上安裝的。
下載nagios主程序和相關插件程序包
wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.3.tar.gz wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.15.tar.gz wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.12.tar.gz安裝GD庫(Nagios中的statusmap和trends模塊必須)
apt-get install libgd2-noxpm libgd2-noxpm-devB、Nagios監控端安裝
1、創建Nagios用戶及組
建立Nagios賬號
/usr/sbin/useradd -m -s /sbin/nologin nagios2、創建一個名為nagcmd的用戶組,用於從web接口執行外部命令。將Nagios用戶和Nginx用戶加入組中。
groupadd nagcmd usermod -a -G nagcmd nagios usermod -a -G nagcmd www注:上面的www是Nginx用戶所屬的組,如有不同請自行調整。
3、編譯安裝Nagios
tar zxvf nagios-3.2.3.tar.gz cd nagios-3.2.3 ./configure --with-command-group=nagcmd make make all make install make install-init make install-config make install-commandmode #這裡是在Nginx下運行Nagios,這一步就不用做了 make install-webconf cd ..注:
make install 用於安裝主要的程序、CGI及HTML文件
make install-init 用於生成init啟動腳本
make install-config 用於安裝示例配置文件
make install-commandmode 用於設置相應的目錄權限
make install-webconf 用於安裝Apache配置文件
4、驗證程序是否被正確安裝
切換目錄到安裝路徑,這裡是/usr/local/nagios,看是否存在etc、bin、 sbin、 share、 var這五個目錄,如果存在則可以表明程序被正確的安裝到系統了。
ls /usr/local/nagios/ bin/ etc/ sbin/ share/ var/注;bin–Nagios執行程序所在目錄,其中的nagios文件即為主程序。
5、配置NGINX
1)、配置Nagios Web界面登陸帳號及密碼
Linux/1727.html' target='_blank'>htpasswd -c /usr/local/nagios/etc/nagiospasswd mike如果你沒有htpasswd(這個工具由Apache安裝包所提供),可在線生成需要加密數據。
b)、創建加密驗證文件
vi /usr/local/nagios/etc/nagiospasswd #加入生成的加密數據,冒號前是用戶名,後面是加密後的密碼 mike:25JB.R7mXY96o修改Nagios配置文件,給新增的用戶增加訪問權限
vi /usr/local/nagios/etc/cgi.cfg #以下幾項中分別加入新增的用戶,多用戶用逗號分隔。 authorized_for_system_information=nagiosadmin,mike authorized_for_configuration_information=nagiosadmin,mike authorized_for_system_commands=nagiosadmin,mike authorized_for_all_services=nagiosadmin,mike authorized_for_all_hosts=nagiosadmin,mike authorized_for_all_service_commands=nagiosadmin,mike authorized_for_all_host_commands=nagiosadmin,mike
2)、修改NGINX配置,以支持WEB方式訪問Nagios
方法一:以http://ip方式訪問
NGINX配置片斷如下
server { listen 80; server_name 192.168.1.108; index index.html index.htm index.php; root /usr/local/nagios/share; auth_basic "Nagios Access"; auth_basic_user_file /usr/local/nagios/etc/nagiospasswd; location ~ .*\.(php|php5)?$ { #fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fcgi.conf; } location ~ .*\.(cgi|pl)?$ { gzip off; root /usr/local/nagios/sbin; rewrite ^/nagios/cgi-bin/(.*)\.cgi /$1.cgi break; fastcgi_pass unix:/usr/local/webserver/nginx/logs/perl-fcgi.sock; fastcgi_param SCRIPT_FILENAME /usr/local/nagios/sbin$fastcgi_script_name; fastcgi_index index.cgi; fastcgi_read_timeout 60; fastcgi_param REMOTE_USER $remote_user; include fcgi.conf; auth_basic "Nagios Access"; auth_basic_user_file /usr/local/nagios/etc/nagiospasswd; } location /nagios { alias /usr/local/nagios/share; auth_basic "Nagios Access"; auth_basic_user_file /usr/local/nagios/etc/nagiospasswd; } log_format wwwlogs '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" $http_x_forwarded_for'; access_log /data1/logs/access_www.log wwwlogs; }
方法二:以http://ip/nagios方式訪問
在WEB主目錄下創建一個軟鏈
ln -s /usr/local/nagios/share/ /data0/htdocs/www/nagiosNGINX配置片斷如下
server { listen 80; server_name 192.168.1.108; index index.html index.htm index.php; root /data0/htdocs/www; auth_basic "Nagios Access"; auth_basic_user_file /usr/local/nagios/etc/nagiospasswd; location ~ .*\.(php|php5)?$ { #fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fcgi.conf; } location ~ .*\.(cgi|pl)?$ { gzip off; root /usr/local/nagios/sbin; rewrite ^/nagios/cgi-bin/(.*)\.cgi /$1.cgi break; fastcgi_pass unix:/usr/local/webserver/nginx/logs/perl-fcgi.sock; fastcgi_param SCRIPT_FILENAME /usr/local/nagios/sbin$fastcgi_script_name; fastcgi_index index.cgi; fastcgi_read_timeout 60; fastcgi_param REMOTE_USER $remote_user; include fcgi.conf; auth_basic "Nagios Access"; auth_basic_user_file /usr/local/nagios/etc/nagiospasswd; } log_format wwwlogs '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" $http_x_forwarded_for'; access_log /data1/logs/access_www.log wwwlogs; }注:如果你的fastcgi的配置文件中沒有配置REMOTE_USER參數,一定要在nginx.conf中加上下面這個fastcgi的參數定義。
fastcgi_param REMOTE_USER $remote_user;如果沒有這個fastcgi的參數定義,Nagios就不能正確驗證你的登陸信息。網上大多數文章解決Nginx下Nagios登陸驗證失敗的方法 都是在Nagios的cgi.cfg配置文件(nagios/etc/cgi.cfg)中關掉驗證(use_authentication=0)或設置一 個缺省的登陸用戶(default_user_name=test),這兩種方法都是不安全的。
6、編譯並安裝Nagios插件
由於Nagios主程序只是提供一個運行框架,其具體監控是靠運行在其下的插件完成的,所以Nagios插件是必須安裝的。
tar zxvf nagios-plugins-1.4.15.tar.gz cd nagios-plugins-1.4.15 ./configure --with-nagios-user=nagios --with-nagios-group=nagios make make install驗證Nagios插件是否正確安裝
ls /usr/local//nagios/libexec顯示安裝的插件文件,即所有的插件都安裝在libexec這個目錄下。
7、啟動服務
啟動前先檢查下配置文件是否正確
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg如果沒有報錯,可以啟動Nagios服務
/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg查看Nagios運行狀態
/usr/local/nagios/bin/nagiostats
8、安裝NRPE
由於Nagios只能監測自己所在的主機的一些本地情況,例如,cpu負載、內存使用、硬盤使用等等。如果想要監測被監控的服務器上的這些本地情 況,就要用到NRPE。NRPE(Nagios Remote Plugin Executor)是Nagios的一個擴展,它被用於被監控的服務器上,向Nagios監控平台提供該服務器的一些本地的情況。NRPE可以稱為 Nagios的Linux客戶端。
由於NRPE是通過SSL方式在監控和被監控主機上進行數據傳輸的,所以必須先安裝ssl相關的軟件包。
apt-get install libssl-dev libssl0.9.8編譯安裝NRPE
tar zxvf nrpe-2.12.tar.gz cd nrpe-2.12 ./configure make all make install-plugin make install-daemon make install-daemon-config注:監控主機上只需要make install-plugin這一步就可以了。監控機上只要有一個check_nrpe插件用於連接被監控端nrpe的daemon就行了。
啟動NRPE
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d驗證NRPE是否正確安裝
/usr/local/nagios/libexec/check_nrpe -H localhost注:如果成功,會返回NRPE的版本號。
C、Nagios被控端安裝配置
1、創建Nagios用戶及組
建立Nagios賬號
/usr/sbin/useradd -m -s /sbin/nologin nagios
tar zxvf nagios-plugins-1.4.15.tar.gz cd nagios-plugins-1.4.15 ./configure --with-nagios-user=nagios --with-nagios-group=nagios make make install cd ..驗證程序是否被正確安裝:
ls /usr/local/nagios/libexec顯示安裝的插件文件,即所有的插件都安裝在libexec這個目錄下。
3、安裝NRPE
tar zxvf nrpe-2.12.tar.gz cd nrpe-2.12 ./configure make all make install-plugin make install-daemon make install-daemon-config cd ..
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d驗證NRPE是否正確安裝
/usr/local/nagios/libexec/check_nrpe -H localhost注:如果成功,會返回NRPE的版本號。
5、修改NRPE配置文件,讓監控主機可以訪問被監控主機的NRPE。
缺省NRPE配置文件中只允許本機訪問NRPE的Daemon
vi /usr/local/nagios/etc/nrpe.cfg #缺省為127.0.0.1,只能本機訪問 allowed_hosts=192.168.1.108
killall nrpe /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d轉載地址:http://www.mike.org.cn/articles/nginx-install-nagios-monitor-platform/