nagios + pnp4nagios 安装笔记

Nagios 是一款开源的电脑系统和网络监视工具,能有效监控 Windows 、 Linux 和 Unix 的主机状态,交换机路由器等网络设置,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。

最近比较流行的,就是 nagios + pnp4nagios 的组合模式, nagios 负责数据采集和监控, pnp4nagios 负责图表及历史记录展示。最新商业版的 nagiosXI ,其记录展示采用的也是 nagios + pnp4nagios 模式,只是 nagiosXI 把所有用到的插件都整合到了一起,免去了手动安装及调试的过程。其实通过手动安装,我们也能拥有类似的功能。

服务端安装

1、创建 nagios 用户并赋予 sudo 权限

一般情况下,能不用 root ,尽量不用。

1
2
3
4
5
6
7
8
9
10
11
groupadd nagios
useradd -g nagios nagios
passwd nagios
visudo

########添加sudo权限########
nagios ALL=(ALL) ALL
########添加sudo权限########

su nagios
cd

2、检查基础支持套件:

1
rpm -q gcc glibc glibc-common gd gd-devel openssl-devel perl httpd php php-gd xinetd rrdtool perl-Time-HiRes

如果找不到相关套件,请用 yum 进行依赖安装:

1
sudo yum install -y gcc glibc glibc-common gd gd-devel xinetd openssl-devel perl httpd php php-gd xinetd rrdtool perl-Time-HiRes

若服务器网络受限制或未购买 redhat 商业版服务的,可以使用软件包进行本地 yum 配置,具体请参考:

yum 源本地化配置

3、编译安装 nagios

下载 nagios ,由于 pnp4nagios 不支持 nagios4.x ,所以本次安装将采用覆盖面最广的 nagios3.x 。虽然网上有很多 nagios-cn 中文版,但还是建议大家使用官方稳定版,以提高稳定性和兼容性。

1
wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.5.1.tar.gz

解压并编译安装。

1
2
3
4
5
6
7
8
9
10
tar -zxvf nagios-3.5.1.tar.gz
cd nagios
sudo ./configure --prefix=/usr/local/nagios
sudo make all
sudo make install
sudo make install-init
sudo make install-commandmode
sudo make install-config
sudo make fullinstall
cd

4、设置开机启动权限

1
2
3
sudo chkconfig --add nagios
sudo chkconfig --level 35 nagios on
sudo chkconfig --list nagios

5、安装 nagios 插件

1
2
3
4
5
6
7
wget http://www.nagios-plugins.org/download/nagios-plugins-2.0.3.tar.gz
tar -zxvf nagios-plugins-2.0.3.tar.gz
cd nagios-plugins-2.0.3
sudo ./configure --prefix=/usr/local/nagios
sudo make
sudo make install
cd

6、安装 nrpe

1
2
3
4
5
6
7
8
9
10
wget http://liquidtelecom.dl.sourceforge.net/project/nagios/nrpe-2.x/nrpe-2.15/nrpe-2.15.tar.gz
tar -zxvf nrpe-2.15.tar.gz
cd nrpe-2.15
sudo ./configure --prefix=/usr/local/nagios
sudo make all
sudo make install
sudo make install-daemon
sudo make install-daemon-config
sudo make install-xinetd
cd

7、定义 check_nrpe 命令

修改 commands.cfg 文件,添加如下内容:

1
2
3
4
5
6
7
8
9
sudo vi /usr/local/nagios/etc/objects/commands.cfg

########commands.cfg########
#'check_nrpe' command definition
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
########commands.cfg########

8、更改目录权限

1
sudo chown -R nagios.nagios /usr/local/nagios

9、整合 Apache

1
sudo vi /etc/httpd/conf/httpd.conf

修改如下两个地方:

1
2
User nagios 
Group nagios
1
DirectoryIndex index.html index.php

10、设置登陆用户名和密码

1
sudo /usr/bin/htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

11、禁用防火墙并重启 nagios 和 Apache

1
2
3
4
sudo service iptables stop
sudo setenforce 0
sudo service nagios restart
sudo service httpd restart

至此, nagios 服务端的安装算是完成了,默认会自动监控本机运行情况。

nagios3.5首页

客户端安装

1、检查支持套件并安装 nagios 插件和 nrpe

安装过程执行服务端安装的1/2/5/6/8步即可。

2、添加信任IP

需要在两处地方添加服务端的信任IP,假定我之前装的服务端IP为:192.168.1.2

1
2
3
4
5
6
7
8
9
10
11
sudo vi /etc/xinetd.d/nrpe

########nrpe########
only_from = 127.0.0.1 192.168.1.2
########nrpe########

sudo vi /usr/local/nagios/etc/nrpe.cfg

########nrpe.cfg########
allowed_hosts=127.0.0.1,192.168.1.2
########nrpe.cfg########

3、添加启动端口

此操作需要切换到 root 用户才能执行。

1
2
3
sudo su -
echo "nrpe 5666/tcp #nrpe">>/etc/services
exit

4、关闭防火墙并重启 xinetd

1
2
3
sudo service iptables stop
sudo setenforce 0
sudo service xinetd restart

5、验证客户端

登录服务端,执行以下命令(假设客户端IP为:192.168.1.3):

1
2
3
4
5
/usr/local/nagios/libexec/check_nrpe -H 192.168.1.3

########返回版本号########
NRPE v2.15
########返回版本号########

如果有返回 nrpe 的版本号,那证明客户端已安装成功,在服务端进行 host 配置和 service 配置后,就能进行监控了。

nagios 服务端配置内容比复杂,后续再单独分析,下面先进行 pnp4nagios 的安装。

nagios 配置详解(20150601更新)

pnp4nagios 安装

以下操作均是在 nagios 服务端进行。

1、编译安装pnp4nagios

1
2
3
4
5
6
7
8
9
10
11
12
cd
wget http://sourceforge.net/projects/pnp4nagios/files/PNP-0.6/pnp4nagios-0.6.25.tar.gz
tar -zxvf pnp4nagios-0.6.25.tar.gz
cd pnp4nagios-0.6.25
sudo ./configure --prefix=/usr/local/pnp4nagios
sudo make all
sudo make install
sudo make install-webconf
sudo make install-config
sudo make install-init
sudo make fullinstall
cd

2、修改目录权限

由于不确定是否有新文件写入了 nagios ,所以顺便也把 nagios 目录再次赋权。

1
2
sudo chown -R nagios.nagios /usr/local/pnp4nagios
sudo chown -R nagios.nagios /usr/local/nagios

pnp4nagios 与 nagios 整合

1、打开数据记录功能

修改 nagios.cfg ,修改以下内容:

1
2
3
4
5
6
7
vi /usr/local/nagios/etc/nagios.cfg

########nagios.cfg########
process_performance_data=1
host_perfdata_command=process-host-perfdata
service_perfdata_command=process-service-perfdata
########nagios.cfg########

2、修改数据记录命令,让其记录到 pnp4nagios

修改 commands.cfg ,修改以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
vi /usr/local/nagios/etc/objects/commands.cfg

########commands.cfg########
# 'process-host-perfdata' command definition
define command{
command_name process-host-perfdata
command_line /usr/local/pnp4nagios/libexec/process_perfdata.pl -d HOSTPERFDATA
}

# 'process-service-perfdata' command definition
define command{
command_name process-service-perfdata
command_line /usr/local/pnp4nagios/libexec/process_perfdata.pl
}
########commands.cfg########

3、添加 pnp4nagios 记录模板

修改 templates.cfg 文件,添加以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
vi /usr/local/nagios/etc/objects/templates.cfg

########templates.cfg########
#pnp4nagios
define host {
name host-pnp
action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$' class='tips' rel='/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=_HOST_
register 0
#process_perf_data 1
}

define service {
name srv-pnp
action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$' class='tips' rel='/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=$SERVICEDESC$
register 0
#process_perf_data 1
}
########templates.cfg########

4、添加悬浮 tip

1
cp ~/pnp4nagios-0.6.25/contrib/ssi/status-header.ssi /usr/local/nagios/share/ssi/

5、在 host 和 service 定义中使用 pnp4nagios 模板

编辑 localhost.cfg ,找到 define host ,在 use 后面添加 host-pnp ;找到 define service ,在 use 后面添加 srv-pnp

1
2
3
4
5
6
7
vi /usr/local/nagios/etc/objects/localhost.cfg

########localhost.cfg########
use linux-server,host-pnp ; Name of host template to use
or
use local-service,srv-pnp ; Name of service template to use
########localhost.cfg########

6、移除 install.php 文件

1
2
cd /usr/local/pnp4nagios/share
mv install.php install.php_bak

7、修改 php 访问权限

1
sudo chown -R nagios.nagios /var/lib/php

8、重启 nagios 和 apache

1
2
sudo service nagios restart
sudo service httpd restart

从新打开 nagios 页面,就可以看到主机和服务监控旁边都出现了个图表图标,点击图标就可以进入 pnp4nagios 绘图界面了。

监控旁的图表图标

pnp4nagios绘图界面

由于并不是每个 nagios 默认监控的输出都符合 pnp4nagios 的绘图格式,所以可能会出现某些监控项目无法绘图的情况,这个不用担心,只要弄清 pnp4nagios 的绘图数据接收格式,可以通过自定义脚本来实现符合规格的输出,不过这要考验编程能力了。由于不涉及 nagios + pnp4nagios 的安装,以后有时间再单独详解。

如何自定义nagios监控?(20150604更新)

至此,nagios + pnp4nagios 的安装就结束了,have fun!