主要步骤:
1、安装ndoutils,把nagios数据写到mysql。
2、在cacti安装npc插件,查看nagios的数据。

一、安装
1、安装ndoutils的依赖包
(1)安装DBI
wgethttp://search.cpan.org/CPAN/authors/id/T/TI/TIMB/DBI-1.616.tar.gz
tar-zxvfDBI-1.616.tar.gz
cdDBI-1.616
perlMakefile.PL
make&&makeinstall

(2)安装DBD-mysql
wgethttp://search.cpan.org/CPAN/authors/id/C/CA/CAPTTOFU/DBD-mysql-4.018.tar.gz
tarxvfDBD-mysql-4.018.tar.gz-C/usr/local/soft
cdDBD-mysql-4.018
perlMakefile.PL--mysql_config=/usr/local/mysql/bin--with-mysql=/usr/local/mysql--mysql_config=/usr/local/mysql/bin/mysql_config
make&&makeinstall

2、安装ndoutils
ndoutils作用,把nagios的数据写到mysql,集成nagios到cacti的关健的一部分。

(1)下载编译
wgethttp://nchc.dl.sourceforge.net/project/nagios/ndoutils-1.x/ndoutils-1.4b9/ndoutils-1.4b9.tar.gz
tar-zxvfndoutils-1.4b9.tar.gz
cdndoutils-1.4b9
./configure--prefix=/usr/local/nagios--enable-mysql--disable-pgsqlLDFLAGS=-L/usr/local/mysql/lib--with-mysql-lib=/usr/local/mysql/lib--with-mysql=/usr/local/mysql

make提示找不到mysql.h:
cpinclude/config.hinclude/config.h.bak
viinclude/config.h

#include<mysql.h>
#include<errmsg.h>
改为
#include</usr/local/mysql/include/mysql.h>
#include</usr/local/mysql/include/errmsg.h>
make(注:这里不需要makeinstall)

复制执行及配置文件
cpconfig/ndomod.cfg-sample/usr/local/nagios/etc/ndomod.cfg
cpconfig/ndo2db.cfg-sample/usr/local/nagios/etc/ndo2db.cfg

cdsrc
cpndomod-3x.ondo2db-3xlog2ndofile2sock/usr/local/nagios/bin

(2)配置nagios主文件
vi/usr/local/nagios/etc/nagios.cfg
broker_module=/usr/local/nagios/bin/ndomod-3x.oconfig_file=/usr/local/nagios/etc/ndomod.cfg
process_performance_data=1

(3)配置ndocmd.cfg文件
vi/usr/local/nagios/etc/ndomod.cfg

output_type=tcpsocket
output=127.0.0.1

(4)配置ndo2db.cfg文件
vi/usr/local/nagios/etc/ndo2db.cfg

socket_type=tcp
socket_name=/usr/local/nagios/var/ndo.sock

db_name=cacti
db_prefix=npc_

db_user=cacti
db_pass=cacti2011

debug_level=1

(5)启动ndo2db
/usr/local/nagios/bin/ndo2db-3x-c/usr/local/nagios/etc/ndo2db.cfg

3、安装cacti插件npc
wgethttp://www.constructaegis.com/downloads/npc-2.0.4.tar.gz
tar-zxvfnpc-2.0.4.tar.gz
mvnpc/home/htdocs/cacti/plugins

登录cacti后台,在插件管理中心安装并启用NPC。
PluginManagement面板,installnpc,enablenpc。
Settings-npc选项卡下面:
NagiosCommandFilePath:/usr/local/nagios/var/rw/nagios.cmd
NagiosURL:http://192.168.1.36/nagios/
保存后完成。
至此,ndoutils会自动把nagios的数据写到mysql里cacti库下的npc_*表。

查看访问

http://192.168.1.36/cacti/

二、问题及排错
1、nagios重启
psaux|grepnagios
/usr/local/nagios/bin/ndo2db-3x-c/usr/local/nagios/etc/ndo2db.cfg######别忘了开机启动否则会出现nagiosOFF现象
/usr/local/nagios/bin/nagios-d/usr/local/nagios/etc/nagios.cfg
2、cacti插件npc提示nohosts
tail-100/var/log/messages
localhostndo2db-3x:mysql_error:'Unknowncolumn'long_output'in'fieldlist''
添加缺失的对应字段
ALTERTABLEnpc_eventhandlersADDlong_outputTEXTNOTNULLDEFAULT''AFTERoutput;
ALTERTABLEnpc_hostchecksADDlong_outputTEXTNOTNULLDEFAULT''AFTERoutput;
ALTERTABLEnpc_hoststatusADDlong_outputTEXTNOTNULLDEFAULT''AFTERoutput;
ALTERTABLEnpc_notificationsADDlong_outputTEXTNOTNULLDEFAULT''AFTERoutput;
ALTERTABLEnpc_servicechecksADDlong_outputTEXTNOTNULLDEFAULT''AFTERoutput;
ALTERTABLEnpc_servicestatusADDlong_outputTEXTNOTNULLDEFAULT''AFTERoutput;
ALTERTABLEnpc_statehistoryADDlong_outputTEXTNOTNULLDEFAULT''AFTERoutput;
ALTERTABLEnpc_systemcommandsADDlong_outputTEXTNOTNULLDEFAULT''AFTERoutput;

将上面这些写到一个test.sql文件中

执行mysql-uroot-pxxxx<test.sql

3.为什么nagios整合cacti后NPC里的nagios总是OFF!

解决办法是修改一下文件的内容,不过最主要的是这几个:
output_type=tcpsocket
output=127.0.0.1
socket_type=tcp

修改配置文件ndocmd.cfg 和 ndo2db.cfg

改完之后重启服务试试,我第一次测试安装是一次成功,但是整合公司原来配置好的服务时候,出现了nagiosOFF现象。。(看看nagios里面的的配置文件权限是不是nagios,我认为有这个方面的原因,配置文件都是rootmv过来的)



如果npc显示空白是因为php没有php-json-ext-1.2.0.tar.bz2这个扩展,安装下就行了

在php.ini里添加extension=json.so

安装前检查下php-devel是不是安装了,否则没有phpize,先执行下phpize命令,不然找不到php-config路径

./configure

make&&makeinstall




安装效果图如下

CN-300x163.png