此文是成功在《Nginx下搭建Nagios监控平台》基础上继续,安装整合Cacti、Nconf。其中花了很多时间来排错。
1、下载所需要最新稳定源码包
cd nagios-cacti wget http://www.cacti.net/downloads/cacti-0.8.8a.tar.gz wget http://www.cacti.net/downloads/spine/cacti-spine-0.8.8a.tar.gz wget http://nchc.dl.sourceforge.net/project/nagios/ndoutils-1.x/ndoutils-1.5.2/ndoutils-1.5.2.tar.gz wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.4.7.tar.gz wget http://iweb.dl.sourceforge.net/project/gibtmirdas/npc-2.0.4.tar.gz wget http://nchc.dl.sourceforge.net/project/nconf/nconf/1.3.0-0/nconf-1.3.0-0.tgz
2、snmp
yum -y install net-snmp-* vi /etc/snmp/snmpd.conf #确保下面3个地方如下 com2sec notConfigUser 127.0.0.1 public access notConfigGroup "" any noauth exact all none none view all included .1 80 chkconfig snmpd on service snmpd start
3、spine
spine是一个基于C语言的,非常快速的轮询引擎。它是默认的cmd.php的可选替代,主要是为了加快SNMP轮训。如果你发现你的cmd.php 运行超过300 秒的话,推荐使用Spine。
tar xzf cacti-spine-0.8.8a.tar.gz cd cacti-spine-0.8.8a ./configure --prefix=/usr/local/spine make && make install cp /usr/local/spine/etc/spine.conf.dist /usr/local/spine/etc/spine.conf sed -i 's@DB_Pass.*$@DB_Pass cactiuser123@' /usr/local/spine/etc/spine.conf cd ../
4、Cacti
tar xzf cacti-0.8.8a.tar.gz mv cacti-0.8.8a /data/admin/cacti/ chown -R www.www /data/admin/cacti/ mysqlrootpwd=admin /usr/local/mysql/bin/mysql -uroot -p$mysqlrootpwd -e "grant all on cacti.* to cactiuser@localhost identified by 'cactiuser123'" /usr/local/mysql/bin/mysql -uroot -p$mysqlrootpwd -e "flush privileges" sed -i 's@ENGINE=MyISAM@@g' /data/admin/cacti/cacti.sql sed -i '1 i\create database cacti;' /data/admin/cacti/cacti.sql /usr/local/mysql/bin/mysql -uroot -p$mysqlrootpwd cacti < /data/admin/cacti/cacti.sql sed -i 's@$database_password.*@$database_password = "cactiuser123";@g' /data/admin/cacti/include/config.php sed -i 's@//$url_path@$url_path@g' /data/admin/cacti/include/config.php echo '*/5 * * * * /usr/local/php/bin/php /data/admin/cacti/poller.php > /dev/null 2>/data/admin/cacti/log/pooler-error.log' >> /var/spool/cron/www service crond restart
yum install rrdtool tar xzf rrdtool-1.4.7.tar.gz cd rrdtool-1.4.7 yum -y install libart_lgpl libart_lgpl-deve pango-devel cairo-devel ./configure --prefix=/usr/local/rrtool --disable-python --disable-tcl make && make install cd ../
登录web页面地址(具体地址看nginx.conf配置文件):http://www.linuxeye.com/cacti
Cacti默认的用户名与密码是admin,输入用户名与密码,点击login。为了安全的原因,第一次登录成功后,cacti会强制要求你更改一个新的密码 ,输入新密码并确认密码,点击save,进入cacti控制台界面,如下图解:
5、安装配置Ndoutils
Ndoutils是整合cacti和nagios是利用了cacti的一个插件nagios for cacti,它的原理是将nagios的数据通过ndo2db导入到mysql数据库(cacti的库中),然后cacti读取数据库信息将nagios的结果展示出来。
tar xzf ndoutils-1.5.2.tar.gz cd ndoutils-1.5.2 ./configure --prefix=/usr/local/nagios --enable-mysql --with-mysql=/usr/local/mysql
make报错以下错误:
cd ./src && make make[1]: Entering directory `/root/nagios-cacti/ndoutils-1.5.2/src' gcc -fPIC -g -O2 -I/usr/local/mysql/include -DHAVE_CONFIG_H -c -o io.o io.c In file included from io.c:11: ../include/config.h:261:25: error: mysql/mysql.h: No such file or directory ../include/config.h:262:26: error: mysql/errmsg.h: No such file or directory make[1]: *** [io.o] Error 1 make[1]: Leaving directory `/root/nagios-cacti/ndoutils-1.5.2/src' make: *** [all] Error 2
解决方法如下:
sed -i 's@#include <mysql/mysql.h>@#include @' include/config.h sed -i 's@#include <mysql/errmsg.h>@#include @' include/config.h
重新编译安装
make && make install cp daemon-init /etc/init.d/ndo2db chmod +x /etc/init.d/ndo2db chkconfig --add ndo2db cp config/ndo2db.cfg-sample /usr/local/nagios/etc/ndo2db.cfg cp config/ndomod.cfg-sample /usr/local/nagios/etc/ndomod.cfg chown nagios.nagios /usr/local/nagios/etc/{ndo2db.cfg,ndomod.cfg} sed -i 's@ENGINE=MyISAM@@g' db/mysql.sql sed -i '1 i\use cacti;' db/mysql.sql /usr/local/mysql/bin/mysql -ucactiuser -pcactiuser123 cacti < db/mysql.sql sed -i 's@\(.*broker_module=/somewhere/module2.o.*$\)@\1\nbroker_module=/usr/local/nagios/bin/ndomod.o config_file=/usr/local/nagios/etc/ndomod.cfg@' /usr/local/nagios/etc/nagios.cfg
修改ndo2db.cfg、ndomod.cfg适应当前环境
sed -i 's@socket_type=unix@#socket_type=unix@' /usr/local/nagios/etc/ndo2db.cfg sed -i 's@#socket_type=tcp@socket_type=tcp@' /usr/local/nagios/etc/ndo2db.cfg sed -i 's@^db_name.*$@db_name=cacti@' /usr/local/nagios/etc/ndo2db.cfg sed -i 's@^db_user.*$@db_user=cactiuser@' /usr/local/nagios/etc/ndo2db.cfg sed -i 's@^db_pass.*$@db_pass=cactiuser123@' /usr/local/nagios/etc/ndo2db.cfg sed -i 's@^output_type=unixsocket@#output_type=unixsocket@' /usr/local/nagios/etc/ndomod.cfg sed -i 's@^output=/usr/local/nagios/var/ndo.sock@#output=/usr/local/nagios/var/ndo.sock@' /usr/local/nagios/etc/ndomod.cfg sed -i 's@^#output_type=tcpsocket@output_type=tcpsocket@' /usr/local/nagios/etc/ndomod.cfg sed -i 's@^#output=127.0.0.1@output=127.0.0.1@' /usr/local/nagios/etc/ndomod.cfg cd ../ service ndo2db start
6、安装NPC,在Cacti中展现Nagios
tar xzf npc-2.0.4.tar.gz -C /data/admin/cacti/plugins chown -R www.www /data/admin/cacti/plugins cd ../
登陆Cacti,在Console -> Plugin Management 安装NPC
再点击绿色按钮启用
在Settings->npc中 ,勾上Remote Commands
sed -i 's@^db_prefix=nagios_@db_prefix=npc_@' /usr/local/nagios/etc/ndo2db.cfg
修改mysql中的表结构:
/usr/local/mysql/bin/mysql -ucactiuser -pcactiuser123
alter table cacti.npc_eventhandlers add long_output TEXT NOT NULL default '' after output; alter table cacti.npc_hostchecks add long_output TEXT NOT NULL default '' after output; alter table cacti.npc_hoststatus add long_output TEXT NOT NULL default '' after output; alter table cacti.npc_notifications add long_output TEXT NOT NULL default '' after output; alter table cacti.npc_servicechecks add long_output TEXT NOT NULL default '' after output; alter table cacti.npc_servicestatus add long_output TEXT NOT NULL default '' after output; alter table cacti.npc_statehistory add long_output TEXT NOT NULL default '' after output; alter table cacti.npc_systemcommands add long_output TEXT NOT NULL default '' after output;
service ndo2db restart service nagios restart
7、Nconf的安装与配置
准备工作
/usr/local/mysql/bin/mysql -uroot -p$mysqlrootpwd -e "create database nconf;" /usr/local/mysql/bin/mysql -uroot -p$mysqlrootpwd -e "grant all privileges on nconf.* to nconf@localhost identified by 'nconf';" /usr/local/mysql/bin/mysql -uroot -p$mysqlrootpwd -e "flush privileges;"
安装nconf
tar xzf nconf-1.3.0-0.tgz -C /data/admin/ chown -R www.www /data/admin/nconf
进入Web页面在web页面按照安装提示一步步安装
ln -s /usr/local/nagios/bin/nagios /data/admin/nconf/bin
登录web Nconf管理地址:http://www.linuxeye.com/nconf/
成功连接mysql数据库,之后一切保持默认,直到下面的,设置nconf管理员密码,此时默认登录用户为admin。
出现报错(如下图),删除相应文件
rm -rf /data/admin/nconf/{INSTALL,INSTALL.php,UPDATE,UPDATE.php}
重新刷新页面,输入admin/您设置的密码,进入nconf页面
点击Generate Nagios config尝试生成配置文件,以测试是否与nagios成功关联
nconf –> Generate Nagios config –> 报错了。
Error accessing or executing Nagios / Icinga binary ‘/data/admin/nconf/bin/nagios’.
Cannot run the mandatory syntax check.
解决办法:
检查你的/data/admin/nconf/bin/nagios这个文件所链接的那个原始文件的权限,确保是777或者775
chmod +x /usr/local/nagios/bin/nagios
点击Generate Nagios config尝试生成配置文件,还是报如下错误:
Error Deployment not possible due to errors in configuration.
Error: Cannot open main configuration file ‘/data/admin/nconf/temp/test/Default_collector.cfg’ for reading!
因此Nconf的脚本使用的perl无法和MySQL交互导致,因此安装perl-DBD-MySQL,方法如下:
wget http://www.cpan.org/modules/by-module/DBD/DBD-mysql-4.023.tar.gz tar xzf DBD-mysql-4.023.tar.gz cd DBD-mysql-4.023 yum -y install perl-DBI #解决报错Can't locate DBI/DBD.pm in @INC perl Makefile.PL --mysql_config=/usr/local/mysql/bin/mysql_config make && make install cd ../
cd /usr/local/nagios sed -i 's@^OUTPUT_DIR.*@OUTPUT_DIR="/data/admin/nconf/output/"@' /data/admin/nconf/ADD-ONS/deploy_local.sh sed -i 's@^tar -xf@tar -xzf@' /data/admin/nconf/ADD-ONS/deploy_local.sh #源码包中少了个z参数,不能正常解压,折腾死我了 /data/admin/nconf/ADD-ONS/deploy_local.sh #手动执行此脚本,将在/usr/local/nagios/etc/下生成目录Default_collector与global
修改nagios主配置文件,注销以前配置,交给nconf管理
sed -i 's@\(^cfg_file=.*\)@#\1@g' /usr/local/nagios/etc/nagios.cfg echo 'cfg_dir=/usr/local/nagios/etc/Default_collector cfg_dir=/usr/local/nagios/etc/global' >> /usr/local/nagios/etc/nagios.cfg service nagios restart
用Nconf Web修改后希望以www能重启nagios
sed -i 's@^Defaults.*requiretty@#Defaults requiretty@' /etc/sudoers sed -i 's@\(^root.*\)@\1\nwww ALL=NOPASSWD: /etc/rc.d/init.d/nagios reload@' /etc/sudoers
cat /data/admin/nconf/config/deployment.ini [extract config] type = local source_file = "/data/admin/nconf/output/NagiosConfig.tgz" target_file = "/tmp/" action = extract [copy collector config] type = local source_file = "/tmp/Default_collector/" target_file = "/usr/local/nagios/etc/Default_collector/" action = copy [copy global config] type = local source_file = "/tmp/global/" target_file = "/usr/local/nagios/etc/global/" action = copy reload_command = "sudo /etc/rc.d/init.d/nagios reload"
Fri Apr 19 11:55:15 CST 2013