在Nginx中搭建Nagios監控平臺
本文只做Nginx下Nagiox安裝的說明,其它關于Nagios監控的詳細配置請參考我的另一篇文章[Ubuntu 10.04下構建Nagios監控平臺]
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 ..2、安裝FCGI-ProcManager模塊
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 ..3、安裝IO和IO::ALL模塊
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 ..4、下載Perl腳本
這個腳本的目的就是產生一個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-dev
B、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文件即為主程序。
etc–Nagios配置文件位置
sbin–Nagios cgi文件所在目錄,也就是執行外部命令所需文件所在的目錄
Share–Nagios網頁文件所在的目錄
var–Nagios日志文件、spid 等文件所在的目錄
var/archives–日志歸檔目錄
var/rw–用來存放外部命令文件
5、配置NGINX
1)、配置Nagios Web界面登陸帳號及密碼
htpasswd -c /usr/local/nagios/etc/nagiospasswd mike如果你沒有htpasswd(這個工具由Apache安裝包所提供),可在線生成需要加密數據。
a)、訪問http://www.4webhelp.net/us/password.php生成需要加密數據
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 nagios2、編譯并安裝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 ..4、啟動NRPE
/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.1086、重啟nrpe的方法
killall nrpe /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d三、參考文檔
http://www.google.com
http://www.linuxidc.com/Linux/2011-05/36092.htm
http://bbs.linuxtone.org/forum.php?mod=viewthread&tid=7404&page=1
http://www.xtgly.com/2010/09/21/centos-5-5-nginx-nagios監控端和被控端安裝配置指南.htm
http://www.xtgly.com/2010/09/20/nginx-fastcgi-perl-pl、cgi支持.htm
原文出處:http://www.mike.org.cn/articles/nginx-install-nagios-monitor-platform/