歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux管理 >> Linux配置 >> Nginx中搭建Nagios監控平台

Nginx中搭建Nagios監控平台

日期:2017/2/27 14:59:36   编辑:Linux配置

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 nagios
2、創建一個名為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界面登陸帳號及密碼

Linux/1727.html' target='_blank'>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/nagios
NGINX配置片斷如下
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

2、編譯並安裝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.108

6、重啟nrpe的方法
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/
Copyright © Linux教程網 All Rights Reserved