在企业网络运维过程中,管理员必须时刻关注服务器的运行状态,如CPU、内存、磁盘空间使用情况等。为了能够及时的发现问题,尽量减少故障的发生。当网络中的设备,服务器等数量较多时,可以部署一套监控系统来实时跟踪服务器,我们通常会借助一些软件来实现。本篇博客以Cacti套件为例,介绍服务器集中监测体系的构建和使用。


Cacti简介

    Cacti是一款使用PHP语言开发的性能与流量监测工具,与Windows操作系统中的“性能监视器”属于同一类,都是为了监控CPU占用,内存使用,运行进程数,磁盘空间,网卡流量等各种数据。但不同的是,Cacti不仅可以监控Linux,也可以监控Windows服务器,路由器,交换机等网络设备,主要基于SNMP协议来搜集数据。Cacti本身是一个web界面的软件,通过调用Net-SNMP工具来采集检测数据,并结合RRDtool(轮询数据库工具)记录数据并绘制图片,最终以Web页面展示给管理员用户。Cacti需要运行在LAMP平台上,配置简单,直观,而且支持插件和数据模板,可扩展其功能。

 

1. 工作原理

    Cacti可以从逻辑上分为三个部分、第一部分:被监测的对象,也就是客户端。第二部分:监测平台,也就是服务器端。第三部分:管理平台。Cacti采用了两种结构实现功能,一种是C/S结构,主要是实现服务器到客户端监控;另外一种就是B/S结构,主要完成对Cacti平台的管理,从下图我们可以看出,管理端是在Web上对Cacti进行管理。

截图01.png

    简单的整理一下Cacti的工作过程。

    首先通过LAMP平台部署Cacti监控工具,之后通过管理端的浏览器登录Cacti进行对其他客户端的设置,可以从上图看到Cacti采集数据时必须要使用SNMP协议来连接客户端进而能够采集数据,也就是说客户端必须支持SNMP协议,监控之后通过RRDtool来生成图表。

 


案例:构建Cacti监测系统

实验环境:公司的网关、网站、数据库等多台服务器均采用RHEL6.5系统,要求构建Cacti监测系统。以便管理员更快速、便捷的了解各服务器的状态,及时发现和解决潜在的问题,如下图所示:

截图02.png 


描述需求: 

(1)通过Cacti集中监测网关、网站、数据库等服务器

(2)能在网管工作站中使用浏览器查看监测数据

(3)监测的信息包括CPU占用、内存使用、网卡流量、根分区使用情况


配置步骤如下:

1. 配置Cacti集中监测平台

(1)搭建LAMP平台

[root@localhost ~]# yum -y install httpd
[root@localhost ~]# yum -y install mysql mysql-server mysql-devel
[root@localhost ~]# yum -y install zlib freetype libjpeg fontconfig gd libxml2 php-gd
[root@localhost ~]# yum -y install php php-mysql
[root@localhost ~]# service httpd start
[root@localhost ~]# service mysqld start
[root@localhost ~]# vim /var/www/html/index.php
<?php
phpinfo();
?>


    测试LAMP平台是否工作正常,如果出现下面的页面,说明配置成功。

截图03.png



(2)安装Net-SNMP、RRDtool等软件支持 

Cacti平台通过snmp协议采集检测数据,这些工具程序由net-snmp-utils软件包提供,Rrdtool软件包主要用于数据记录和图表绘制。

[root@localhost ~]# yum -y install net-snmp net-snmp-utils
[root@localhost ~]# service snmpd start   
[root@localhost ~]# chkconfig snmpd on

[root@localhost ~]# yum -y install cairo-devel zlib libxml2 libxml2-devel glib2 glib2-devel \
> libpng libpng-devel freetype freetype-devel libart_lgpl pango pango-devel perl perl-devel perl-CPAN
[root@localhost ~]# tar zxf rrdtool-1.4.8.tar.gz 
[root@localhost ~]# cd rrdtool-1.4.8
[root@localhost rrdtool-1.4.8]# ./configure --prefix=/usr/local/rrdtool
[root@localhost rrdtool-1.4.8]# make && make install


(3)安装Cacti源码包,设置数据库连接

[root@localhost ~]# tar zxf cacti-0.8.8b.tar.gz 
[root@localhost ~]# mv cacti-0.8.8b/ /var/www/html/cacti
[root@localhost ~]# useradd cacti
[root@localhost ~]# chown -R cacti:cacti /var/www/html/cacti/
[root@localhost ~]# mysql -u root 
mysql> create database cacti default character set utf8;
Query OK, 1 row affected (0.01 sec)         //建立数据库

mysql> grant all on cacti.* to 'cacti'@'localhost' identified by 'cacti';
Query OK, 0 rows affected (0.04 sec)        //授权一个数据库用户

mysql> exit
Bye
[root@localhost ~]# cd /var/www/html/cacti/       //导入预设库
[root@localhost cacti]# mysql -u cacti -pcacti cacti < cacti.sql 

[root@localhost cacti]# vim include/config.php    //调整Cacti配置文件
$database_type = "mysql";                //数据库类型
$database_default = "cacti";             //数据库名称
$database_hostname = "localhost";        //数据库服务器地址
$database_username = "cacti";            //授权用户
$database_password = "cacti";            //授权密码
$database_port = "3306";                 //数据库服务的端口
$database_ssl = false;                   //不启用ssl
$url_path = "/";                         //指定cacti的根目录


(4)Cacti的初始化安装

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf     //修改httpd配置
DocumentRoot "/var/www/html/cacti"            //292行,指定网站根目录
<Directory "/var/www/html/cacti">             //317行,设置目录访问权限
    Options Indexes none                      //331行
    AllowOverride None                        //338行
    Order allow,deny                          //343行
    Allow from all                            //344行
DirectoryIndex  index.php index.html          //402行,第一默认首页为index.php
AddDefaultCharset UTF-8                       //757行
[root@localhost ~]# service httpd restart   
[root@localhost ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
[root@localhost ~]# iptables -I INPUT -p tcp --dport 3306 -j ACCEPT


2. 配置客户端(监测对象)

    无论是路由器、交换机、还是Linux或Windows服务器,只要正确支持SNMP协议,并允许Client服务器采集数据,就能够对其进行监测。下面仅介绍在linux服务器中启用SNMP支持并设置共同体名(识别及验证字串)的简单方法。

PS:共同体名,指的是一种验证机制,所有的Client都必须使用同一个共同体名,只有共同体名相同的时候,Cacti才能通过这个共同体名对Client进行监控。

     需要安装net-snmp、lm_sensors软件包,然后通过修改其配置文件/etc/snmp/snmpd.conf,并启动snmpd服务,并建立规则,默认监听UDP的161号端口。 

[root@localhost ~]# yum -y install net-snmp lm_sensors
[root@localhost ~]# vim /etc/snmp/snmpd.conf
com2sec notConfigUser  192.168.4.254       public   //41行
access  notConfigGroup ""      any       noauth    exact all none none   //62行                                                                                                              //62行
view all    included  .1               80                         //85行 
第41行:192.168.4.254指的是Cacti的服务器IP(默认是default),表示允许其查询本机数据,public指的就是共同体名,用来识别及验证
第62行:all表示开放所有的SNMP查询权限(默认是 SystemView)
第85行:去掉注释之后,以便支持各种查询。
[root@localhost ~]# service snmpd start
[root@localhost ~]# iptables -I INPUT -p udp --dport 161 -j ACCEPT


3. 在网管工作站

(1)在浏览器中访问Cacti服务器的Web服务,初次访问将会自动跳转到Cacti安装指南界面,根据提示,即可进入Web管理界面。

截图04.png

截图05.png

截图06.png

截图07.png

截图08.png



(2)添加被控设备/主机,设置监控项目

单击导航栏中的“management(管理)”下的“devices(设备)”,可以管理被控设备或主机。点击devices---Add

截图09.png

截图11.png


(2)生成监测图像

创建图像

截图12.png

添加图像到监测树

截图13.png

截图14.png

截图15.png



(3)定期采集监测数据

[root@localhost ~]# vim /etc/php.ini
date.timezone = Asia/Chongqing      //946行去掉注释
[root@localhost ~]# /usr/bin/php /var/www/html/cacti/poller.php    //执行首次数据采集
[root@localhost ~]# crontab -u cacti -e      //每5分钟,执行一次
*/5 * * * * /usr/bin/php /var/www/html/poller.php > /dev/null


(4)查看监测结果

单击cacti管理控制台左上方的graphs标签,然后展开左侧的default tree树,选择被控主机后即可看到各监测图像。


(5)安装percona-mysql-monitor插件

Cacti工具默认的模板只能监控机器的cpu,内存和磁盘等信息,如果想要监控mysql,就需要安装插件,操作如下

1)解压缩软件到目标位置

[root@localhost ~]# tar zxf percona-monitoring-plugins-1.1.4.tar.gz
[root@localhost ~]# cd percona-monitoring-plugins-1.1.4/cacti/scripts
[root@localhost scripts]# cp ss_get_mysql_stats.php /var/www/html/cacti/scripts/

 

2)在mysql数据库授权用户

[root@localhost ~]# mysql -u root -p
mysql> grant process , super on *.* to cactiuser@'192.168.4.254' identified by 'cactiuser';
[root@localhost ~]# iptables -I INPUT -p tcp --dport 3306 -j ACCEPT


3)为设备添加项目

    在Cacti管理界面中进行添加,点击Consose——Import Templates——选择文件,选择解压后的cacti\templat目录下的cacti_host_template_percona_mysql_server_ht_0.8.6i-sver1.1.4.xml,最后单击import导入。



     导入后的情况如下图所示:



4)添加模板

截图01.png

 

5)创建图像

截图02.png

 

 


 

6)重新采集(或者等5分钟之后)

[root@localhost scripts]# /usr/bin/php /var/www/html/cacti/poller.php

7)查看监测结果

截图03.png