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

原始出处:http://www.weiyan.me/2012/05/130根据该文增加注释

软件打包的下载地址如下http://down.51cto.com/data/629144

公司要换监控系统了,以前采用的是Nagios+Centreon这两款软件的整合然后做出来的,但是Centreon的画图是在令人感觉惨不忍睹,而且统计出来的数据,也不是非常准确和人性化……所以,在研究了之后我们决定换监控系统,而最终的方案就是使用Naigos来捕获数据和报警,使用Cacti来画图,使用Nconf来配置多台主机,方便管理。
那么ok,先说一下我们的环境平台。
监控机采用的是R410的服务器,8G内存和16核cpu,采用CentOS5.5x86_64的操作系统。好的,配置好网络之后,我们开始!
注意:这里默认关闭了Selinux(生产环境也是关的,放心吧。)以及关闭了iptables。如有开启的需要,请根据网络酌情添加相关内容。
准备环境:
为以后的配置搭建安装环境
?xml:namespace>建立yum脚本。把本地光盘挂到/mnt下,创建一个以.repo结尾的文件,内容如下
[media]
name=CentOS-Media
baseurl=file:///mnt/
gpgcheck=0
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
接着使用yumcleanall清空,使用yumlist验证一下。然后安装下列软件
  1. yuminstall-yhttp*

  2. yuminstall-ymysql*

  3. yuminstall-yphp-*

  4. yuminstall-ynet-snmp*

  5. yuminstall-yhttpdgccglibcglibc-commongdgd-develphpphp-gdntpruby*

一:Nagios环境的搭建
1.安装nagios
  1. wgethttp://sourceforge.net/projects/nagios/files/nagios-3.x/nagios-3.3.1/nagios-3.3.1.tar.gz

  2. tarzxfnagios-3.3.1.tar.gz

  3. cdnagios

  4. ./configure–prefix=/var/www/html/nagios

  5. makeall

  6. useraddnagios

  7. makeinstall&&makeinstall-init&&makeinstall-commandmode&&makeinstall-config&&makeinstall-webconf

2.增加nagios登陆认证文件,一定要用默认的nagiosadmin作为用户,否则需要修改其他文件。
  1. htpasswd-c/var/www/html/nagios/etc/htpasswd.usersnagiosadmin

3.安装插件:
  1. wgethttp://sourceforge.net/projects/nagiosplug/files/nagiosplug/1.4.15/nagios-plugins-1.4.15.tar.gz

  2. tar-zvxfnagios-plugins-1.4.15.tar.gz

  3. cdnagios-plugins-1.4.15

  4. ./configure–prefix=/var/www/html/nagios/

  5. make

  6. makeinstall

4.将运行Apache的用户添加到nagios组里,这样Apache才有权限读取文件
  1. usermod-Gnagiosapache##将apache用户加到nagios组。

5.阶段测试
  1. chownnagios.nagios/var/www/html/nagios/-R

  2. servicehttpdrestart

  3. chkconfighttpdon

  4. /etc/init.d/nagiosstart

二:cacti环境的搭建
1.rrdtool的安装,这里需要安装的是:rrdtool,rrdtool-devel.rrdtool-perl,rrdtool-php,我用的rrdtools的版本是1.2.7
在这里没有提供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. yumlocalinstall-y–nogpgcheckrrdtool-*

  2. servicemysqldstart

2.配置snmp
  1. vim/etc/snmp/snmpd.conf

  2. #修改3项127.0.0.1、all、启用项(修改的内容详见我Cacti的安装文档,上面有非常详细的内容介绍)

  3. servicesnmpdrestart

Nagios+Cacti+Nconf配置_第1张图片
测试snmpwalk-v2c-cpublichostname#public是共同体名,hostname是主机名
3.安装cacti
  1. wgethttp://www.cacti.net/downloads/cacti-0.8.7h.tar.gz

  2. tarzxvfcacti-0.8.7h.tar.gz

  3. mvcacti-0.8.7h/var/www/html/cacti

4.创建cacti数据库
  1. mysql>createdatabasecacti;

  2. mysql>grantalloncacti.*to‘cacti’@‘localhost’identifiedby‘cacti’;

  3. mysql>flushprivileges;

5.将cacti的表内容导入创建的数据库
  1. cd/var/www/html/cacti

  2. mysql-ucacti-pcacticacti

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–Mcacti

  2. chown–Rcacti/var/www/html/cacti/rra/

  3. chown–Rcacti/var/www/html/cacti/log/

7.在cacti用户下创建计划任务以画图
  1. sucacti

  2. crontab–e

  3. */5****php/var/www/html/cacti/poller.php>/dev/null2>&1

  4. php/var/www/html/cacti/poller.php>/dev/null2>&1

  5. exit

8.从web页面启动cacti,安装,并查看图形化界面
三:整合Nagios与Cacti
1.下载并安装ndoutils
  1. wgethttp://sourceforge.net/projects/nagios/files/ndoutils-1.x/ndoutils-1.4b9/ndoutils-1.4b9.tar.gz/download

  2. tarzxvfndoutils-1.4b9.tar.gz

  3. cdndoutils-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-vsrc/{ndomod-3x.o,ndo2db-3x,file2sock,log2ndo}/var/www/html/nagios/bin

  2. cddb

  3. ./installdb-ucacti-pcacti-hlocalhost-dcacti

  4. cd..

  5. cp-vconfig/{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. chmod644/var/www/html/nagios/etc/ndo*

  9. chownnagios:nagios/var/www/html/nagios/etc/*

  10. chownnagios: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.oconfig_file=/var/www/html/nagios/etc/ndomod.cfg

  4. #检查

  5. event_broker_options=-1##为Nagios开启eventbroker

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. servicendo2dbstart

  2. tail-20/var/log/messages##查看其中是否有错误出现。如无报错请继续

  3. servicenagiosstart

四:安装ncp,以在Cacti中展现Nagios
1.先安装cacti扩展模块
  1. wgethttp://www.cacti.net/downloads/pia/cacti-plugin-0.8.7h-PA-v3.0.tar.gz

  2. tarxvfcacti-plugin-0.8.7h-PA-v3.0.tar.gz

  3. cp-Rcacti-plugin-arch/*/var/www/html/cacti/

  4. cd/var/www/html/cacti/

  5. mysql-ucacti-pcacticacti

  6. patch-p1-N0.8.7h-PA-v3.0.diff

  7. ##为cacti配置文件打补丁的时候注意在为include/config.php打补丁的时候有可能它将include/config.php.dist给打补丁了,我们只需要手动加入下面的内容即可。

  1. viminclude/config.php

  2. #修改(或新加入)为

  3. $url_path=“/cacti/”;

从web进入cacti,启用cactiplugin扩展
在console的选项usermanagement——admin——realmpermissions——pluginmanagement。然后在configurations下就会自动出现pluginmanagement,和在setting下面。
2.安装npc
  1. tarzxvfnpc-2.0.4.tar.gz

  2. mvnpc/var/www/html/cacti/plugins/

  3. vim/var/www/html/cacti/include/config.php

  4. #加入:

  5. $plugins[]=‘npc’;

3.安装npc支持:json
  1. wgethttp://pkgs.fedoraproject.org/repo/pkgs/php-pecl-json/json-1.2.1.tgz/d8904d2f004ceec85eeacf524cd25539/json-1.2.1.tgz

  2. tarzxvfjson-1.2.1.tgz

  3. cdjson-1.2.1

  4. phpize##如果发现没有Phpize文件,则是因为php-devel包没有安装导致的

  5. ./configure

  6. make&&makeinstall

  7. php-i|grepphp.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. AddTypeapplication/x-httpd-php.php.phtml

  4. #修改原DirectoryIndex内容为:

  5. DirectoryIndexindex.htmlindex.html.varindex.php

  6. usermod-Gcactiapache

  7. servicehttpdrestart##重启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选项。

Nagios+Cacti+Nconf配置_第2张图片

?xml:namespace>
6.2修改mysql中的表结构:
  1. ./mysql-ucacti-pcacti

  2. mysql>usecacti;

  3. mysql>altertablenpc_eventhandlersaddlong_outputTEXTNOTNULLdefault”afteroutput;

  4. mysql>altertablenpc_hostchecksaddlong_outputTEXTNOTNULLdefault”afteroutput;

  5. mysql>altertablenpc_hoststatusaddlong_outputTEXTNOTNULLdefault”afteroutput;

  6. mysql>altertablenpc_notificationsaddlong_outputTEXTNOTNULLdefault”afteroutput;

  7. mysql>altertablenpc_servicechecksaddlong_outputTEXTNOTNULLdefault”afteroutput;

  8. mysql>altertablenpc_servicestatusaddlong_outputTEXTNOTNULLdefault”afteroutput;

  9. mysql>altertablenpc_statehistoryaddlong_outputTEXTNOTNULLdefault”afteroutput;

  10. mysql>altertablenpc_systemcommandsaddlong_outputTEXTNOTNULLdefault”afteroutput;

7.重启ndo2db进程,重新加载配置文件重启nagios服务。
  1. servicendo2dbrestart

  2. servicenagiosrestart

8.在Web上配置NPC以使之正常读取工作。
在Settings->npc中,勾上RemoteCommands
NagiosCommandFilePath=/var/www/html/nagios/var/rw/nagios.cmd
NagiosURL=你的地址(http://ocalhost/nagios/)
接下来刷新npc就可以看到数据啦:
五:Nconf的安装与配置
1.nconf的准备工作
  1. #进入mysql数据库

  2. mysql>createdatabasenconf;

  3. #创建nconf数据库

  4. mysql>grantallprivilegesonnconf.*tonconf@localhostidentifiedby‘nconf’;

  5. #创建nconf用户并赋权

  6. mysql>flushprivileges;

  7. #刷新特权表

  8. mysql>quit

2.安装nconf
  1. wgethttp://sourceforge.net/projects/nconf/files/nconf/1.2.6-0/nconf-1.2.6-0.tgz/download

  2. tar-zxfnconf-1.2.6-0.tgz-C/var/www/html/

  3. cd/var/www/html/nconf

  4. chown-Rapache.apacheconfig/temp/static_cfg/output/

3.进入Web页面在web页面按照安装提示一步步安装
4.使用刚才创建的nconf数据库和nconf数据库用户/密码
Nagios+Cacti+Nconf配置_第3张图片
5.成功连接mysql数据库,之后一切保持默认,直到下面的,设置nconf管理员密码,此时默认登录用户为admin
Nagios+Cacti+Nconf配置_第4张图片
6.之后,网页安装完成。
  1. rm-rfINSTALLINSTALL.phpUPDATEUPDATE.php

  2. #删除安装所需的初始化文件

  3. ln-s/var/www/html/nagios/bin/nagiosbin/nagios

  4. chmod+x/var/www/html/nconf/bin/generate_config.pl

  5. chown-Rapache.apachebin

  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.点击GenerateNagiosconfig 尝试生成配置文件,以测试是否与nagios 成功关联
9.最后的设置
web 页面对监控服务和主机配置完毕,点击GenerateNagiosconfig
②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. servicenagiosreload

  6. #重载nagios配置文件使之生效

六:错误总结:

tail-f/var/www/html/nagios/var/nagios.log要经常看这个日志。根据提示来对号入座

1.启动ndo2db发现日志报错:
ndomod:Couldnotopendatasink!I’llkeeptrying,butsomeoutputmaygetlost…

解决办法:
检查/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>altertablenpc_eventhandlersaddlong_outputTEXTNOTNULLdefault”afteroutput;ERROR1146(42S02):Table‘cacti.npc_eventhandlers’doesn’texist

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

3.在应用nconf的时候报错

点nconf–>GenerateNagiosconfig–>报错了。ErroraccessingorexecutingNagios/Icingabinary‘/var/www/html/nconf/bin/nagios’.

Cannotrunthemandatorysyntaxcheck.

解决办法:

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

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

七:最后的样式

Nagios+Cacti+Nconf配置_第5张图片

Nagios+Cacti+Nconf配置_第6张图片