list1234 发表于 2019-1-11 10:45:01

基于fedora16的nagios环境搭建

  参考文章:http://foreveryan.blog.运维网.com/3508502/727866
  http://freeze.blog.运维网.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.运维网.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以使之正常读取工作。


http://blog.运维网.com/attachment/201205/182430708.jpg


http://blog.运维网.com/attachment/201205/182456543.jpg

然后再

在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就可以看到数据啦:如下图
http://blog.运维网.com/attachment/201205/183703122.jpg

这样就可以了。



有几点注意:

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
http://blog.运维网.com/attachment/201205/184234412.jpg
  且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就会出现这个问题。
  对于数据库的改变不要忘记



页: [1]
查看完整版本: 基于fedora16的nagios环境搭建