生产环境监控系统Nginx+Nagios+Cacti+Nconf大整合(最新源码安装)

    此文是成功在《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控制台界面,如下图解:
    生产环境监控系统Nginx+Nagios+Cacti+Nconf大整合(最新源码安装)

    生产环境监控系统Nginx+Nagios+Cacti+Nconf大整合(最新源码安装)

    生产环境监控系统Nginx+Nagios+Cacti+Nconf大整合(最新源码安装)

    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生产环境监控系统Nginx+Nagios+Cacti+Nconf大整合(最新源码安装)
    再点击绿色按钮启用
    生产环境监控系统Nginx+Nagios+Cacti+Nconf大整合(最新源码安装)
    在Settings->npc中 ,勾上Remote Commands
    生产环境监控系统Nginx+Nagios+Cacti+Nconf大整合(最新源码安装)

    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

    测试:
    生产环境监控系统Nginx+Nagios+Cacti+Nconf大整合(最新源码安装)

    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页面按照安装提示一步步安装

    生产环境监控系统Nginx+Nagios+Cacti+Nconf大整合(最新源码安装)

    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}

    生产环境监控系统Nginx+Nagios+Cacti+Nconf大整合(最新源码安装)

    重新刷新页面,输入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

    • 本文由 发表于 2013-04-19
    • 转载请务必保留本文链接:https://linuxeye.com/314.html
    Nginx Lua Redis防止CC攻击 Linux

    Nginx Lua Redis防止CC攻击

    Nginx Lua Redis防止CC攻击实现原理:同一个外网IP、同一个网址(ngx.var.request_uri)、同一个客户端(http_user_agent)在某一段时间(CCseconds...
    Keepalived+Nginx架构整理版 Linux

    Keepalived+Nginx架构整理版

    Keepalived介绍 keepalived是一个类似于layer3, 4, 5 交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换。Keepalived的作用是检测web服务器的状态,如...
    Nginx中文域名配置 Linux

    Nginx中文域名配置

    Nginx虚拟主机上绑定一个带中文域名,比如linuxeye.中国,浏览器不能跳转。 why? 因为操作系统的核心都是英文组成,DNS服务器的解析也是由英文代码交换,所以DNS服务器上并不支持直接的中...
    Wordpress优化——利用Nginx fastcgi_cache缓存加速 Linux

    WordPress优化——利用Nginx fastcgi_cache缓存加速

    高并发网站架构的核心原则其实就一句话"把所有的用户访问请求都尽量往前推",即:能缓存在用户电脑本地的,就不要让他去访问CDN。 能缓存CDN服务器上的,就不要让CDN去访问源(静态服务器)了。能访问静...
    匿名

    发表评论

    匿名网友