天天看點

生産環境開源監控系統整合Nagios+Cacti+Nconf

更新日志:

12月1日:更新了文章中出現的部分漏洞,確定在部署時候能夠完整無錯。

12月13日:更新問題集錦,将網友回報的在安裝時候出現的問題都加入了文章之中。

公司要換監控系統了,以前采用的是Nagios+Centreon這兩款軟體的整合然後做出來的,但是Centreon的畫圖是在令人感覺慘不忍睹,而且統計出來的資料,也不是非常準确和人性化……是以,在研究了之後我們決定換監控系統,而最終的方案就是使用Naigos來捕獲資料和報警,使用Cacti來畫圖,使用Nconf來配置多台主機,友善管理。

那麼ok,先說一下我們的環境平台。

監控機采用的是R410的伺服器,8G記憶體和16核cpu,采用CentOS 5.5 x86_64的作業系統。好的,配置好網絡之後,我們開始!

注意:這裡預設關閉了Selinux(生産環境也是關的,放心吧。)以及關閉了iptables。如有開啟的需要,請根據網絡酌情添加相關内容。

準備環境:

為以後的配置搭建安裝環境

  1. yum install -y http* 
  2. yum install -y mysql* 
  3. yum install -y php-* 
  4. yum install -y net-snmp* 
  5. yum install -y httpd gcc glibc glibc-common gd gd-devel php php-gd ntp 

一:Nagios環境的搭建

1.安裝nagios

  1. wget http://sourceforge.net/projects/nagios/files/nagios-3.x/nagios-3.3.1/nagios-3.3.1.tar.gz 
  2. tar zxf nagios-3.3.1.tar.gz 
  3. cd nagios 
  4. ./configure --prefix=/var/www/html/nagios 
  5. make all 
  6. useradd nagios 
  7. make install && make install-init && make install-commandmode && make install-config && make install-webconf 

2.增加nagios登陸認證檔案,一定要用預設的nagiosadmin作為使用者,否則需要修改其他檔案。 

  1. htpasswd -c /var/www/html/nagios/etc/htpasswd.users nagiosadmin  

3. 安裝插件:

  1. wget http://sourceforge.net/projects/nagiosplug/files/nagiosplug/1.4.15/nagios-plugins-1.4.15.tar.gz 
  2. tar -zvxf nagios-plugins-1.4.15.tar.gz 
  3. cd nagios-plugins-1.4.15 
  4. ./configure --prefix=/var/www/html/nagios/ 
  5. make 
  6. make install  

4.将運作Apache的使用者添加到nagios組裡,這樣Apache才有權限讀取檔案

  1. usermod -G nagios apache    ##将apache使用者加到nagios組。 

5.階段測試 

  1. chown nagios.nagios /var/www/html/nagios/ -R 
  2. service httpd restart  
  3. chkconfig httpd on   
  4. /etc/init.d/nagios start 

二:cacti環境的搭建

1.rrdtool的安裝,這裡需要安裝的是:rrdtool,rrdtool-devel.rrdtool-perl,rrdtool-php,我用的rrdtools的版本是1.4.4.1_x86_64。

在這裡沒有提供rrdtool的工具,需要下載下傳可以去這裡下載下傳上述的3個軟體包

rrdtool、rrdtool-devel的位址:http://packages.express.org/rrdtool/

rrdtool-php的位址:http://pkgs.org/download/rrdtool-php

注意,rrdtool的元件和附加元件版本盡量一緻,而由于rrdtool-php這個包非常稀有,是以,盡量請以rrdtool-php的版本來決定rrdtool以及rrdtool-devel的版本。還有一定要對應環境,别安裝成了fedora的版本了=。=

下載下傳完成後,本地yum安裝 

  1. yum localinstall -y --nogpgcheck rrdtool-* 
  2. service mysqld start 

2.配置snmp 

  1. vim /etc/snmp/snmpd.conf 
  2.       # 修改3項  127.0.0.1 、 all、啟用項(修改的内容詳見我Cacti的安裝文檔,上面有非常詳細的内容介紹) 
  3. service snmpd restart 
生産環境開源監控系統整合Nagios+Cacti+Nconf

3.安裝cacti

  1. wget http://www.cacti.net/downloads/cacti-0.8.7h.tar.gz 
  2. tar zxvf cacti-0.8.7h.tar.gz 
  3. mv cacti-0.8.7h /var/www/html/cacti 

4.建立cacti資料庫 

  1. mysql> create database cacti; 
  2. mysql> grant all on cacti.* to 'cacti'@'localhost' identified by 'cacti'; 
  3. mysql> flush privileges; 

5.将cacti的表内容導入建立的資料庫

  1. cd /var/www/html/cacti 
  2. mysql -ucacti -pcacti cacti < /var/www/html/cacti/cacti.sql 

6.分别編輯兩個.php檔案,以适應環境,修改内容相同。

  1. vim /var/www/html/cacti/include/config.php 
  2. vim /var/www/html/cacti/include/global.php  

$database_default = "cacti";       //預設資料庫名

$database_hostname = "localhost";         //主機名

$database_username = "cacti";              //登陸資料庫使用者名

$database_password = "cacti";              //登陸資料庫密碼

$database_port = "3306";

  1. useradd –r –M cacti 
  2. chown –R cacti /var/www/html/cacti/rra/ 
  3. chown –R cacti /var/www/html/cacti/log/ 

7.在cacti使用者下建立計劃任務以畫圖

  1. su cacti 
  2. crontab –e 
  3. */5 * * * * php /var/www/html/cacti/poller.php > /dev/null 2>&1 
  4. php /var/www/html/cacti/poller.php > /dev/null 2>&1 
  5. exit  

8.從web頁面啟動cacti,安裝,并檢視圖形化界面

三:整合Nagios與Cacti

1.下載下傳并安裝ndoutils 

  1. wget http://sourceforge.net/projects/nagios/files/ndoutils-1.x/ndoutils-1.4b9/ndoutils-1.4b9.tar.gz/download 
  2. tar zxvf ndoutils-1.4b9.tar.gz  
  3. cd ndoutils-1.4b9 
  4. ./configure --prefix=/var/www/html/nagios --enable-mysql --disable-pgsql --with-mysql-inc=/usr/include/mysql --with-mysql-lib=/usr/lib/mysql 
  5. make 

2.準備配置檔案

  1. cp -v src/{ndomod-3x.o,ndo2db-3x,file2sock,log2ndo} /var/www/html/nagios/bin 
  2. cd db 
  3. ./installdb -ucacti -pcacti -hlocalhost -d cacti 
  4. cd .. 
  5. cp -v config/{ndo2db.cfg-sample,ndomod.cfg-sample} /var/www/html/nagios/etc 
  6. mv /var/www/html/nagios/etc/ndo2db.cfg-sample /var/www/html/nagios/etc/ndo2db.cfg 
  7. mv /var/www/html/nagios/etc/ndomod.cfg-sample /var/www/html/nagios/etc/ndomod.cfg 
  8. chmod 644 /var/www/html/nagios/etc/ndo* 
  9. chown nagios:nagios /var/www/html/nagios/etc/* 
  10. chown nagios:nagios /var/www/html/nagios/bin/* 

3.修改nagios.cfg配置檔案以适應目前環境

  1. vim /var/www/html/nagios/etc/nagios.cfg 
  2.    # 在檔案中添加: 
  3.      broker_module=/var/www/html/nagios/bin/ndomod-3x.o config_file=/var/www/html/nagios/etc/ndomod.cfg 
  4.    # 檢查  
  5.      event_broker_options=-1     ## 為Nagios開啟event broker 

4.修改ndo2db.cfg以适應目前環境

  1. vim /var/www/html/nagios/etc/ndo2db.cfg 
  2.  # 確定下列内容為唯一項 
  3.      socket_type=tcp 
  4.      db_servertype=mysql 
  5.      db_host=localhost 
  6.      db_port=3306 
  7.      db_name=cacti 
  8.      db_prefix=nagios_ 
  9.      db_user=cacti 
  10.      db_pass=cacti 

5.修改ndomod.cfg以适應目前環境 

  1. vim /var/www/html/nagios/etc/ndomod.cfg 
  2.    # 確定下列項的唯一内容為 
  3.     output_type=tcpsocket 
  4.     output=127.0.0.1 

6.為ndo2db添加啟動程序

  1. cp ./daemon-init /etc/init.d/ndo2db 
  2. vim /etc/init.d/ndo2db
  3.    # 檢查裡面的路徑確定不會出現“//",并将Ndo2dbBin修改成下面的值: 
  4.      Ndo2dbBin=/var/www/html/nagios/bin/ndo2db-3x 
  5. chmod +x /etc/init.d/ndo2db  

7.啟動守護程序與nagios 

  1. service ndo2db start 
  2. tail -20 /var/log/messages    ## 檢視其中是否有錯誤出現。如無報錯請繼續 
  3. service nagios start

四:安裝ncp,以在Cacti中展現Nagios

1.先安裝cacti擴充子產品

  1. wget http://www.cacti.net/downloads/pia/cacti-plugin-0.8.7h-PA-v3.0.tar.gz 
  2. tar xvf cacti-plugin-0.8.7h-PA-v3.0.tar.gz  
  3. cp -R cacti-plugin-arch/* /var/www/html/cacti/ 
  4. cd /var/www/html/cacti/ 
  5. mysql -ucacti -pcacti cacti < pa.sql  
  6. patch -p1 -N < cacti-plugin-0.8.7h-PA-v3.0.diff   
  7.  ## 為cacti配置檔案打更新檔的時候注意在為include/config.php打更新檔的時候有可能它将 include/config.php.dist給打更新檔了,我們隻需要手動加入下面的内容即可。 
  1. vim include/config.php 
  2.    # 修改(或新加入)為 
  3.     $url_path = "/cacti/"; 

從web進入cacti,啟用cacti plugin擴充

2.安裝npc

  1. tar zxvf npc-2.0.4.tar.gz 
  2. mv npc /var/www/html/cacti/plugins/ 
  3. vim /var/www/html/cacti/include/config.php 
  4.     # 加入: 
  5.      $plugins[] = 'npc'; 

3.安裝 npc支援:json

  1. wget http://pkgs.fedoraproject.org/repo/pkgs/php-pecl-json/json-1.2.1.tgz/d8904d2f004ceec85eeacf524cd25539/json-1.2.1.tgz 
  2. tar zxvf json-1.2.1.tgz  
  3. cd json-1.2.1 
  4. phpize   ## 如果發現沒有Phpize檔案,則是因為php-devel包沒有安裝導緻的  
  5. ./configure  
  6. make && make install 
  7. php -i | grep php.ini  ## 檢視是否有導入資訊 

4.打開php.ini檔案添加對json的支援

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

5.為apache添加php支援。

  1. vim /etc/httpd/conf/httpd.conf  
  2.    # 添加一行: 
  3.      AddType application/x-httpd-php .php .phtml 
  4.    # 修改原DirectoryIndex内容為: 
  5.      DirectoryIndex index.html index.html.var index.php 
  6. usermod -G cacti apache 
  7. service httpd restart    ## 重新開機apache以讓php生效 
  8. php -m   ## 檢視是否有json被加載 

6.修改配置檔案以讓npc讀取到新的資料。

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

6.1

從Web進入Cacti,確定正确使用npc選項。

6.2 修改mysql中的表結構:

  1. ./mysql -ucacti -p cacti 
  2. mysql> use cacti;
  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.重新開機ndo2db程序,重新加載配置檔案重新開機nagios服務。

  1. service ndo2db restart 
  2. service nagios restart 

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

在Settings->npc中 ,勾上Remote Commands

Nagios Command File Path= /var/www/html/nagios/var/rw/nagios.cmd

Nagios URL=你的位址(http://ocalhost/nagios/)

接下來重新整理npc就可以看到資料啦:

五:Nconf的安裝與配置

1.nconf的準備工作

  1. # 進入mysql資料庫  
  2. mysql> create database nconf;   
  3. # 建立nconf資料庫  
  4. mysql> grant all privileges on nconf.* to nconf@localhost identified by 'nconf';  
  5. # 建立nconf使用者并賦權    
  6. mysql> flush privileges;    
  7. # 重新整理特權表  
  8. mysql> quit  

2.安裝nconf

  1. wget http://sourceforge.net/projects/nconf/files/nconf/1.2.6-0/nconf-1.2.6-0.tgz/download 
  2. tar -zxf nconf-1.2.6-0.tgz -C /var/www/html/  
  3. cd /var/www/html/nconf  
  4. chown -R apache.apache config/ temp/ static_cfg/ output/  

3.進入Web頁面在web頁面按照安裝提示一步步安裝

4.使用剛才建立的nconf資料庫和nconf資料庫使用者/密碼

生産環境開源監控系統整合Nagios+Cacti+Nconf

5.成功連接配接mysql資料庫,之後一切保持預設,直到下面的,設定nconf管理者密碼,此時預設登入使用者為admin

生産環境開源監控系統整合Nagios+Cacti+Nconf

6.之後,網頁安裝完成。

  1. rm -rf INSTALL INSTALL.php  UPDATE UPDATE.php   
  2.  # 删除安裝所需的初始化檔案  
  3. ln -s /var/www/html/nagios/bin/nagios bin/nagios   
  4. chmod +x /var/www/html/nconf/bin/generate_config.pl   
  5. chown -R apache.apache  bin  
  6. chmod +x /var/www/html/nagios/bin/nagios 
  7. chmod +x /var/www/html/nconf/ADD-ONS/deploy_local.sh    
  8. vim /var/www/html/nconf/ADD-ONS/deploy_local.sh  
  9. 修改裡面的Nagios路徑為 /var/www/html/nagios/etc/    

7.重新重新整理頁面,輸入admin/您設定的密碼,進入nconf頁面

8.點選Generate Nagios config嘗試生成配置檔案,以測試是否與nagios成功關聯

9.最後的設定

①在web頁面對監控服務和主機配置完畢,點選Generate Nagios config

②deploy_local.sh是nconf自帶配置檔案導入腳本

  1. /var/www/html/nconf/ADD-ONS/deploy_local.sh 

手動執行此腳本,将在/var/www/html/nagios/etc下生成兩目錄Default_collector與global

③修改nagios主配置檔案

  1. vim /var/www/html/nagios/etc/nagios.cfg  
  2.    # 将其中cfg_file=*******字段全部注釋 ,并加入 
  3.      cfg_dir=/var/www/html/nagios/etc/Default_collector 
  4.      cfg_dir=/var/www/html/nagios/etc/global 
  5. service nagios reload 
  6.    # 重載nagios配置檔案使之生效 

六:錯誤總結:

1.啟動ndo2db發現日志報錯:

ndomod: Could not open data sink! I'll keep trying, but some output may get lost...

解決辦法:

檢查 /nagios/etc目錄的權限是否足夠的大

確定/var/www/html/nagios/etc/nagios.cfg中有如下行出現,否則,請自行添加:

event_broker_options=-1 

檢查ndo2db.cfg中的配置,確定使用tcp連接配接

socket_type=tcp

檢查ndomod.cfg中的配置,確定使用tcp套接字

output_type=tcpsocket

2.在npc安裝過程中進行表操作時報錯

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

ERROR 1146 (42S02): Table 'cacti.npc_eventhandlers' doesn't exist

解決辦法:要先在cacti頁面下正确的啟用npc插件,正确的啟用~一個向上的箭頭和一個向右的箭頭都要開啟才行~

3.在應用nconf的時候報錯

點 nconf --> Generate Nagios config --> 報錯了。

Error accessing or executing Nagios / Icinga binary '/var/www/html/nconf/bin/nagios'. 

Cannot run the mandatory syntax check.

解決辦法:

檢查你的/var/www/html/nconf/bin/nagios這個檔案所連結的那個原始檔案的權限,確定是777或者775

4....當然還沒有發現錯誤,如果有,将會繼續補充,歡迎網友在安裝部署的過程中發現錯誤将錯誤積極交流,我将一一添加……

七:最後的樣式

繼續閱讀