nginx+nagios搭建 两篇文档
安装 php-fpm 妹的。
http://www.open-open.com/lib/view/1328680567780
http://blog.linuxeye.com/312.html
一、
http://www.open-open.com/lib/view/1328680567780
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
.gz
tar
xvzf FCGI-0.73.
tar
.gz
cd
FCGI-0.73
perl Makefile.PL
make
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
.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模块
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
.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。
1
2
3
|
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安装目录。
修改脚本权限
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/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脚本权限
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
.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模块必须)
1
|
apt-get
install
libgd2-noxpm libgd2-noxpm-dev
|
B、Nagios监控端安装
1、创建Nagios用户及组
建立Nagios账号
1
|
/usr/sbin/useradd
-m -s
/sbin/nologin
nagios
|
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
.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这五个目录,如果存在则可以表明程序被正确的安装到系统了。
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,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配置片断如下
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
.gz
cd
nagios-plugins-1.4.15
.
/configure
--with-nagios-user=nagios --with-nagios-group=nagios
make
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
.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
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
.gz
cd
nagios-plugins-1.4.15
.
/configure
--with-nagios-user=nagios --with-nagios-group=nagios
make
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
.gz
cd
nrpe-2.12
.
/configure
make
all
make
install
-plugin
make
install
-daemon
make
install
-daemon-config
cd
..
|
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的方法
killall nrpe
/usr/local/nagios/bin/nrpe
-c
/usr/local/nagios/etc/nrpe
.cfg -d
二、
http://blog.linuxeye.com/312.html
本文基于《LNMP最新源码安装脚本》,Nagios依赖PHP环境和perl环境,由于Nginx不支持Perl的CGI,需先来搭建Perl环境,Nagios原理介绍略。
1、下载最新稳定源码包和Perl脚本
mkdir nagios-cacti cd nagios-cacti wget http://www.cpan.org/modules/by-module/FCGI/FCGI-0.74.tar.gz wget http://www.cpan.org/authors/id/B/BO/BOBTFISH/FCGI-ProcManager-0.24.tar.gz wget http://blog.linuxeye.com/wp-content/uploads/2013/04/perl-fcgi.pl wget http://jaist.dl.sourceforge.net/project/nagios/nagios-3.x/nagios-3.5.0/nagios-3.5.0.tar.gz wget http://nchc.dl.sourceforge.net/project/nagiosplug/nagiosplug/1.4.16/nagios-plugins-1.4.16.tar.gz wget http://nchc.dl.sourceforge.net/project/nagios/nrpe-2.x/nrpe-2.14/nrpe-2.14.tar.gz
2、Nginx对Perl的CGI支持
Nginx支持Perl的CGI方法有好几种,基本原理都是通过Perl的FCGI模块实现,下面的方法就是其中一种:
安装FCGI模块
tar xzf FCGI-0.74.tar.gz cd FCGI-0.74 perl Makefile.PL make && make install cd ../
安装FCGI-ProcManager模块
tar xzf FCGI-ProcManager-0.24.tar.gz cd FCGI-ProcManager-0.24 perl Makefile.PL make && make install cd ../
Perl脚本
cp perl-fcgi.pl /usr/local/nginx chmod +x /usr/local/nginx/perl-fcgi.pl /usr/local/nginx/perl-fcgi.pl > /usr/local/nginx/logs/perl-fcgi.log 2>&1 & #启动Perl chmod 777 /usr/local/nginx/logs/perl-fcgi.sock #Nginx Log中提示Permision Denied方法 cd ../
3、Nagios安装(服务端)
useradd -s /sbin/nologin nagios groupadd nagcmd usermod -a -G nagcmd nagios usermod -a -G nagcmd www tar xzf nagios-3.5.0.tar.gz cd nagios yum -y install gd-devel ./configure --prefix=/usr/local/nagios --with-command-group=nagcmd make all make install #用于安装主要的程序、CGI及HTML文件 make install-init #用于生成init启动脚本 make install-config #用于安装示例配置文件 make install-commandmode #用于设置相应的目录权限 chkconfig --add nagios chkconfig nagios on cd ../
Nagios主程序只是提供一个运行框架,其具体监控是靠运行在其下的插件完成的,Nagios插件必须安装
tar xzf nagios-plugins-1.4.16.tar.gz cd nagios-plugins-1.4.16 ./configure --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios make && make install cd ../
由于Nagios只能监测自己所在的主机的一些本地情况,例如,cpu负载、内存使用、硬盘使用等等。如果想要监测被监控的服务器上的这些本地情况,就要
用到NRPE。NRPE(Nagios Remote Plugin
Executor)是Nagios的一个扩展,它被用于被监控的服务器上,向Nagios监控平台提供该服务器的一些本地的情况。NRPE可以称为
Nagios的Linux客户端。
tar xzf nrpe-2.14.tar.gz cd nrpe-2.14 ./configure make && make install cp sample-config/nrpe.cfg /usr/local/nagios/etc/ chown nagios.nagios /usr/local/nagios/etc/nrpe.cfg cd ../
4、Nginx配置(服务端)
ln -s /usr/local/nagios/share /data/admin/nagios
以http://www.linuxeye.com/nagios,需要建立软链接,服务nginx.conf配置文件如下:
################http://www.linuxeye.com/nagios######################### server { listen 80; server_name _; access_log /dev/null; root /data/admin; index index.php; location ~ .*\.(php|php5)?$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi.conf; } location ~ .*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ { expires 30d; } location ~ .*\.(js|css)?$ { expires 1h; } location /status { stub_status on; } location ~ .*\.(cgi|pl)?$ { auth_basic "Nagios Access"; auth_basic_user_file /usr/local/nagios/etc/htpasswd.users; gzip off; root /usr/local/nagios/sbin; rewrite ^/nagios/cgi-bin/(.*)\.cgi /$1.cgi break; fastcgi_pass unix:/usr/local/nginx/logs/perl-fcgi.sock; fastcgi_param SCRIPT_FILENAME /usr/local/nagios/sbin$fastcgi_script_name; fastcgi_index index.cgi; fastcgi_param REMOTE_USER $remote_user; fastcgi_param HTTP_ACCEPT_LANGUAGE en_US; include fastcgi_params; fastcgi_read_timeout 60; } }
以http://nagios.linuxeye.com服务nginx.conf配置文件如下:
################http://nagios.linuxeye.com############################## server { listen 80; server_name nagios.linuxeye.com; access_log logs/nagios_access.log combined; auth_basic "Nagios Access"; auth_basic_user_file /usr/local/nagios/etc/htpasswd.users; location / { root /usr/local/nagios/share; index index.html index.htm index.php; } location ~ .*\.(php|php5)?$ { root /usr/local/nagios/share; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi.conf; } location /nagios { alias /usr/local/nagios/share; } location /cgi-bin/images { alias /usr/local/nagios/share/images; } location /cgi-bin/stylesheets { alias /usr/local/nagios/share/stylesheets; } location /cgi-bin { alias /usr/local/nagios/sbin; } location ~ .*\.(cgi|pl)?$ { gzip off; root /usr/local/nagios/sbin; rewrite ^/nagios/cgi-bin/(.*)\.cgi /$1.cgi break; fastcgi_pass unix:/usr/local/nginx/logs/nginx-fcgi.sock; fastcgi_param SCRIPT_FILENAME /usr/local/nagios/sbin$fastcgi_script_name; fastcgi_index index.cgi; fastcgi_param REMOTE_USER $remote_user; fastcgi_param HTTP_ACCEPT_LANGUAGE en_US; include fastcgi_params; fastcgi_read_timeout 60; } }
#创建web验证用户
在有安装apache服务器用htpasswd或者在线生成
/usr/local/apache/bin/htpasswd -nb admin 123456 > /usr/local/nagios/etc/htpasswd.users chown nagios.nagios /usr/local/nagios/etc/htpasswd.users
5、服务端配置文件修改
NRPE
sed -i 's@allowed_hosts=.*$@allowed_hosts=127.0.0.1,192.168.1.114@g' /usr/local/nagios/etc/nrpe.cfg sed -i 's@command[check_hda1]@#command[check_hda1]@g' /usr/local/nagios/etc/nrpe.cfg sed -i '223a command[check_df]=/usr/local/nagios/libexec/check_disk -w 20 -c 10' /usr/local/nagios/etc/nrpe.cfg sed -i '224a command[check_cpu_procs]=/usr/local/nagios/libexec/check_procs -w 50 -c 90 --metric=CPU' /usr/local/nagios/etc/nrpe.cfg sed -i '225a command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 5%' /usr/local/nagios/etc/nrpe.cfg echo '/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d' >> /etc/rc.local /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d #启动nrpe
#修改配置文件归类
sed -i 's@cfg_file=/usr/local/nagios/etc/objects/templates.cfg@#cfg_file=/usr/local/nagios/etc/objects/templates.cfg@g' /usr/local/nagios/etc/nagios.cfg sed -i 's@cfg_file=/usr/local/nagios/etc/objects/localhost.cfg@#cfg_file=/usr/local/nagios/etc/objects/localhost.cfg@g' /usr/local/nagios/etc/nagios.cfg sed -i '32a cfg_file=/usr/local/nagios/etc/objects/hosts.cfg' /usr/local/nagios/etc/nagios.cfg sed -i '33a cfg_file=/usr/local/nagios/etc/objects/hostgroups.cfg' /usr/local/nagios/etc/nagios.cfg sed -i '34a cfg_file=/usr/local/nagios/etc/objects/contactsgroups.cfg' /usr/local/nagios/etc/nagios.cfg sed -i '35a cfg_file=/usr/local/nagios/etc/objects/services.cfg' /usr/local/nagios/etc/nagios.cfg
#命令检查时间间隔
sed -i 's@^command_check_interval.*$@command_check_interval=10s@g' /usr/local/nagios/etc/nagios.cfg
#指定用户admin可以通过浏览器操纵nagios服务的关闭、重启等各种操作
sed -i 's@authorized_for_system_information=.*$@authorized_for_system_information=admin@g' /usr/local/nagios/etc/cgi.cfg sed -i 's@authorized_for_configuration_information=.*$@authorized_for_configuration_information=admin@g' /usr/local/nagios/etc/cgi.cfg sed -i 's@authorized_for_system_commands=.*$@authorized_for_system_commands=admin@g' /usr/local/nagios/etc/cgi.cfg sed -i 's@authorized_for_all_services=.*$@authorized_for_all_services=admin@g' /usr/local/nagios/etc/cgi.cfg sed -i 's@authorized_for_all_hosts=.*$@authorized_for_all_hosts=admin@g' /usr/local/nagios/etc/cgi.cfg sed -i 's@authorized_for_all_service_commands=.*$@authorized_for_all_service_commands=admin@g' /usr/local/nagios/etc/cgi.cfg sed -i 's@authorized_for_all_host_commands=.*$@authorized_for_all_host_commands=admin@g' /usr/local/nagios/etc/cgi.cfg
#hosts.cfg
cat > /usr/local/nagios/etc/objects/hosts.cfg << EOF define host { host_name linux4 alias nagios-server address 192.168.1.114 contact_groups sagroup check_command check-host-alive max_check_attempts 10 notification_interval 5 notification_period 24x7 notification_options d,u,r } define host { host_name linux3 alias 192.168.1.113 address 192.168.1.113 contact_groups sagroup check_command check-host-alive max_check_attempts 10 notification_interval 5 notification_period 24x7 notification_options d,u,r } EOF chown nagios.nagios /usr/local/nagios/etc/objects/hosts.cfg chmod 664 /usr/local/nagios/etc/objects/hosts.cfg
#hostgroups.cfg
cat > /usr/local/nagios/etc/objects/hostgroups.cfg << EOF define hostgroup { hostgroup_name sa-servers alias sa servers members linux4,linux3 } EOF chown nagios.nagios /usr/local/nagios/etc/objects/hostgroups.cfg chmod 664 /usr/local/nagios/etc/objects/hostgroups.cfg
#contacts.cfg
cp /usr/local/nagios/etc/objects/contacts.cfg /usr/local/nagios/etc/objects/contacts.cfg.bk cat > /usr/local/nagios/etc/objects/contacts.cfg << EOF define contact { contact_name admin alias system administrator service_notification_period 24x7 host_notification_period 24x7 service_notification_options w,u,c,r host_notification_options d,u,r host_notification_commands notify-host-by-email service_notification_commands notify-service-by-email email admin@linuxeye.com } EOF
#services.cfg
cat > /usr/local/nagios/etc/objects/services.cfg << EOF define service { host_name linux4,linux3 service_description check-host-alive check_command check-host-alive check_period 24x7 max_check_attempts 4 normal_check_interval 3 retry_check_interval 2 contact_groups sagroup notification_interval 10 notification_period 24x7 notification_options w,u,c,r } define service { host_name linux4,linux3 service_description check_http check_command check_http check_period 24x7 max_check_attempts 4 normal_check_interval 3 retry_check_interval 2 contact_groups sagroup notification_interval 10 notification_period 24x7 notification_options w,u,c,r } define service{ host_name linux4,linux3 service_description check_ssh check_command check_ssh max_check_attempts 4 normal_check_interval 3 retry_check_interval 2 check_period 24x7 notification_interval 10 notification_period 24x7 notification_options w,u,c,r contact_groups sagroup } define service{ host_name linux4,linux3 service_description check-disk check_command check_nrpe!check_df max_check_attempts 4 normal_check_interval 3 retry_check_interval 2 check_period 24x7 notification_interval 10 notification_period 24x7 notification_options w,u,c,r contact_groups sagroup } define service{ host_name linux4,linux3 service_description check_cpu_procs check_command check_nrpe!check_cpu_procs max_check_attempts 4 normal_check_interval 3 retry_check_interval 2 check_period 24x7 notification_interval 10 notification_period 24x7 notification_options w,u,c,r contact_groups sagroup } define service{ host_name linux4,linux3 service_description check_load check_command check_nrpe!check_load max_check_attempts 4 normal_check_interval 3 retry_check_interval 2 check_period 24x7 notification_interval 10 notification_period 24x7 notification_options w,u,c,r contact_groups sagroup } define service{ host_name linux4,linux3 service_description check_users check_command check_nrpe!check_users max_check_attempts 4 normal_check_interval 3 retry_check_interval 2 check_period 24x7 notification_interval 10 notification_period 24x7 notification_options w,u,c,r contact_groups sagroup } define service{ host_name linux4,linux3 service_description check_swap check_command check_nrpe!check_swap max_check_attempts 4 normal_check_interval 3 retry_check_interval 2 check_period 24x7 notification_interval 10 notification_period 24x7 notification_options w,u,c,r contact_groups sagroup } define service{ host_name linux4,linux3 service_description check_zombie_procs check_command check_nrpe!check_zombie_procs max_check_attempts 4 normal_check_interval 3 retry_check_interval 2 check_period 24x7 notification_interval 10 notification_period 24x7 notification_options w,u,c,r contact_groups sagroup } EOF chown nagios.nagios /usr/local/nagios/etc/objects/services.cfg chmod 664 /usr/local/nagios/etc/objects/services.cfg
#commands.cfg
echo 'define command{ command_name check_nrpe command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ }' >> /usr/local/nagios/etc/objects/commands.cfg
#contactsgroups.cfg
cat > /usr/local/nagios/etc/objects/contactsgroups.cfg << EOF define contactgroup { contactgroup_name sagroup alias system administrator group members admin } EOF chown nagios.nagios /usr/local/nagios/etc/objects/contactsgroups.cfg chmod 664 /usr/local/nagios/etc/objects/contactsgroups.cfg
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg #检查配置是否有错误 service nagios start
6、被监控端(客户端)
mkdir nagios cd nagios wget http://nchc.dl.sourceforge.net/project/nagiosplug/nagiosplug/1.4.16/nagios-plugins-1.4.16.tar.gz wget http://nchc.dl.sourceforge.net/project/nagios/nrpe-2.x/nrpe-2.14/nrpe-2.14.tar.gz
useradd -M -s /sbin/nologin nagios tar xzf nagios-plugins-1.4.16.tar.gz cd nagios-plugins-1.4.16 ./configure --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios make && make install cd ../
tar xzf nrpe-2.14.tar.gz cd nrpe-2.14 ./configure make && make install mkdir /usr/local/nagios/etc cp sample-config/nrpe.cfg /usr/local/nagios/etc/ cd ../
sed -i 's@allowed_hosts=.*$@allowed_hosts=192.168.1.114@g' /usr/local/nagios/etc/nrpe.cfg sed -i 's@command[check_hda1]=@#command[check_hda1]=@' /usr/local/nagios/etc/nrpe.cfg sed -i '224a command[check_disk]=/usr/local/nagios/libexec/check_disk -w 20 -c 10' /usr/local/nagios/etc/nrpe.cfg sed -i '225a command[check_cpu_procs]=/usr/local/nagios/libexec/check_procs -w 50 -c 90 --metric=CPU' /usr/local/nagios/etc/nrpe.cfg sed -i '226a command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 5%' /usr/local/nagios/etc/nrpe.cfg echo '/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d' >> /etc/rc.local /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d iptables -A INPUT -p tcp -s 192.168.1.114 -m state --state NEW -m tcp --dport 5666 -j ACCEPT
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY