大龙的博客

常用链接

统计

最新评论

开源监控解决方案Nagios+PNP4Nagios+NConf+NDOUtils整合部署

Nagios在监控方面的强大功能,以及基于GPLv2的开源特性,使其在监控领域具有超群的性价比,深的广大运维师的好评。

而今天作者这里提到的“nagios+pnp4nagios+nconf+ndoutils”是以nagios为核心、伴以多款开源软件来进行的整合部署,从而实现监控信息图形化、web页面定义定义监控配置、监控信息存储等一系列功能的解决方案。 

下面就除nagios之外需要用到的几个开源软件进行简要介绍:

pnp4nagios是基于RRD轮循(环状)数据库中所提供的综合信息,以可视化图形的方式呈现给用户的一款nagios插件;

nconf是基于PHP使用户通过web页面实现对nagios各项属性进行配置,诸如模板定义、添加修改监控的主机/服务等操作;

ndoutils可以导出nagios通过SNMP捕获到的当前和历史数据并存储到MySQL数据库中,并且自身以一个独立守护进程的状态存在。

下图简述他们之间协同工作的原理

以下的内容作者将一步步的剖析整套方案的部署过程:

一、成功安装配置nagios

在上一篇博文Nagios远程监控软件的安装与配置详解中作者已经对nagios的工作原理以和安装及配置流程进行了详细地说明,这里就不在赘述。

Ps:为了不影响后面步骤的正常进行,请保证您已成功安装nagios、nagios-plugins和nrpe。

二、rrdtool与pnp4nagios的安装与配置

1.rrdtool的安装需要一系列繁杂的依赖关系下面提供两种安装方法

i.编译安装

  1. yum install -y pango pango-devel freetype freetype-devel libpng libpng-devel gettext gettext-devel libjpeg libjpeg-devel gd gd-devel libxml2 libxml2-devel libiconv libiconv-devel  qpixman qpixman-devel glib glib-devel cairo cairo-devel libart*  
  2. #这里将编译安装中所需的依赖果断全部yum了 
  3. tar xvf rrdtool-1.4.5.tar.gz 
  4. #解压文件
  5. cd rrdtool-1.4.5 
  6. ./configure --prefix=/usr/local/rrdtool 
  7. make && make install 
  8. #编译安装

ii.本地yum安装

  1. yum localinstall -y rrdtool-perl-1.4.4-1.el5.wrl.i386.rpm rrdtool-devel-1.4.4-1.el5.wrl.i386.rpm rrdtool-1.4.4-1.el5.wrl.i386.rpm 
  2. #下载并安装包含所有rrdtool依赖关系的rpm包和rrdtool 

Ps:由于没有找到rrdtool-1.4.5的rpm包...囧,这里就只能使用1.4.4版了

2.安装pnp4nagios

  1. tar zxvf pnp4nagios-0.6.14.tar.gz 
  2. #解压 
  3. cd pnp4nagios-0.6.14 
  4. ./configure --prefix=/usr/local/pnp4nagios --with-rrdtool=/usr/local/rrdtool/bin/rrdtool --with-nagios-user=nagios --with-nagios-group=nagcmd --with-httpd-conf=你的apache的conf.d目录
  5. #注意这里的nagios用户和nagcmd组已在安装nagios时创建完成 

注意:这里作者在使用编译安装rrdtool时遇到报错

解决方法:

  1. cp -R /usr/local/rrdtool/lib/perl/5.8.8/i386-linux-thread-multi/* /usr/lib/perl5/5.8.8/i386-linux-thread-multi/ 
  2. ./configure --prefix=/usr/local/pnp4nagios --with-rrdtool=/usr/local/rrdtool/bin/rrdtool --with-nagios-user=nagios --with-nagios-group=nagcmd 
  3. #将需要与perl相关文件复制过去后,重新编译 

Ps:使用yum安装rrdtool,则忽略此步骤。

  1. make all && make install && make install-webconf && make install-config && make install-init 
  2. #编译安装,生成相应的配置及初始化文件 
  1. cd   /usr/local/pnp4nagios/etc 
  2. mv misccommands.cfg-sample  misccommands.cfg 
  3. mv nagios.cfg-sample nagios.cfg 
  4. mv rra.cfg-sample rra.cfg 
  5. cd /usr/local/pnp4nagios/etc/pages/ 
  6. mv web_traffic.cfg-sample web_traffic.cfg 
  7. cd ../check_commands 
  8. mv check_all_local_disks.cfg-sample  check_all_local_disks.cfg 
  9. mv check_nrpe.cfg-sample  check_nrpe.cfg 
  10. mv check_nwstat.cfg-sample  check_nwstat.cfg 
  11. #将上述配置文件重命名,使之能够被程序识别 

重启服务

  1. service npcd restart 

修改nagios相关配置文件中参数

  1. process_performance_data=1 
  2. #将此变量值设为1 
  3. host_perfdata_command=process-host-perfdata 
  4. service_perfdata_command=process-service-perfdata 
  5. #取消这两项的注释 
  1. cd /usr/local/nagios/etc/objects 
  2. vim commands.cfg 
  3. #对nagios命令配置文件进行设置 
  4. # 'process-host-perfdata' command definition 
  5. define command{ 
  6.        command_name   process-host-perfdata 
  7.        command_line   /usr/local/pnp4nagios/libexec/process_perfdata.pl 
  8.        } 
  9. # 'process-service-perfdata' command definition 
  10. define command{ 
  11.        command_name   process-service-perfdata 
  12.        command_line   /usr/local/pnp4nagios/libexec/process_perfdata.pl 
  13.        } 
  14. #添加上面两行在文件的末行 ,并删除或注释掉原有对process-host-perfdata和process-service-perfdata进行定义的字段 

说明:command.cfg文件的默认设置对process-host-perfdata 和 process-service-perfdata有定义,如果直接添加而不删除默认定义会发生冲突,进而而导致在检测配置文件时报错。

  1. vim templates.cfg 
  2. #对nagios的模板配置文件进行修改 
  3. define host { 
  4. name          host-pnp 
  5. action_url    /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_' class='tips' rel='/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=_HOST_ 
  6. register   0 
  7. define service { 
  8. name         srv-pnp 
  9. action_url   /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$' class='tips' rel='/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=$SERVICEDESC$ 
  10. register   0 
  11. #在模版中添加pnp4nagios的定义 
  1. cp ../pnp4nagios-0.6.14/contrib/ssi/* /usr/local/nagios/share/ssi/ 
  2. #回到解压目录下,复制鼠标悬停图标显示,预览绘图所需的文件 

定义监控服务/主机

  1. cd /usr/local/nagios/etc/ 
  2. vim mylinux.cfg 
  3. #自定义监控主机和监控服务 
  4. define host{ 
  5.            use             linux-server 
  6.           host_name     mylinux 
  7.           alias            mylinux 
  8.           address        192.168.0.72 
  9.         } 
  10. #定义监控主机 
  11. define service{ 
  12.         host_name               mylinux 
  13.         use                     generic-service,srv-pnp 
  14.         service_description     PING 
  15.         check_command           check_ping!100.0,20%!500.0,60%! 
  16.         } 
  17. define service{ 
  18.        hostgroup_name           mylinux 
  19.        use                    generic-service,srv-pnp 
  20.         service_description     remote_load 
  21.         check_command           check_nrpe!check_load 
  22.        } 
  23. #定义监控的服务 
  24. define serviceextinfo { 
  25.   host_name             mylinux     #与主机名对应 
  26.   service_description   remote_load     #与要显示的服务对应 
  27.   action_url   /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$' class='tips' rel='/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=$SERVICEDESC$ 
  28. #这是向nagios监控界面对应服务添加pnp4nagios图标的方法 

说明:pnp4naigos在安装关联nagios后会对所监控的服务进行图形化显示,但是并非所有服务都会自动在nagios监视见面出现pnp4nagios的图标,故用以上字段予以定义。

Ps:具体的监控主机以及监控服务在Nagios远程监控软件的安装与配置详解中有详细说明,这里就不做重复介绍了^_^

  1. nagios -v /var/www/nafios/etc/nagios.cfg        
  2. #检测配置文件语法,在先前nagios配置中已经定义过nagios命令的PATH故直接使用nagios命令 
  3. service nagios restart 
  4. #重启服务 

刷新nagios界面,您会发现在之前定义的服务后面对应的回出现pnp4nagios的图标

且支持鼠标悬停显示

点击pnp4nagios图标后进图绘图界面



二、安装配置nconf

首先对mysql数据库进行定义

  1. service mysqld start 
  2. #启动mysql 
  3. mysqladmin -uroot -p password 'RedHat'; 
  4. #给mysql添加管理员密码 
  5. mysql –uroot –p 
  6. #进入mysql数据库 
  7. mysql> create database nconf;  
  8. #创建nconf数据库 
  9. mysql> grant all privileges on nconf.* to nconf@localhost identified by 'nconf'; 
  10. #创建nconf用户并赋权   
  11. mysql> flush privileges;   
  12. #刷新特权表 
  13. mysql>quit 

解压nconf到指定目录下

  1. tar -zxf nconf-1.2.6-0.tgz -C /var/www/html/ 
  2. cd /var/www/html/nconf 
  3. chown -R apache.apache config/ temp/ static_cfg/ output/ 
  4. #给相关文件赋予权限 

SELINUX安全上下文

  1. chcon -R -t httpd_sys_content_t /var/www/html/nconf/  
  2. chcon -t httpd_sys_script_exec_t /var/www/html/nconf/bin/nagios  
  3. #修改文件的安全上下文  

 Ps:如果您的SELinux已经关闭,忽略此步操作

 http://您nagios监控端的IP/nconf

 在web页面按照安装提示一步步安装

 

#使用刚才创建的nconf数据库和nconf数据库用户/密码

#成功连接mysql数据库

#输入用于通过nconf生成nagios配置文件所需的nconf路径和nagios命令路径

#设置nconf管理员密码,此时默认登录用户为admin

#网页安装完成

  1. rm -rf INSTALL INSTALL.php  UPDATE UPDATE.php  
  2. #删除安装所需的初始化文件 
  3. ln -s /usr/local/nagios/bin/nagios bin/nagios  
  4. #给nagios命令创建符号链接 
  5. chmod +x /var/www/html/nconf/bin/generate_config.pl  
  6. #给与nagios关联的配置文件赋予执行权限 
  7. chown -R apache.apache  bin 
  8. #修改文件的属组和属主 

重新刷新页面,输入admin/您设置的密码,进入nconf页面

#nconf的主页面

#尝试生成配置文件,以测试是否与nagios成功关联

到此nconf就安装完成了!

NConf 使用方法:

查看这两个文件是否有执行权限

  1. chmod +x /var/www/html/nconf/bin/generate_config.pl  
  2. #用来将web页面的配置设置转化成文nagios配置文件的脚本,其需要apache用户有可执行权限 
  3. chmod +x  /usr/local/nagios/bin/nagios 
  4. #给other执行权限,用来检测nagios配置文件是否有语法错误 

使用流程:

注意:nconf在【Generate Nagios config】将您的生成nagios配置文件是/var/www/html/nconf/output/NagiosConfig.tgz,而并非直接导入nagios中。

1.在web页面对监控服务和主机配置完毕,点击【Generate Nagios config】

2.deploy_local.shnconf自带配置文件导入脚本

  1. chmod +x /var/www/html/nconf/ADD-ONS/deploy_local.sh         
  2. #这一步不解释,你懂的 
  3. /var/www/html/nconf/ADD-ONS/deploy_local.sh 
  4. #手动执行此脚本,将在/usr/local/nagios/etc下生成两目录Default_collector与global 

3.修改nagios主配置文件

  1. vim /usr/local/nagios/etc/nagios.cf 
  2. #将其中cfg_file=*******字段全部注释 
  3. cfg_dir=/usr/local/nagios/etc/Default_collector 
  4. cfg_dir=/usr/local/nagios/etc/global 
  5. #添加将其配置文件指向 
  6. service nagios reload 
  7. #重载nagios配置文件使之生效 

4.添加到crontab

  1. crontab -e 
  2. */1 * * * *  /var/www/html/nconf/ADD-ONS/deploy_local.sh 
  3. #每分钟监测一下是否有更新,有更新就自动覆盖最新的配置文件 

四、安装配置ndoutils

  1. mysql -u root -p 
  2. mysql>create database nagios; 
  3. mysql> grant all privileges on nagios.* TO nagios@localhost identified by 'nagios'; 
  4. #安装之前先创建nagios数据库,并将此数据库所有权限赋予nagios用户 
  5. mysql>flush privileges;  

Ps:如果之前过程中nagios已经创建,此步骤忽略

  1. tar -xvf ndoutils-1.4b9.tar.gz 
  2. cd ndoutils-1.4b9 
  3. cp /root/ndoutils1.4b9_light.patch ./ 
  4. patch -p1 -N < ./ndoutils1.4b9_light.patch 
  5. #给ndoutils打补丁 
  6. ./configure --prefix=/usr/local/nagios/ --enable-mysql --disable-pgsql --with-ndo2db-user=nagios --with-ndo2db-group=nagios 
  7. #指定安装目录为nagios程序位置 
  8. make 

向mysql中导入数据

  1. cd db 
  2. ./installdb -u root -p 您数据库的密码 -d nagios 
  3. #将初始数据导入数据库 

检测数据导入情况

  1. mysql -u root -p 
  2. mysql>use nagios; 
  3. mysql>show tables;  
  4. mysql>quit 

  1. cd ndoutils-1.4b9 
  2. cp ./src/ndomod-3x.o /usr/local/nagios/bin/ndomod.o 
  3. cp ./src/ndo2db-3x /usr/local/nagios/bin/ndo2db 
  4. cp ./config/ndo2db.cfg-sample /usr/local/nagios/etc/ndo2db.cfg 
  5. cp ./config/ndomod.cfg-sample /usr/local/nagios/etc/ndomod.cfg 
  6. #拷贝相关配置文件到对应目录 
  7. chmod 774 /usr/local/nagios/bin/* 
  8. chown nagios:nagios /usr/local/nagios/bin/* 
  9. chown nagios:nagios /usr/local/nagios/etc/* 
  10. #修改文件的属主属组权限 

调整配置文件

  1. vim /usr/local/nagios/etc/ndo2db.cfg  
  2. #修改ndo的主配置文件 
  3. db_name=nagios 
  4. #指定数据库为nagios 
  5. db_user=nagios 
  6. db_pass=nagios 
  7. #设置以nagios用户登入mysql的账号密码 
  8. vi /usr/local/nagios/etc/nagios.cfg 
  9. #修改nagios主配置文件 
  10. broker_module=/usr/local/nagios/bin/ndomod.o config_file=/usr/local/nagios/etc/ndomod.cfg 
  11. #在末行添加 

收尾工作

  1. cp ./daemon-init /etc/init.d/ndo2db 
  2. chmod +x /etc/init.d/ndo2db 
  3. chkconfig --add ndo2db  
  4. chkconfig ndo2db on
  5. #添加启动脚本 
  1. service nagios restart 
  2. service ndo2db start 
  3. #重启服务 

查看日志文件,以验证ndoutils配置是否成功

  1. tail -20 /usr/local/nagios/var/nagios.log  
  2. #或者 
  3. tail -20 /var/log/messages 

mysql数据库与nagios通过ndoutils关联成功!

至此关于对实现nagios+pnp4nagios+nconf+ndoutils的整合部署就告一段落,以上内容在您实现过程中出现的任何问题,或对以上任何内容的补充,都欢迎在此交流; 并请各位高手前辈大神达人予以批评指正,谢谢

参考资料:http://www.linuxso.com/linuxxitongguanli/7049.html

 

posted on 2011-11-12 22:45 大龙 阅读(2747) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理