您的位置:首页 > 运维架构

Cacti流量监控系统搭建维护手册

2009-06-01 09:04 411 查看
 
中国联合网络通信有限公司广西壮族自治区分公司
2008年12月
安装篇.... 3
Cacti介绍... 3
关于CactiEZ. 3
从CactiEZ安装Cacti流量监控系统... 3
CactiEZ服务器的配置... 5
网络配置... 5
安装SSH服务... 6
时区设置... 8
设置NTP服务... 8
Cacti流量监控系统的汉化... 11
PHP页面的汉化... 11
rrdtool的汉化... 12
CactiEZ服务器的优化... 14
关闭yum夜间自动更新功能... 14
hosts.deny & hosts.allow.. 15
关闭掉不使用的服务及定期作业... 16
基础应用篇.... 17
添加需要监控的设备... 17
创建需要监控的图表... 18
图形树的创建... 19
放置想要的图表... 21
Cacti流量监控系统的用户管理... 21
Cacti流量监控系统的相关设定... 23
Settings. 23
Misc:... 24
高级应用篇.... 24
Threshold. 24
Monitor 25
Weathermap. 26
Advanced Ping. 33
打造自己的模板... 35
添加链路占用率... 36
添加端口信息... 39
CactiEZ默认登陆账号信息... 41
登陆操作系统... 41
首次登陆Cacti 41
登陆webmin管理界面... 42
配置NTOP. 42
配置nagios. 42
安装篇 Cacti介绍
Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。它通过snmpget来获取数据,使用RRDtool绘画图形。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看的树状结构、host以及任何一张图,同时也能自己增加模板,功能非常强大完善,界面友好。其官方网站:http://www.cacti.net/
关于CactiEZ
CactiEZ是一个专门用作运行cacti的linux发行版,该版本由Jimmy Conner 制作发行,基于CentOS。安装后只会在系统中安装cacti和webmin所必须的软件,整个系统非常小(安装光盘只有310M),并且已经安装好了一些cacti的插件,如 BackUp,Discovery,Flowview,Haloe,MacTrack,Monitor,NTop,RRDClean,Reports,Thold,Tools,Update等,其中有些需要用户自己启用才可使用。整个操作系统一旦安装完成,配置好IP后即可使用Cacti,为大家节省了安装配置时间,只不过需要占用一台服务器。
该发行版的主页地址为:http://cactiusers.org/
从CactiEZ安装Cacti流量监控系统
http://cactiusers.org/ 下载最新的CactiEZ稳定版ISO镜像文件(截至本文撰稿时是0.4版),刻录成启动光盘。然后设置服务器从光盘启动,放入刻录好的光盘,重启服务器即可。服务器会自动进入安装界面,然后回车,会自动完成Cacti的安装。









整个安装过程大概耗时20分钟左右。安装结束后,取出光盘,重启服务器。重起后进入登陆界面,默认系统root用户的密码为:CactiEZ。
CactiEZ服务器的配置
网络配置
默认情况下,CactiEZ是以DHCP自动获取IP地址的。如果您的机器需要配置静态IP的话,使用以下命令:netconfig



回车,进入接口配置界面:



选择YES,回车:



根据提示,设置相应的IP和DNS,配置完成后,选择OK,回车。
接口配置修改后,必须重启相应的服务,修改的配置才会生效。
输入以下命令:service network restart



然后用ifconfig查看端口当前的配置,看是否修改成功。



安装SSH服务
使用命令yum install openssh-server安装SSH服务。根据提示,输入y,自动下载安装。






安装完毕后,我们就可以从远程登陆上去调测服务器了。(*^__^*) 嘻嘻……
首次登陆,使用root账户,密码是CactiEZ。
然后我们要做的两件事:一,增加非root账户;二,修改SSH配置文件,禁止root账户直接登陆,这样做是为了保证CactiEZ服务器的安全。
使用“useradd 账户名”,增加相应的账户。
使用“passwd 账户名”,为相应的账户设置密码。



接下来,修改SSH配置文件。
找到SSH配置文件所在,使用命令rpm –ql openssh-server



编辑sshd_config文件,使用命令vi /etc/ssh/sshd_config进入SSH配置文件的编辑模式。
在文件中找到PermitRootLogin这一行,将yes改为no,然后保存退出。



同理,要使配置生效,必须重启相应的服务。



这样一来,就只能以普通用户的身份登陆,需要时再切换至root用户。即使如此,设置密码时还是不要过于简单。
时区设置
首先,修改默认时区。Vi /etc/sysconfig/clock



将ZONE修改为“Asia/Shanghai”:



复制相应的时区文件,替换系统默认时区
对于中国服务器则执行:
# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
设置NTP服务
CactiEZ自带有NTP服务,但是默认情况下,并不向外部时钟源同步时间,而且配置文件过于简单,不利于控制。建议卸载重装。命令:yum remove ntp



卸载完成后,重新使用yum install ntp命令安装NTP服务。
用rpm –ql ntp 查看安装的文件,并从中找出配置文件所在,进行必要的修改。



这里只对常用的选项进行介绍,其余的可以在网上查找相关资料。



告诉服务器默认情况下,不提供NTP查询服务,不允许外部进行修改,不发送trap报文。
这一项无需修改,按照默认的就好了。



配置你想提供时间同步服务的客户机所在的网络,nomodify不允许客户端修改服务器的配置,notrap不处理客户端发送的trap报文。



配置你的时间服务器的上层时钟源,一般可以从http://www.pool.ntp.org/上进行选取。
截图中给出了区公司网管中心NTP服务器的外部时钟源作为参考。
其余的选项都可以保持默认值。然后重启ntpd服务,使得配置文件生效。



查看对应的进程和端口是否启用,确保服务是正常的。
ps aux | grep ntp



ntp使用udp协议,记得开放其123端口。
由于CactiEZ默认安装有linux防火墙iptables,需要设置iptables,开放相关协议的端口。
考虑到iptables的配置较为麻烦,如果不熟悉的话,可以先将相关规则清除掉,再通过其他机制增强CactiEZ服务器的安全性。
删除iptables规则,可用命令iptables –F。再用iptables –-list进行检查,确认。
查看端口情况,可以用命令:netstat -unl



查看NTP服务器的同步状态,使用ntpq -p 。



打*号的是当前提供时钟源服务的上层时间服务器。
了解服务器当前状态ntpstat



了解本地服务器和上层时间服务器之间的关系



从上图看出,我们的上层时间服务器位于第2层,但是在查询顶层服务器的时候出现了超时,有可能是该服务器做了限制查询的。
Cacti流量监控系统的汉化
这里所说的汉化并非完全意思上的中文化,我们所做的只是让Cacti尽可能多地支持中文的显示,方便我们查看相关的图标,但是整个Cacti的配置界面还是英文的。
PHP页面的汉化
CactiEZ到了0.4版,应该说已经做的比较好了。
默认情况下,直接输入中文,在大部分web页面都可以正常显示。但是,在测试中发现还是有一个位置不能正常显示中文,就是Data Source。(你目前看到的这个截图是已经汉化过的,所以可以正常显示中文。)



要汉化Data Source的页面,需要修改data_suorces.php.
具体命令如下:
Find / -name data_suorces.php //找到data_suorces.php所在路径
编辑data_suorces.php,删除了"htmlentities"函数即可。
修改前:
form_selectable_cell("<a class='linkEditMain' href='data_sources.php?action=ds_edit&id=" . $data_source["local_data_id"] . "'>" . (($_REQUEST["filter"] != "") ? eregi_replace("(" . preg_quote($_REQUEST["filter"]) . ")", "<span style='background-color: #F8D93D;'>\\1</span>", title_trim(htmlentities($data_source["name_cache"]), read_config_option("max_title_data_source"))) : title_trim(htmlentities($data_source["name_cache"]), read_config_option("max_title_data_source"))) . "</a>", $data_source["local_data_id"]);
修改后
form_selectable_cell("<a class='linkEditMain' href='data_sources.php?action=ds_edit&id=" . $data_source["local_data_id"] . "'>" . (($_REQUEST["filter"] != "") ? eregi_replace("(" . preg_quote($_REQUEST["filter"]) . "     )", "<span style='background-color: #F8D93D;'>\\1</span>", title_trim($data_source["name_cache"], read_config_option("max_title_data_source"))) : title_trim($data_source["name_cache"], read_config_option("max_title_data_source"))) . "</a>",      $data_source["local_data_id"]);
至此,php页面的汉化基本完成。
在大多数情况下,这样程度的汉化能够满足我们的基本要求。
rrdtool的汉化
rrdtool的汉化是保证输出的图形可以正常显示中文。这需要重新编译rrdtool的源代码,并安装中文字体包。
a. 安装编译器和中文字体包
因为现在Cacti还不支持中文(希望以后的版本默认就可以支持中文,这样就很省事情了,呵呵),主要是rrdtool在绘图时不能正常现实中文字体,现在我们就要对rrdtool进行重新编译。
rrdtool支持中文需要修改源代码,重新编译。但是CactiEZ没有安装c编译器gcc、C++编译器gcc-c++和中文字体ttfonts-zh_CN,在编译之前,请用yum安装好这些包。
yum install gcc
yum install gcc-c++
yum install ttfonts-zh_CN (字体默认安装在/usr/share/fonts/)
b. 下载和安装rrdtool依赖库
编译rrdtool需要先编译好依赖库freetype-2.1.10.tar.gz,libart_lgpl-2.3.17.tar.gz,libpng-1.2.10.tar.gz,然后修改rrdtool的源代码文件,再编译rrdtool。
整个过程如下:
cd ~
mkdir tmp
cd tmp
wget http://ftp.idilis.ro/mirrors/rrdtool/libs/freetype-2.1.10.tar.gz
wget http://ftp.idilis.ro/mirrors/rrdtool/libs/libart_lgpl-2.3.17.tar.gz
wget http://ftp.idilis.ro/mirrors/rrdtool/libs/libpng-1.2.10.tar.gz
注,实际编译安装时建议下载较新的源代码包。如果想稳妥一点,直接按本文说明安装即可
tar -zxvf freetype-2.1.10.tar.gz
tar -zxvf libart_lgpl-2.3.17.tar.gz
tar -zxvf libpng-1.2.10.tar.gz
cd freetype-2.1.10
./configure --prefix=/usr ; make ; make install
cd ../libart_lgpl-2.3.17
./configure --prefix=/usr ; make ; make install
cd ../libpng-1.2.10
./configure --prefix=/usr ; make ; make install
cd ../
c. 下载rrdtool和修改源文件
wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.2.26.tar.gz
tar -zxvf rrdtool-1.2.26.tar.gz
cd rrdtool-1.2.26/src/
现在修改rrdtool的源文件,需要修改的文件是rrd_graph.c
修改rrd_graph.c:
vi rrd_graph.c
删除rrd_graph.c文件中以下两行:
setlocale(LC_TIME,"");
setlocale(LC_CTYPE,"");
在原来setlocale(LC_CTYPE,"")的位置增加以下内容:
setlocale(LC_ALL,"zh_CN.UTF-8");
现在修改完毕,可以开始编译了
d.编译新的rrdtool
编译前运行
yum install ruby //安装ruby的语言支持环境,编译rrdtool时需要;不安装,编译也可以通过,最好是安装进去
cd ../
./configure --prefix=/usr --exec-prefix=/usr/rrdtool1.2.26
make
make install
新版本rrdtool的可执行文件安装在/usr/rrdtool1.2.26/bin中,系统原有的在/usr/bin中。需要修改cacti的设置,用新编译好的rrdtool版本替换原有版本。
e. 修改Cacti的rrdtool设置,使其支持中文设备名和图片中输出中文
登陆Cacti,在主页的左边点击setting,选择paths页 (console>>setting>>paths)
将RRDTool Binary Path修改为:/usr/rrdtool1.2.26/bin/rrdtool
还需要修改rrdtool的字体设置:
登陆Cacti,在主页的左边点击setting,选择paths页 (console>>setting>>paths)
将RRDTool Default Font Path修改为:/usr/share/fonts/zh_CN/TrueType/gkai00mp.ttf
点击save。



网管中心下载的是1.2.27版本的rrdtool源代码编译安装的,使用的字体是zysong.ttf。
到这里,Cacti服务器的安装和汉化基本完成。
CactiEZ服务器的优化
关闭yum夜间自动更新功能
任何使用yum命令的操作完成之后,必须手工将其服务关闭。
默认情况下,CactiEZ服务器会在夜间实行自动更新功能。这对服务器的稳定性不利。尤其是,如果服务器自动升级了操作系统内核,很可能造成Cacti流量监控系统罢工。对于自动安装的系统,不清楚底层相关配置的话,自动升级引起的问题很可能让你束手无策。
所以,为了服务器的稳定性,强烈建议关闭yum自动更新功能。
:即使使用手工的方式升级操作系统套件,但是坚决不能升级内核相关的东西。除非你很有信心可以自己搞定。
使用命令:service yum stop



并建议同时关闭yum的自启动项目,命令:chkconfig yum off



查看CactiEZ的自启动项目:chkconfig --list



这里,yum在所有的启动级别都是off,说明已经关闭yum的自启动项目,yum不会随服务器重启而自动开启。
hosts.deny & hosts.allow
如果你对iptables很熟悉并乐于用iptables来增强服务器的安全性的话,大可跳过本节。
如果你觉得iptables比较麻烦,又不想自己的服务器完全裸露在网络中,可以尝试本节介绍的方法。但是这种方法提供的功能有限,不能完全取代iptables。
/etc/hosts.allow和/etc/hosts.deny两个文件是用来控制远程访问的,通过它可以允许或者拒绝某个ip或者ip段的客户访问linux的某项服务。
/etc/hosts.allow控制可以访问本机的IP地址,/etc/hosts.deny控制禁止访问本机的IP。两个文件的检查顺序如下:
先判断访问是否被允许 hosts.allow
->
允许就通过
不允许看访问是否被禁止 hosts.deny
->
如果2个文件都没提到该服务 那就默认允许
两个配置文件的格式如下:
#服务进程名:主机列表:当规则匹配时可选的命令操作
server_name:hosts-list[:command]
例如,限制所有的ssh,除非从218.64.87.0——127上来:
hosts.allow:
in.sshd:218.64.87.0/255.255.255.128
hosts.deny:
in.sshd:ALL
其中IP地址范围的写法有若干中,主要的三种是:
1.网络地址——子网掩码方式:
218.64.87.0/255.255.255.0
2.省略的网络地址方式
218.64.(即以218.64打头的IP地址)
3.缩略子网掩码方式,既数一数二进制子网掩码前面有多少个“1”比如:
218.64.87.0/255.255.255.0《====》218.64.87.0/24
这里给出网管中心Cacti服务器的配置,供大家参考。



关闭掉不使用的服务及定期作业
CactiEZ默认安装了其他一些服务,有兴趣的同事可以自行研究。
如果只是用CactiEZ监控流量的话,以下服务均可关闭。
命令:service 服务名 stop
chkconfig 服务名 off
相关的服务有:
iptables 如果不用,可以有hosts.allow和hosts.deny替代
webmin linux图形化配置界面,感兴趣的同事可以看看,不过不怎么好用,建议关闭
nagios 另一个服务监控系统(适用主机的),默认关闭,要启用必须手工打开
ntop 流量分析软件,默认关闭,要启用必须手工打开
注释掉定期作业中不需要的,默认的安装如下:



我们只保留定期查询流量的作业和备份的作业。将其余2个netflow相关的作业OVER掉。
至此,终于可以进入Cacti流量监控系统的基础应用部分了。真累人呀~555
基础应用篇 添加需要监控的设备
要监控链路的流量,首先要将链路所属的设备添加进去。
创建设备:双击在左上角“console”在打开的页面中选择“Create devices for network”



在打开的页面的右上角中单击“ADD” 添加设备,并在打开的页面中填写相关的信息:填好后再右下角点击“create”创建该设备监控。



(1)Description:该设备的描述。
(2)hostname:填写该设备的IP地址。
(3)Host Template:选Generic SNMP-enable Host
(4)Monitor Host:打上勾,就会在minitor插件中出现一个主机的图标。Cacti服务器就会在后台不停的ping这个主机,ip就是你先前填写在hostname中的那个。
(5)Downed Device Detection:检测设备down机的方式,如果是通过SNMP采集流量,一般选择ping和SNMP。如果单纯只是镜像某条链路或者主机,选择ping即可。
其他的默认就Ok。
(6)SNMP版本和团体字符视具体情况而定。其余默认OK。
注意,如果是要采集设备的流量,在最下面的Associated Data Queries应该有SNMP-Interface Statistics这个数据查询模板才对。



点击右边的Verbose Query,可以看到SNMP查询结果。在后面打造自己的图形模板时有些变量可能会用到。然后单击Save进行保存。
如果Cacti服务器可以找到相应的设备,那么在Devices界面,相应的设备状态应该是up的。



创建需要监控的图表
点击相应的设备进入,点击右上角的“*Create Graphs for this Host”为主机创建图像。



在弹出的页面中选择需要监控的端口,在右下角下拉式菜单中选择“In/Out Bit(64-bit counters)”这样可以监控大于100M的流量。然后点击Create创建图表。



创建的图表,默认你是不能直接看到的,必须把它挂到图形树上。Graphs插件看到的是图形树上的东西,想看什么图表,就把什么图表挂上去。
图形树的创建
首先,我们来创建一棵树。在左边的菜单中单击“Graph Trees”,在打开的页面中点击右上角“ADD”创建一棵树。



然后弹出一个菜单,给这棵树取名,例如“南宁城域网”。
下一项默认即可。点击Create,这棵树就生成了。



退回到图形树的界面,我们就看到这棵树。



在这里,我们看到很多树。其中,除了我们之前创建的“南宁城域网”这棵树,还有“Cacti服务器”这棵树,还有“玉林城域网”,“钦州城域网”,“贵港城域网”等。
有了树,我们就可以创建树枝,这样做是为了图形查看方便的需要。
我们可以创建一个树枝叫“核心层”,创建一个树枝叫“汇聚层”,把核心层上联链路的图表挂在核心层的树枝上,把汇聚层上联链路的图表挂在汇聚层的树枝上。如果有特别关注的系统或者大客户电路,可以单独为其建立一棵树,如上图的“电信第二出口”,专门监控各地市的第二出口的电路。记住,树是把图表分类,树枝只是将图表分层显示而已。
树枝的创建也很简单,在上图的图形树中,任意选择一棵树单击进去。如玉林城域网



在右上角有个“Add”,单击它即可创建想要的树枝。



(1)Parent Item:这个选项是说树枝挂在哪里。默认就是root,树根。很形象,就是从树根长出树枝来,但是树枝的创建是没有限制的。有时为了细分图形,创建了一级的树枝,还需要再创建二级,三级的树枝。这个时候,就是通过这个选项告诉服务器,我要创建哪一级的树枝,并且挂在谁的下面。挂在root下肯定就是第一级的树枝,挂在第一级树枝下的就是第二级的了,以此类推。
(2)Tree Item Type
当创建树枝的时候选Header。(一般都选Header)
当想在这里直接添加图表或者主机时,选择Graph或Host。(不建议这样做,当图表很多的时候)
(3)Title:给树枝一个名称。
其余的默认即可。
图形树创建完毕后,只是给了一个框架,里面什么都没有。就像你买了一个书柜,都分类贴好标签,哪一层放什么书。现在就等你放书上去了。我们先前已经将需要监控的图表生成,现在只需把图表挂上去即可。
放置想要的图表



在console界面的Management --》Graph Management中,可以看到我们之前创建的图形。
如果图形较多,可以通过Host选项筛选。
找到你想要的图形,单击它,(单击蓝色的图形标题就会进入该图形界面,这里不需要)
选中之后会变成黄色。



在右下角的下拉菜单中,选择一个动作。
一般用的最多的就2个,一个是Delete,删除掉不需要的图表;
另一个是Place on a tree,放置在某棵树上。
选定之后,点击“go”即可。如果是删除,它会让你再次确认。如果是放置在某棵树上,它会让你选择挂在哪里,是root还是某个树枝上。根据提示操作即可。搞定之后,就跑到graphs界面下看看自己的图表吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: