您的位置:首页 > Web前端

基于fedora16的nagios环境搭建--个人日记(10)--cacti和nagios整合

2012-05-01 17:48 435 查看
参考文章:http://foreveryan.blog.51cto.com/3508502/727866

http://freeze.blog.51cto.com/1846439/386828

因为我的cacti已经安装,数据库名为cactidb

ndoutils也已经安装,数据库为ndodb

整合

1:安装cacti-plugin-0.8.7h-PA-v3.0.tar.gz 因为我安装的cacti为0.8.8,

没有该版本的补丁,本来以为要降低版本,但是尝试了一下,使用cacti0.8.8也可以实现整合,不需要补丁。

但是还是要实现cacti插件扩展的

vim include/config.php

# 修改(或新加入)为
$url_path = "/cacti/";


从web进入cacti,启用cacti plugin扩展
因为我已经安装cacti时在config.cfg和global.cfg文件都加入了扩展所以也不用修改
2:nagios plugin for cacti (npc)

现在官网上npc已经没有了,直接在51.cto网站就有:

http://down.51cto.com/data/327336

tar zxvf npc-2.0.4.tar.gz

mv npc /usr/local/apache/htdocs/cacti/plugins/

vim /usr/local/apache/htdocs/cacti/include/config.php

# 加入:

$plugins[] = 'npc';

3: 安装 npc支持:json

要让npc获得json的动态链接库的支持,要慎重。

因为我们在安装php的时候,或者安装其他插件时,可能要有json的支持。也许你已经安装好了json。我现在版本的php中,json已经在安装yum install php-common时就已经安装好了,你在安装之前可以先看看有没有json

我的在/usr/lib/php/modules/目录下。如果有就不需要安装了。还需要声明一点我的php放在了/usr/local/php/bin

如果是yum 安装php 可能在/usr/bin/php

所以执行php -m 看看都加载了那些模块时要选对

/usr/local/php/bin/php -m 或者 php -m

如果你重新安装json 执行以上命令时可能要出现一下问题

PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/json.so' - /usr/lib64/php/modules/json.so: undefined symbol: ZVAL_DELREF in Unknown on line 0

这是因为你重写了json 所以出错了。

我是这么解决的;先yum remove php-common

然后再重装删掉的包

这样就好了。

4. 打开php.ini文件添加对json的支持

vim /etc/php.ini
# 添加
extension=json.so


这一步因为我的php目录不同,所以应该在/usr/local/php/lib/php.ini

但是我没加这个支持,也可以,不知为什么。

php -m 或者 /usr/local/php/bin/php ## 查看是否有json被加载

5 .修改配置文件以让npc读取到新的数据。

vim /var/www/html/nagios/etc/ndo2db.cfg
db_prefix=npc_


这里我要说以下,本来我的ndoutils 安装的数据库为ndodb,表都是以nagios_开始的,cacti的数据库为cactidb。我还以为要重新安装ndoutils,统一数据库为cactidb。后来我发现不用,因为你安装npc插件后,会自动在cactidb中产生npc_开头的适合ndoutils的表。具体是安装cacti时就有的还是安装npc时有的,我也不确定。就是说只要修改ndo2db.cfg中db_prefix=npc就可以了,当然了也要把数据库 密码等等修改为caci的数据库cactidb
从Web进入Cacti,确保正确使用npc选项。

6.2 修改mysql中的表结构:

./mysql -ucactier -p 111111
mysql> use cactidb;
mysql> alter table npc_eventhandlers add long_output TEXT NOT NULL default '' after output;
mysql> alter table npc_hostchecks add long_output TEXT NOT NULL default '' after output;
mysql> alter table npc_hoststatus add long_output TEXT NOT NULL default '' after output;
mysql> alter table npc_notifications add long_output TEXT NOT NULL default '' after output;
mysql> alter table npc_servicechecks add long_output TEXT NOT NULL default '' after output;
mysql> alter table npc_servicestatus add long_output TEXT NOT NULL default '' after output;
mysql> alter table npc_statehistory add long_output TEXT NOT NULL default '' after output;
mysql> alter table npc_systemcommands add long_output TEXT NOT NULL default '' after output;


7.重启ndo2db进程,重新加载配置文件重启nagios服务。

service nagios restart
重启ndo2db我的比较麻烦
ps aux |grep ndo2db
kill掉ndo2db进程
/usr/local/nagios/bin/ndo2db-3x -c /usr/local/nagios/etc/ndo2db.cfg
开启ndo2db

8.在Web上配置NPC以使之正常读取工作。









然后再
在Settings->npc中 ,勾上Remote Commands
Nagios Command File Path= /usr/local/nagios/var/rw/nagios.cmd
Nagios URL=你的地址(http://localhost/nagios/)
在configure 栏的setting下有plugin management 选项,找到后,点击后可以找到npc
然后要建立install 并enable
接下来可以重启一下nagios和ndo2db 然后
接下来刷新npc就可以看到数据啦:如下图




这样就可以了。

有几点注意:
1:cacti 有时不画图,可以重启一下snmp

2:安装npc可能出现一下错误:

npc一点数据都没有,nagios的东西都不显示。

我再没成功时,出现了一下错误。

apache的error_log日志中为

PHP Fatal error: Uncaught exception 'Doctrine_Connection_Exception' with message 'Couldn't locate driver named mysql'

in /usr/local/apache/htdocs/cacti/plugins/npc/lib/Doctrine/Connection.php:483\nStack trace:\n#0

/usr/local/apache/htdocs/cacti/plugins/npc/lib/Doctrine/Connection/Mysql.php(101): Doctrine_Connection->connect()\n#1

/usr/local/apache/htdocs/cacti/plugins/npc/lib/Doctrine/Connection.php(1009): Doctrine_Connection_Mysql->connect()\n#2

/usr/local/apache/htdocs/cacti/plugins/npc/lib/Doctrine/Connection.php(808): Doctrine_Connection->execute('SELECT COUNT(*)...', Array)\n#3

/usr/local/apache/htdocs/cacti/plugins/npc/lib/Doctrine/Query.php(1894): Doctrine_Connection->fetchAll('SELECT COUNT(*)...', Array)\n#4

/usr/local/apache/htdocs/cacti/plugins/npc/lib/Doctrine/Pager.php(108): Doctrine_Query->count(Array)\n#5

/usr/local/apache/htdocs/cacti/plugins/npc/lib/Doctrine/Pager.php(570): Doctrine_Pager->_initialize(Array)\n#6

/usr/local/apache/htdocs/cacti/plugins/npc/controllers/services.php(260): Doctrine_Pager->execute(Array, 3) in

/usr/local/apache/htdocs/cacti/plugins/npc/lib/Doctrine/Connection.php on line 483, referer:
http://localhost/cacti/plugins/npc/npc.php?module=layout&action=drawLayout
这是因为php安装时,选项--with-pdo-mysql没有

在phpinfo()的显示中要有如下内容pdo和pdo-mysql





且pdo里要有mysql

但是一定要安装上php-mysql和php-do

3:我有时nagios显示off

这是要启动ndo2db和nagios才行,如果还不行,就要重启着两个试试,

如果还有错误,那就要具体问题具体分析了。

4:有时ndo2db插入数据cactidb中时,对于表npc_servicechecks 类似的表插入不进,出现一下错误

Error: mysql_query() failed for 'INSERT INTO npc_servicechecks SET instance_id='1', service_object_id='18', check_type='0', current_check_attempt='1'

Apr 30 16:08:04 localhost ndo2db-3x: mysql_error: 'Unknown column 'long_output' in 'field list

这是因为你没有

alter table npc_eventhandlers add long_output TEXT NOT NULL default '' after output;

或者你又重新设置了npc就会出现这个问题。

对于数据库的改变不要忘记
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息