nagios + pnp4nagios 安装笔记
Nagios 是一款开源的电脑系统和网络监视工具,能有效监控 Windows 、 Linux 和 Unix 的主机状态,交换机路由器等网络设置,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。
最近比较流行的,就是 nagios + pnp4nagios
的组合模式, nagios 负责数据采集和监控, pnp4nagios 负责图表及历史记录展示。最新商业版的 nagiosXI ,其记录展示采用的也是 nagios + pnp4nagios
模式,只是 nagiosXI 把所有用到的插件都整合到了一起,免去了手动安装及调试的过程。其实通过手动安装,我们也能拥有类似的功能。
服务端安装
1、创建 nagios 用户并赋予 sudo 权限
一般情况下,能不用 root ,尽量不用。
groupadd nagios
useradd -g nagios nagios
passwd nagios
visudo
########添加sudo权限########
nagios ALL=(ALL) ALL
########添加sudo权限########
su nagios
cd
2、检查基础支持套件:
rpm -q gcc glibc glibc-common gd gd-devel openssl-devel perl httpd php php-gd xinetd rrdtool perl-Time-HiRes
如果找不到相关套件,请用 yum 进行依赖安装:
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 配置,具体请参考:
3、编译安装 nagios
下载 nagios ,由于 pnp4nagios 不支持 nagios4.x ,所以本次安装将采用覆盖面最广的 nagios3.x 。虽然网上有很多 nagios-cn 中文版,但还是建议大家使用官方稳定版,以提高稳定性和兼容性。
wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.5.1.tar.gz
解压并编译安装。
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、设置开机启动权限
sudo chkconfig --add nagios
sudo chkconfig --level 35 nagios on
sudo chkconfig --list nagios
5、安装 nagios 插件
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
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
文件,添加如下内容:
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、更改目录权限
sudo chown -R nagios.nagios /usr/local/nagios
9、整合 Apache
sudo vi /etc/httpd/conf/httpd.conf
修改如下两个地方:
User nagios
Group nagios
DirectoryIndex index.html index.php
10、设置登陆用户名和密码
sudo /usr/bin/htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
11、禁用防火墙并重启 nagios 和 Apache
sudo service iptables stop
sudo setenforce 0
sudo service nagios restart
sudo service httpd restart
至此, nagios 服务端的安装算是完成了,默认会自动监控本机运行情况。
## 客户端安装
1、检查支持套件并安装 nagios 插件和 nrpe
安装过程执行服务端安装的1/2/5/6/8步即可。
2、添加信任IP
需要在两处地方添加服务端的信任IP,假定我之前装的服务端IP为:192.168.1.2
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 用户才能执行。
sudo su -
echo "nrpe 5666/tcp #nrpe">>/etc/services
exit
4、关闭防火墙并重启 xinetd
sudo service iptables stop
sudo setenforce 0
sudo service xinetd restart
5、验证客户端
登录服务端,执行以下命令(假设客户端IP为:192.168.1.3
):
/usr/local/nagios/libexec/check_nrpe -H 192.168.1.3
########返回版本号########
NRPE v2.15
########返回版本号########
如果有返回 nrpe 的版本号,那证明客户端已安装成功,在服务端进行 host 配置和 service 配置后,就能进行监控了。
nagios 服务端配置内容比复杂,后续再单独分析,下面先进行 pnp4nagios 的安装。
pnp4nagios 安装
以下操作均是在 nagios 服务端进行。
1、编译安装pnp4nagios
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 目录再次赋权。
sudo chown -R nagios.nagios /usr/local/pnp4nagios
sudo chown -R nagios.nagios /usr/local/nagios
pnp4nagios 与 nagios 整合
1、打开数据记录功能
修改 nagios.cfg
,修改以下内容:
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
,修改以下内容:
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
文件,添加以下内容:
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
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
:
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 文件
cd /usr/local/pnp4nagios/share
mv install.php install.php_bak
7、修改 php 访问权限
sudo chown -R nagios.nagios /var/lib/php
8、重启 nagios 和 apache
sudo service nagios restart
sudo service httpd restart
从新打开 nagios 页面,就可以看到主机和服务监控旁边都出现了个图表图标,点击图标就可以进入 pnp4nagios 绘图界面了。


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