天天看點

Nginx環境下建構Nagios監控平台

本文隻做Nginx下Nagiox安裝的說明,其它關于Nagios監控的詳細配置請參考我的另一篇文章[Ubuntu 10.04下建構Nagios監控平台 見 http://www.linuxidc.com/Linux/2011-07/38111.htm]

Nagios依賴PHP環境和perl環境。由于Nginx不支援Perl的CGI,這裡就需要先來搭建Perl環境。

一、給Nginx加上對Perl的CGI支援

讓Nginx支援Perl的CGI方法有好幾種,基本原理都是通過Perl的FCGI子產品實作。具體哪一個更好,目前沒時間驗證。下面的方法就是其中一種:

1、安裝FCGI子產品

1
2
3
4
5
6
7           
wget http://search.cpan.org/CPAN/authors/id/F/FL/FLORA/FCGI-0.73.tar.gztar xvzf FCGI-0.73.tar.gz cd FCGI-0.73 perl Makefile.PLmake make install cd ..           

2、安裝FCGI-ProcManager子產品

1
2
3
4
5
6
7           
wget http://search.cpan.org/CPAN/authors/id/G/GB/GBJK/FCGI-ProcManager-0.19.tar.gztar xvzf FCGI-ProcManager-0.19.tar.gz cd FCGI-ProcManager-0.19 perl Makefile.PL make make install cd ..           

3、安裝IO和IO::ALL子產品

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15           
wget http://search.cpan.org/CPAN/authors/id/G/GB/GBARR/IO-1.25.tar.gztar zxvf IO-1.25.tar.gzcd IO-1.25 perl Makefile.PLmake make install cd ..
 wget http://search.cpan.org/CPAN/authors/id/I/IN/INGY/IO-All-0.41.tar.gztar zxvf IO-All-0.41.tar.gzcd IO-All-0.41 perl Makefile.PLmake make install cd ..           

4、下載下傳Perl腳本

這個腳本的目的就是産生一個PERL的FastCGI接口,讓Nginx可以以CGI方式處理Perl。

下載下傳Perl腳本

1
2
3           
wget http://www.mike.org.cn/wp-content/uploads/2011/07/perl-fcgi.zipunzip perl-fcgi.zipcp perl-fcgi.pl /usr/local/webserver/nginx/           

注:建議把這個腳本放在Nginx安裝目錄。

修改腳本權限

1           
chmod 755 /usr/local/webserver/nginx/perl-fcgi.pl           

5、建立一個CGI啟動/停止腳本

這個SHELL腳本隻是為了友善管理上面的Perl腳本。腳本中的www為nginx的運作使用者,請據自己的實際情況調整。

注意事項:不能用root使用者執行(會提示). 要用與Nginx相同身份的使用者執行。否則可能會在Nginx Log中提示 Permision Denied。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41           
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/nullrm $dir/logs/perl-fcgi.sock 2>/dev/nullecho "stop perl-fcgi done" }  
start () { rm $dir/now_start_perl_fcgi.sh 2>/dev/null
 chown www.www $dir/logsecho "$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.shchmod u+x $dir/now_start_perl_fcgi.sh
 sudo -u www $dir/now_start_perl_fcgi.shecho "start perl-fcgi done" }  case $1 in stop) stop;; start) start;; restart) stop
start;; esac           

修改SHELL腳本權限

1           
chmod 755 /usr/local/webserver/nginx/start_perl_cgi.sh           

啟動腳本

1           
/usr/local/webserver/nginx/start_perl_cgi.sh start           

正常情況下在/usr/local/webserver/nginx/logs下生成perl-fcgi.sock這個檔案,如果沒有生成,請檢查下上面的步聚。

二、安裝Nagios

A、安裝前準備

安裝的機器上必須有一個WEB服務,本文是在Nginx環境上安裝的。

下載下傳nagios主程式和相關插件程式包

1
2
3           
wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.3.tar.gzwget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.15.tar.gzwget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.12.tar.gz           

安裝GD庫(Nagios中的statusmap和trends子產品必須)

1           
apt-get install libgd2-noxpm libgd2-noxpm-dev           

B、Nagios監控端安裝

1、建立Nagios使用者及組

建立Nagios賬号

1           
/usr/sbin/useradd -m -s /sbin/nologin nagios           

2、建立一個名為nagcmd的使用者組,用于從web接口執行外部指令。将Nagios使用者和Nginx使用者加入組中。

1
2
3           
groupadd nagcmd
usermod -a -G nagcmd nagios
usermod -a -G nagcmd www           

注:上面的www是Nginx使用者所屬的組,如有不同請自行調整。

3、編譯安裝Nagios

1
2
3
4
5
6
7
8
9
10
11
12           
tar zxvf nagios-3.2.3.tar.gzcd nagios-3.2.3
./configure --with-command-group=nagcmdmake make allmake install make install-initmake install-configmake install-commandmode#這裡是在Nginx下運作Nagios,這一步就不用做了 make install-webconfcd ..           

注: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這五個目錄,如果存在則可以表明程式被正确的安裝到系統了。

1
2           
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界面登陸帳号及密碼

1           
htpasswd -c /usr/local/nagios/etc/nagiospasswd mike           

如果你沒有htpasswd(這個工具由Apache安裝包所提供),可線上生成需要加密資料。

a)、通路http://www.4webhelp.net/us/password.php生成需要加密資料

b)、建立加密驗證檔案

1
2
3
4           
vi /usr/local/nagios/etc/nagiospasswd
 #加入生成的加密資料,冒号前是使用者名,後面是加密後的密碼 mike:25JB.R7mXY96o           

修改Nagios配置檔案,給新增的使用者增加通路權限

1
2
3
4
5
6
7
8
9
10           
vi /usr/local/nagios/etc/cgi.cfg
 #以下幾項中分别加入新增的使用者,多使用者用逗号分隔。 authorized_for_system_information=nagiosadmin,mikeauthorized_for_configuration_information=nagiosadmin,mikeauthorized_for_system_commands=nagiosadmin,mikeauthorized_for_all_services=nagiosadmin,mikeauthorized_for_all_hosts=nagiosadmin,mikeauthorized_for_all_service_commands=nagiosadmin,mikeauthorized_for_all_host_commands=nagiosadmin,mike           

2)、修改NGINX配置,以支援WEB方式通路Nagios

方法一:以http://ip方式通路

NGINX配置片斷如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43           
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主目錄下建立一個軟鍊

1           
ln -s  /usr/local/nagios/share/  /data0/htdocs/www/nagios           

NGINX配置片斷如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36           
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的參數定義。

1           
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插件是必須安裝的。

1
2
3
4
5           
tar zxvf nagios-plugins-1.4.15.tar.gzcd nagios-plugins-1.4.15
./configure --with-nagios-user=nagios --with-nagios-group=nagiosmake make install           

驗證Nagios插件是否正确安裝

1           
ls /usr/local//nagios/libexec           

顯示安裝的插件檔案,即所有的插件都安裝在libexec這個目錄下。

7、啟動服務

啟動前先檢查下配置檔案是否正确

1           
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg           

如果沒有報錯,可以啟動Nagios服務

1           
/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg           

檢視Nagios運作狀态

1           
/usr/local/nagios/bin/nagiostats           

8、安裝NRPE

由于Nagios隻能監測自己所在的主機的一些本地情況,例如,cpu負載、記憶體使用、硬碟使用等等。如果想要監測被監控的伺服器上的這些本地情況,就要用到NRPE。NRPE(Nagios Remote Plugin Executor)是Nagios的一個擴充,它被用于被監控的伺服器上,向Nagios監控平台提供該伺服器的一些本地的情況。NRPE可以稱為 Nagios的Linux用戶端。

由于NRPE是通過SSL方式在監控和被監控主機上進行資料傳輸的,是以必須先安裝ssl相關的軟體包。

1           
apt-get install libssl-dev libssl0.9.8           

編譯安裝NRPE

1
2
3
4
5
6
7           
tar zxvf nrpe-2.12.tar.gzcd nrpe-2.12 ./configuremake allmake install-pluginmake install-daemonmake install-daemon-config           

注:監控主機上隻需要make install-plugin這一步就可以了。監控機上隻要有一個check_nrpe插件用于連接配接被監控端nrpe的daemon就行了。

啟動NRPE

1           
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d           

驗證NRPE是否正确安裝

1           
/usr/local/nagios/libexec/check_nrpe -H localhost           

注:如果成功,會傳回NRPE的版本号。

C、Nagios被控端安裝配置

1、建立Nagios使用者及組

建立Nagios賬号

1           
/usr/sbin/useradd -m -s /sbin/nologin nagios           

2、編譯并安裝Nagios插件

1
2
3
4
5
6           
tar zxvf nagios-plugins-1.4.15.tar.gzcd nagios-plugins-1.4.15
./configure --with-nagios-user=nagios --with-nagios-group=nagiosmake make install cd ..           

驗證程式是否被正确安裝:

1           
ls /usr/local/nagios/libexec           

顯示安裝的插件檔案,即所有的插件都安裝在libexec這個目錄下。

3、安裝NRPE

1
2
3
4
5
6
7
8           
tar zxvf nrpe-2.12.tar.gzcd nrpe-2.12 ./configuremake allmake install-pluginmake install-daemonmake install-daemon-configcd ..           

4、啟動NRPE

1           
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d           

驗證NRPE是否正确安裝

1           
/usr/local/nagios/libexec/check_nrpe -H localhost           

注:如果成功,會傳回NRPE的版本号。

5、修改NRPE配置檔案,讓監控主機可以通路被監控主機的NRPE。

預設NRPE配置檔案中隻允許本機通路NRPE的Daemon

1
2
3
4           
vi /usr/local/nagios/etc/nrpe.cfg
 #預設為127.0.0.1,隻能本機通路 allowed_hosts=192.168.1.108           

6、重新開機nrpe的方法

1
2           
killall nrpe/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d           

轉載于:https://my.oschina.net/willSoft/blog/40174