参考文章: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/";
2:nagios plugin for cacti (npc)
现在官网上npc已经没有了,直接在51.cto网站就有:
http://down.51cto.com/data/327336
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被加载
- vim /var/www/html/nagios/etc/ndo2db.cfg
- db_prefix=npc_
- ./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;
- service nagios restart
- 重启ndo2db我的比较麻烦
- ps aux |grep ndo2db
- kill掉ndo2db进程
- /usr/local/nagios/bin/ndo2db-3x -c /usr/local/nagios/etc/ndo2db.cfg
- 开启ndo2db
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就会出现这个问题。
对于数据库的改变不要忘记