生产环境开源监控系统整合Nagios+Cacti+Nconf

更新日志:
12月1日:更新了文章中出现的部分漏洞,确保在部署时候可以完整无错。
12月13日:更新问题集锦,将网友反馈的在安装时候出现的问题都加入了文章之中。php

 
公司要换监控系统了,之前采用的是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个软件包html

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 
 
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";       //默认数据库名mysql

$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.   
  8.      db_name=cacti 
  9.   
  10.      db_prefix=nagios_ 
  11.      db_user=cacti 
  12.      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.   
  8. 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.  
  7. usermod -G cacti apache 
  8. service httpd restart    ## 重启apache以让php生效 
  9. 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数据库用户/密码
5.成功链接mysql数据库,以后一切保持默认,直到下面的,设置nconf管理员密码,此时默认登陆用户为admin
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...linux

解决办法:
检查 /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安装过程当中进行表操做时报错ios

mysql> alter table npc_eventhandlers add long_output TEXT NOT NULL default '' after output; 
ERROR 1146 (42S02): Table 'cacti.npc_eventhandlers' doesn't existweb

解决办法:要先在cacti页面下正确的启用npc插件,正确的启用~一个向上的箭头和一个向右的箭头都要开启才行~sql

3.在应用nconf的时候报错数据库

点 nconf --> Generate Nagios config --> 报错了。express

Error accessing or executing Nagios / Icinga binary '/var/www/html/nconf/bin/nagios'. 
Cannot run the mandatory syntax check.apache

解决办法:

检查你的/var/www/html/nconf/bin/nagios这个文件所连接的那个原始文件的权限,确保是777或者775

4....固然尚未发现错误,若是有,将会继续补充,欢迎网友在安装部署的过程当中发现错误将错误积极交流,我将一一添加……

七:最后的样式

相关文章
相关标签/搜索