fedora 16に基づくnagios環境構築--個人日記(10)--cactiとnagios統合


参考記事:http://foreveryan.blog.51cto.com/3508502/727866
http://freeze.blog.51cto.com/1846439/386828
私のcactiはすでにインストールされているので、データベース名はcactidbです.
ndoutilsもインストールされており、データベースはndodbです.
統合
1:cacti-plugin-0.8.7 h-PA-v 3を取り付ける.0.tar.gzは私がインストールしたcactiが0.8.8なので、
このバージョンのパッチがないので、バージョンを下げると思っていたが、試してみたらcacti 0を使う.8.8パッチなしで統合も可能.
しかし、cactiプラグインの拡張を実現するには
     vim include/config.php 

  
  
  
  
  1.    #  ( )  
  2.     $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のサポートの追加
    
      
      
      
      
    1. vim /etc/php.ini 
    2.    #   
    3.     extension=json.so 
       

     
    このステップは私のphpディレクトリが違うので、/usr/local/php/lib/phpにあるはずです.ini
    しかし、私はこの支持を加えていません.いいです.なぜか分かりません.
    php-mまたは/usr/local/php/bin/php##jsonがロードされているかどうかを確認
     
    5 .npcが新しいデータを読み込むようにプロファイルを変更します.
    
      
      
      
      
    1. vim /var/www/html/nagios/etc/ndo2db.cfg 
    2.      db_prefix=npc_ 

     
       
    ここで私が言いたいのは、もともと私のndoutilsがインストールしていたデータベースはndodbで、テーブルはnagios_です.開始すると、cactiのデータベースはcactidbです.ndoutilsを再インストールし、統合データベースをcactidbにすると思っていました.npcプラグインをインストールすると、cactidbにnpc_が自動的に生成されるので、使わないことに気づきました.先頭のndoutilsに適したテーブル.具体的にはcactiをインストールするときにあるのかnpcをインストールするときにあるのか、私も分かりません.つまりndo 2 dbを修正すればcfg中db_prefix=npcでいいので、もちろんデータベースパスワードなどをcaciのデータベースcactidbに変更します
    WebからCactiに入り、npcオプションが正しく使用されていることを確認します.
     
    6.2 mysqlのテーブル構造を変更するには、次の手順に従います.
    
      
      
      
      
    1. ./mysql -ucactier -p 111111 
    2. mysql> use cactidb;
    3. mysql> alter table npc_eventhandlers add long_output TEXT NOT NULL default '' after output; 
    4. mysql> alter table npc_hostchecks add long_output TEXT NOT NULL default '' after output; 
    5. mysql> alter table npc_hoststatus add long_output TEXT NOT NULL default '' after output; 
    6. mysql> alter table npc_notifications add long_output TEXT NOT NULL default '' after output; 
    7. mysql> alter table npc_servicechecks add long_output TEXT NOT NULL default '' after output; 
    8. mysql> alter table npc_servicestatus add long_output TEXT NOT NULL default '' after output; 
    9. mysql> alter table npc_statehistory add long_output TEXT NOT NULL default '' after output; 
    10. mysql> alter table npc_systemcommands add long_output TEXT NOT NULL default '' after output; 

     
    7.ndo 2 dbプロセスを再起動し、プロファイルを再ロードしてnagiosサービスを再起動します.
    
      
      
      
      
    1. service nagios restart 
    2. ndo2db
    3. ps aux |grep ndo2db
    4. kill ndo2db
    5. /usr/local/nagios/bin/ndo2db-3x -c /usr/local/nagios/etc/ndo2db.cfg
    6. 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とndo 2 dbを再起動して
    次にnpcをリフレッシュするとデータが表示されます.次の図です.

    これでいいです.
     
    いくつかの注意点があります.
    1:cactiは絵を描かない場合がありますが、snmpを再起動できます.
     
    2:npcのインストールでエラーが発生する可能性があります.
    npcは少しもデータがなく、nagiosのものは表示されません.
    私がこれ以上成功しなかったとき、間違いがあった.
    apacheのerror_ログには
     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:483Stack trace:#0 
    /usr/local/apache/htdocs/cacti/plugins/npc/lib/Doctrine/Connection/Mysql.php(101): Doctrine_Connection->connect()#1 
    /usr/local/apache/htdocs/cacti/plugins/npc/lib/Doctrine/Connection.php(1009): Doctrine_Connection_Mysql->connect()#2 
    /usr/local/apache/htdocs/cacti/plugins/npc/lib/Doctrine/Connection.php(808): Doctrine_Connection->execute('SELECT COUNT(*)...', Array)#3 
    /usr/local/apache/htdocs/cacti/plugins/npc/lib/Doctrine/Query.php(1894): Doctrine_Connection->fetchAll('SELECT COUNT(*)...', Array)#4 
    /usr/local/apache/htdocs/cacti/plugins/npc/lib/Doctrine/Pager.php(108): Doctrine_Query->count(Array)#5 
    /usr/local/apache/htdocs/cacti/plugins/npc/lib/Doctrine/Pager.php(570): Doctrine_Pager->_initialize(Array)#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を表示することがあります
    これはndo 2 dbとnagiosを起動しなければなりませんが、まだだめなら2つ再起動してみます.
    もしまだ間違いがあれば、具体的な問題を具体的に分析しなければなりません.
    4:ndo 2 dbがデータ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を再設定するとこの問題が発生します.
    データベースの変更を忘れないでください