本文隻做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