三种软件的官方文档地址:

cacti:http://docs.cacti.net/manual:087:1_installation#installation

nagios:http://www.nagios.org/documentation

ganglia:http://ganglia.info/

在监控平台领域,这三款监控软件各有所长各有所短,这篇文档先介绍三款软件的安装配置方法,然后再将三种软件整合起来,使得每款软件的优点得到利用。

系统环境:rhel6 selinux and iptables disabled

cacti:

cacti软件通过net-snmp协议定时采集主机信息,并保存在mysql数据库中,当用户要查看的时候数据库中找到对应的rra文件,通过rrdtool软件进行绘图,然后将图形返回给用户。他的优势在于可以生成直观的报表。

所以cacti运行的前提是安装了rrdtool,mysql,php以及一个网页发布程序,本文采用apache。

首先安装需要的软件及依赖性:

 

 
  
  1. # yum install httpd mysql mysql-server mysql-devel php php-mysql php-snmp net-snmp net-snmp-utils net-snmp-libs net-snmp-devel libart_lgpl-devel libpng-devel freetype-devel cairo-devel pango-devel gcc make  

注意php-snmp包在Optional库里

安装好以后启动mysql和apache

 

 
  
  1. # /etc/init.d/httpd start 
  2. # /etc/init.d/mysqld start 

配置PHP:只需要修改/etc/php.ini文件,将时区设置为上海: 

date.timezone = Asia/shanghai

配置snmp:

cacti官方文档中snmp的配置过于繁琐,建议按照http://www.cyberciti.biz/nixcraft/linux/docs/uniqlinuxfeatures/mrtg/mrtg_config_step_3.php中的步骤进行配置。

 

 
  
  1. # vi /etc/snmp/snmpd.conf 

对配置中的一些语句进行替换

 

 
  
  1. #com2sec notConfigUser  default       public 
  2. com2sec local     localhost           public 
  3. com2sec mynetwork 192.168.0.0/24      public 
  4.  
  5. #group   notConfigGroup v1           notConfigUser 
  6. #group   notConfigGroup v2c           notConfigUser 
  7. group MyRWGroup v1         local 
  8. group MyRWGroup v2c        local 
  9. group MyRWGroup usm        local 
  10. group MyROGroup v1         mynetwork 
  11. group MyROGroup v2c        mynetwork 
  12. group MyROGroup usm        mynetwork 
  13.  
  14.  
  15. #view    systemview    included   .1.3.6.1.2.1.1 
  16. #view    systemview    included   .1.3.6.1.2.1.25.1.1 
  17. view all    included  .1 
  18.  
  19. #access  notConfigGroup ""      any       noauth    exact  systemview none none 
  20. access MyROGroup ""      any       noauth    exact  all    none   none 
  21. access MyRWGroup ""      any       noauth    exact  all    all    none 
  22.  
  23. #syslocation Unknown (edit /etc/snmp/snmpd.conf) 
  24. #syscontact Root <root@localhost> (configure /etc/snmp/snmp.local.conf) 
  25. syslocation Linux (RH3_UP2), Home Linux Router. 
  26. syscontact yejk <mrye1990@gmail.com> 
启动snmpd
 
 
  
  1. # chkconfig snmpd on 
  2. # service snmpd start 

 安装rrdtool

 

 
  
  1. # yum install  libxml2-devel 
  2. # tar zxf rrdtool-1.4.4.tar.gz 
  3. # cd rrdtool-1.4.4 
  4. # ./configure  
  5. # make 
  6. # make install 
  7. # ln -s  /opt/rrdtool-1.4.4/bin/rrdtool  /usr/local/bin 

安装cacti:

 
  
  1. # tar zxf cacti-0.8.7h.tar.gz 
  2. # mv cacti-0.8.7h /var/www/html/cacti 
  3. # cd /var/www/html/cacti/ 
  4. # useradd cacti 
  5. # chown -R cacti rra log 
  6. # mysql cacti < cacti.sql 

在数据库中创建一个供cacti使用的用户,仅有对cacti库操作的权限:

 
  
  1. #mysql 
  2. mysql> grant all on cacti.* to cacti@localhost identified by 'cacti'; 
  3. mysql> flush privileges; 
  4. mysql> quit 

  编辑cacti的配置文件,修改登录数据库的用户和密码

 
  
  1. # vim include/config.php  
  2. $database_type = "mysql"
  3. $database_default = "cacti"
  4. $database_hostname = "localhost"
  5. $database_username = "cacti"
  6. $database_password = "cacti"
  7. $database_port = "3306"
  8. $database_ssl = false
  9. $url_path = "/cacti/"

为cacti用户写一个crontab,使他没五分钟收集一次主机信息

 
  
  1. # su - cacti 
  2. $ crontab -e 
  3. */5 * * * * cactiuser php /var/www/html/cacti/poller.php > /dev/null 2>&1 

安装cacti加速器:cacti-spine:

 

 
  
  1. # yum install automake libtool 
  2. # tar zxf cacti-spine-0.8.7h.tar.gz  
  3. # cd cacti-spine-0.8.7h 
  4. # aclocal 
  5. # libtoolize --force 
  6. # autoheader  
  7. # autoconf  
  8. # automake 
  9. # ./configure  
  10. # make 
  11. # make install 
  12. # cd /usr/local/spine/etc/ 
  13. # mv spine.conf.dist spine.conf 
  14. # vim spine.conf  
  15. DB_Host         localhost 
  16. DB_Database     cacti 
  17. DB_User         cacti 
  18. DB_Pass         cacti 
  19. DB_Port         3306 
  20. DB_PreG         0 

 

打开http://192.168.0.100/cacti

在console-settings-paths-alternate poller path 写上 /usr/local/spine/bin/spine

再将console-settings-poller-poller type改为spine

注意如果文字是乱码的话需要安装中文支持

安装cacti插件管理器:

cacti可以通过安装插件大大丰富它的功能,插件安装叶非常简便,只要安装好插件管理器以后将要安装的插件文件夹放在/var/www/html/cacti/plugins中就可以在网页里进行安装。下面时安装插件管理器的方法:

 

 

 
  
  1. # tar zxf cacti-plugin-0.8.7h-PA-v3.0.tar.gz  
  2. # cd cacti-plugin-arch/ 
  3. # mysql -ucacti -pcacti cacti < pa.sql 
  4. # cp cacti-plugin-0.8.7h-PA-v3.0.diff /var/www/html/cacti/ 
  5. # cd /var/www/html/cacti/ 
  6. # patch -p1 -N < cacti-plugin-0.8.7h-PA-v3.0.diff 

 

 

打开http://192.168.0.100/cacti

在console-utilities-user management-admin-realm permissions勾选plugin management

 

安装三款插件:

 

 
  
  1. tar zxf settings-0.5.tar.gz -C /usr/local/apache/htdocs/cacti/plugins 
  2.  
  3. tar zxf monitor-0.8.2.tar.gz -C /usr/local/apache/htdocs/cacti/plugins 
  4.  
  5. tar zxf thold-0.4.2.tar.gz -C /usr/local/apache/htdocs/cacti/plugins 

打开http://192.168.0.100/cacti,进入插件管理器可直接进行安装,并可在settings中进行设置。

一些cacti简单的介绍:

 

Cacti 其实是一套 php 程序,一个 rrdtool 工具。它运用 snmpget 采集数据,使用 rrdtool 绘图。界面非常漂亮,它提供了强大的数据管理和用户管理功能,一张图是属于一个 host 的,每一个 host 又可以挂载到一个树状的结构上。用户的管理上,作为一个开源软件,它做到为指定一个用户能查看的“树”、host、甚至每一张图,还可以与 LDAP 结合进行用户的验证。 Cacti 还提供自己增加模板的功能,让你添加自己的 snmp_query和 script 。功能相当强大!

 cacti 是用 php 语言实现的一个软件,它的主要功能是用 snmp 服务获取数据, snmp 需要的变量数据是通过读取 mysql 数据库得到,然后用 rrdtool 储存和更新数据,当用户需要查看数据的时候用 rrdtool 生成图表呈现给用户。rrdtool 对数据的更新和存储就是对 rrd 文件的处理,rrd 文件是大小固定的档案文件,它能够存储的数据笔数在创建时就已经定义。1. Snmp 用来收集数据;2. Rrdtool 用来存储数据和生成图表;3. Mysql 用来配合 PHP 程序存储一些变量数据并对变量数据进行调用。

 
nagios:
cacti默认是以邮件发送警告信息的,虽然可以安装插件以实现其他方式进行告警,但不是他的强项,nagios有着强大的报警机制,下面是部署方法:
 
 
  
  1. # yum install httpd gcc make gd-devel perl-ExtUtils-Embed #安装编译所需要的软件包 
  2. # useradd nagios #运行nagios服务的用户 
  3. # usermod -G nagios apache #将apache用户加入到nagios组中,因为nagios程序通过apache发布与修改,而httpd程序的执行用户是apache,所以需要让apache有权限修改查看nagios文件 
  4. # tar jxf nagios-cn-3.2.3.tar.bz2 
  5. # cd nagios-cn-3.2.3 
  6. # ./configure --enable-embedded-perl 
  7. # make 
  8. # make all 
  9. # make install 
  10. # make install-init 
  11. # make install-commandmode 
  12. # make install-config 
  13. # make install-webconf 

 安装nagios插件:

 

 
  
  1. # yum install mysql-devel openssl-devel -y #安装编译所需的安装包 
  2. # tar zxf nagios-plugins-1.4.15.tar.gz  
  3. # cd nagios-plugins-1.4.15 
  4. # ./configure --with-nagios-user=nagios --with-nagios-group=nagios --enable-extra-opts --enable-libtap --enable-perl-modules 
  5. # make 
  6. # make install 

 #nagios 配置

 
  
  1. # vi /usr/local/nagios/etc/nagios.cfg #nagios 配置 
  2. cfg_file=/usr/local/nagios/etc/objects/hosts.cfg 
  3. #新建 hosts.cfg 文件,存放主机与主机组定义 
  4. cfg_file=/usr/local/nagios/etc/objects/services.cfg #新建 services.cfg 文件,存放服务与服务组定义 
  5. #cfg_file=/usr/local/nagios/etc/objects/localhost.cfg  #注释 localhost.cfg 文件 

注意,这里软件装好的时候默认时读取licalhost.cfg这个文件中的被监控的主机与服务的设置,我们把它注释掉,新加入两个文件,分别管理被监控的主机、主机组与被监控的服务与服务组

编辑被监控主机与主机组的文件:

 
  
  1. # cd /usr/local/nagios/etc/objects 
  2. # vim /usr/local/nagios/etc/objects/hosts.cfg 
  3.  
  4. define host{ 
  5.         use                     linux-server 
  6.         host_name               监控主机 
  7.         alias                   nagios 服务器 
  8.         address                 127.0.0.1 
  9.         icon_p_w_picpath              web.gif 
  10.         statusmap_p_w_picpath         web.gd2 
  11.         2d_coords               100,300 
  12.         3d_coords               100,300,100 
  13.         } 
  14.  
  15. define hostgroup{               ;主机组不是必须的 
  16.         hostgroup_name  linux-servers  
  17.         alias           Linux Servers          
  18.         members         *     
  19.         } 

编辑被监控服务的时候因为内容很多,所以可以拷贝原来的localhost.cfg文件进行一些修改来使用:

 
  
  1. cp localhost.cfg services.cfg 

 对services.cfg进行修改,在vi编辑器中的命令模式下用d1G去掉servicegroup以上的hosts部分,并用:%s/田朝阳家用机/监控主机/g命令将文件中用于被监控的主机全部改为刚刚在hosts文件中设置的主机,并在servicegroup部分做如下修改,其他不变:

 

 
  
  1. define servicegroup{ 
  2.         servicegroup_name 系统负荷检查 
  3.         alias 负荷检查 
  4.         members 监控主机,进程总数,监控主机,登录用户数,监控主机,根分区,监控主机,>交换空间利用率 
  5.         } 
  6.  
  7. define servicegroup{ 
  8.         servicegroup_name 全部联通性检查 
  9.         alias 联通性检查 
  10.         members 监控主机,PING 
  11.         } 

 

使用命令

 
  
  1. # htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin 

修改nagios管理员的登录密码,注意必须是nagiosadmin,否则可以登录但是无法查看状态

 

使用命令

 
  
  1. /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg 

 校验配置文件语法的正确性,没有错误的话

 

 
  
  1. service nagios start  
  2. service httpd start  

 

 

 

用nagios监控 mysql 主机

在mysql服务器端创建一个监控检测账户,只给select权限,不需要密码:

 

 
  
  1. mysql> create database nagdb; 
  2. mysql> grant select on nagdb.* to nagdb@'192.168.0.86' ; 
  3. mysql> flush privileges; 

 

在 nagios 主机上检测是否可以连接 mysql 主机上的 mysql 服务

 

 
  
  1. /usr/local/nagios/libexec/check_mysql -H 192.168.0.36 -u nagdb -d nagdb 
  2. Uptime: 286  Threads: 1  Questions: 16  Slow queries: 0  Opens: 15  Flush tables: 1  Open tables: 8  Queries per second avg: 0.55