在企业网络运维过程中,管理员必须时刻关注服务器的运行状态,如CPU、内存、磁盘空间使用情况等。为了能够及时的发现问题,尽量减少故障的发生。当网络中的设备,服务器等数量较多时,可以部署一套监控系统来实时跟踪服务器,我们通常会借助一些软件来实现。今天就以Cacti套件为例,介绍服务器集中监测体系的构建和使用。
今天所讲的cacti服务器监控系统与windows操作系统中的“性能监视器”属于同一类,都是为了监控cpu占用,内存使用,运行进程数,磁盘空间,网卡流量等各种数据。但不同的是,cacti不仅可以监控linux,也可以监控windows服务器,路由器,交换机等网络设备,主要基于snmp协议来搜集数据。Cacti(使用php实现)本身是一个web界面的软件,通过调用net-snmp工具来采集检测数据,并结合RRDtool(轮询数据库工具)记录数据并绘制图片,MySQL数据库并不存储在snmp捕获到的数据,存在于rrdtool生成rrd文件中,这些文件位于cacti目录下的rra目录中。最终以web页面展示给管理员用户。cacti需要运行在lamp平台上,配置简单,直观,而且支持插件和数据模板,可扩展其功能
一、准备环境LAMP及net-snmp和rrdtoll(以centos6.5为例)
yum -y install httpd(web服务器apache) mysql mysql-devel(数据库mysql) mysql-server zlib freetype libjpeg fontconfig gd libxml2 php-gd php(cacti使用php来实现) php-mysql(php支持mysql)
service httpd start
service mysqld start
vim /var/www/html/zm.php //做一个php测试页,确保lamp协作正常。
<?php
phpinfo();
?>
//安装net-snmp-utils软件包,LAMP协议采集检测数据,需要这些程序提供。
yum -y install net-snmp net-snmp-utils(一些snmp的扩展命令如:snmpwalk、snmpget等)
service snmpd start
chkconfig snmpd on
//安装rrdtool软件包
首先安装依赖包
yum -y install cairo-devel zlib libxml2 libxml2-devel glib2 glib2-devel libpng-devel freetype-devel libart_lgpl pango gango-devel pear-devel perl-CPAN
//安装rrdtool软件包
tar zxf rrdtool1-1.4.8...gz
cd rrdtool1-1.4.8
./configure --prefix=/usr/local/ && make && make install
二、部署cacti、设置数据库连接。
//部署cacti源代码
tar zxf cacti-0.8.8b...gz
mv cacti-0.8.8b/ var/www/html/cacti/ //cacti释放出来的web服务器网页目录。
useradd cacti
chown -R cacti:cacti /var/www/html/cacti/
//添加cacti库和cacti用户,并授权
mysql -u root -p //进入mysql数据库,注:刚创建的root密码为空
给MySQL密码 mysqladmin -u root -p password=‘123.com’
password:*******
mysql>create database cacti default character set utf8; //数据库字符集为utf8,否则为出现乱码现象。
mysql>grant all on cacti.* to 'cacti'@‘localhost’ identified by ‘cacti’;
mysql>exit
cd /var/www/html/cacti/
mysql -u cacti -p cacti < cacti.sql
//调整cacti配置文件。
vim include/config.php
$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的根目录,这个目录是cacti的文件目录下,我们后面还需要修改httpd的主配置文件。
2)cacti的初始化安装
修改httpd服务的主要配置,网站根目录、索引页、字符集等
vim /etc/httpd/conf/httpd.conf
DocumentRoot "/var/www/html/cacti" //292行,cacti源码目录作为网站根目录
<Directory "/var/www/html/cacti"> //317行,设置目录访问权限
Options Indexes none //331行
AllowOverride None //338行
Order allow,deny //343行
Allow from all //344行
</Directory> //346行
DirectoryIndex index.php index.html index.html.var //402行,默认首页
AddDefaultCharset utf-8 //759行,默认字符集为UTF-8
service httpd reload
3)初始化cacti系统
在浏览器中输入http://ip,然后根据提示安装。
三、配置客户端(被控端snmpd)
无论是路由器、交换机、还是linux或windows服务器,只要正确支持SNMP协议,并允许Client服务器采集数据,就能够对其进行监测。下面仅介绍在linux服务器中启用SNMP支持并设置共同体名的简单方法。
ps:共同体名,值的是一种验证机制,所有的client都必须使用同一个共同体名,就像我们之前学习的hsrp的组一样,只有组号相同才能是一个组的,这里也是如此,只有共同体名相同的时候,Cacti才能通过这个共同体名对client进行监控。
需要安装net-snmp、lm_sensors软件包,然后通过修改其配置文件/etc/snmp/snmpd.conf,并启动snmpd服务,并建立规则,默认监听UDP的161号端口。
yum -y install net-snmp lm_sensors
vim /etc/snmp/snmpd.conf
com2sec notConfigUser 192.168.1.1 public //41行192.168.1.1指的是Cacti的服务器IP(默认是default),表示允许其查询本机数据,public指的就是共同体名,用来识别及验证
access notConfigGroup "" any noauth exact all none none //62行all表示开放所有的SNMP查询权限(默认是 SystemView)
view all included .1 80 //85行去掉注释之后,以便支持各种查询。
2)vim /etc/php.ini //修改时区 (采集数据的时候会出现很多提示信息,说建议改时区)
date.timezone = Asia/Chongqing //946行去掉注释
3)crontab -e
*/5 * * * * /usr/bin/php /var/www/html/cacti/poller.php > /dev/null
/usr/bin/php /var/www/html/cacti/poller.php //执行首次数据采集
4)安装percona-mysql-monitor插件 ,并导入模板(控制面板-导入模板-浏览 ,找到要加入的模板,最后点击‘lmport’)
tar zxf percona-monitoring-pu......gz
cd percona-moitoring...4/cacti/scripts/
cp ss_get_mysql.... /var/www/html/cacti/scripts/
5)在MySQL数据库授权用户
grant process , super on *.* to cactiuser@'192.168.1.1' identified by 'cactiuser';
四、使用cacti的web控制台监控流量
- 添加设备
- 设置监测项目
- 生成监测图像
- 定期采集监测数据
- 查看监测结果(如下图)