前面的文章已经说过,NDOUtils必须使用2.0的版本才支持nagios4x,比较幸运的是该版本2014年就已经发布。

一.安装

#tar -axf ndoutils-2.0.0.tar.gz -C /usr/local/src/
#cd /usr/local/src/ndoutils-2.0.0
#./configure --prefix=/usr/local/nagios LDFLAGS=-L/usr/lib64/mysql --with-mysql-inc=/usr/include/mysql --with-mysql-lib=/usr/lib64/mysql --enable-mysql --disable-pgsql --with-ndo2db-user=nagios --with-ndo2db-group=nagios
#make
#cp ./src/ndomod-4x.o /usr/local/nagios/bin/ndomod.o
#cp ./src/ndo2db-4x /usr/local/nagios/bin/ndo2db
#cp ./config/ndo2db.cfg-sample /usr/local/nagios/etc/ndo2db.cfg
#cp ./config/ndomod.cfg-sample /usr/local/nagios/etc/ndomod.cfg
#chmod 774 /usr/local/nagios/bin/ndo*
#chown nagios:nagios /usr/local/nagios/bin/ndo*
#cp ./daemon-init /etc/init.d/ndo2db
修改启动脚本
#vi /etc/init.d/ndo2db
killproc_ndo2db ()
{
#kill $2 $Ndo2dbPID
kill `pidof ndo2db |cut -f1 -d " "` >/dev/null 2>&1
kill `pidof ndo2db |cut -f1 -d " "` >/dev/null 2>&1
}
stop)
echo "Stopping $servicename..."
#pid_ndo2db
killproc_ndo2db
#killproc_ndo2db ndo2db
#chmod +x /etc/init.d/ndo2db
#chkconfig --add ndo2db
#chkconfig --level 35 ndo2db on
#/etc/init.d/ndo2db start
二、初始化数据库
注意,为了后面与cacti和nagios结合在一起使用,需将初始化脚本中所有的数据库表明的前缀由nagios_修改为npc_
去掉所有“character set latin1”,这里ndoutils默认建表时,把所有varchar字段默认编码设置为latin1(iso-8859-1),latin1是单字节,可以存储中文,但是显示会乱码

这里使用的数据库与cacti使用的数据库必须为一个数据库

#mysql -unagios -p nagios</usr/local/src/ndoutils-2.0.0/db/mysql.sql

验证初始化是否成功:
mysql> use nagios;
mysql> show tables;
三、配置Nagios
(1)修改Nagios配置文件
# vim /usr/local/nagios/etc/nagios.cfg
增加如下配置
broker_module=/usr/local/nagios/bin/ndomod.o config_file=/usr/local/nagios/etc/ndomod.cfg
此外,请确保您的/usr/local/nagios/etc/nagios.cfg中有如下行出现,否则,请自行添加:
event_broker_options=-1 //为Nagios开启event broker
(2)配置数据库连接
#vim /usr/local/nagios/etc/ndo2db.cfg
socket_type=tcp
#socket_name=/usr/local/nagios/var/ndo.sock
db_name=nagios
db_user=nagios
db_pass=XXXX
db_prefix=npc_
#vim /usr/local/nagios/etc/ndomod.cfg
output=127.0.0.1
#output=/usr/local/nagios/var/ndo.sock
output_type=tcpsocket
#output=/usr/local/nagios/var/ndo.sock
//启动测试
#/etc/init.d/ndo2db restart
四、验证结果
使用官方提供的一个perl脚本可以验证nagios的监控数据是否成功写入mysql数据库,使用前先确认脚本中关于数据库的配置是否与实际情况相同,如有差异请自行修改
脚本地址
可以查看官网资料

#perl ndo2pnp.pl --user nagios -p XXXX --list-service