Cact i 是基于PHP 和mysq l,通过snmp获取数据并使用rrdtool绘图的网络流量监测图形分析工具,以开源、免费、易扩展和界面友好等特点受到诸多网络管理者青睐。Weathermap(气象图)是cacti中最具实用性的插件之一,可以画出美观的网络拓扑图并动态显示各设备和各链路的状况。随着网络管理要求的提高,网络部门拥有越来越多的其他工作系统,如工作流、OA等,这些系统的相对独立造成了信息间的割裂。例如,网络监控发现了设备宕机,工作流或OA若能直接捕获则可迅速派发工单进行处理;而在工作流或OA进行管理时,若能直接查看网络整体运行状态,也会方便许多。因此,可以将cacti中气象图移植嵌入到其他网管系统。当前的cacti使用的是cactiez10.1版,weathermap是已集成的0.97a版。
分析
在cactiez10.1中查看气象图,界面包含了导航栏、跳转栏、气象图和页脚等多个部分,若全部一起嵌入到其他网管系统不仅内容臃肿,还容易撑破网页布局,因此考虑将纯图像部分抽取出来。
观察气象图在浏览器地址栏中的表示,页面文件为weathermap-cacti-plugin.php,其后带了两个参数,分别为action=viewmap和id=35ad1dcc3ff9ba623555。打开该php文件,可见action、实时视图、缩略视图、循环视图等多种视图模式,都在这一个php文件中实现,id是气象图的标识,在磁盘目录里有png和html文件对应。在浏览器上直接查看源代码,都是基于绘图坐标的流量图的调用,可能用的上的是一些js脚本。磁盘中的png和html文件是不断生成的,直接打开png只有流量状态的静态信息,是我们所见动态图的背景图片,直接打开html文件是一片空白,编辑查看html文件,总体是map定义,包括每个气象图中设备摆放位置,链路位置的定义,均为相对静态的内容,可以直接显示,但在浏览器中无法直接看到内容,可能与该html有weathermap-cacti-plugin.php文件调用有关,由此判断应为某些参数的传递或脚本的调用。
继续在weathermap-cacti-plugin.php中查看,有两个发现。一是每个气象图视图模式都有overlib.js的调用,而overlib.js是绘图的脚本,因此该脚本在每个气象图都需要使用。二是每种视图的代码中,都有id值的获取和用户帐号的判断,因此id值应该作为动态变量,而用户权限需要设定为匿名可浏览或指定帐号。
实施
1.构造纯气象图页面文件
参照浏览器上查看到的源代码和php中的调用,在./plugins/weathermap目录下创建一个名为withoutborder.php的文件,html部分指定每隔20秒自动刷新,调用overlib.js脚本;php部分获取变量id的值,并从output目录中调用相应的html文件,代码内容如下:
<html>
<head>
<meta http-equiv=refresh content='20'>
</head>
<body leftmargin="0" topmargin="0" marginwidth="0"marginheight="0">
<script type="text/javascript" src="overlib.js"><!--overLIB (c) Erik Bosrup --></script>
<?php
$id = $_GET['id'];
require("./output/.html");
?>
</body>
</html>
在浏览器中使用id参数输入http://210.x.x.x/plugins/weathermap/withoutborder.php?id=2275a538530c420718b6,可打开没有图像显示的页面,但图像占位符的大小和位置已清楚呈现所调用的气象图的尺寸,且没有其他多余的页面内容,仅仅只是图片。当鼠标在无法显示的图片上移动时,可以浮动显示出数据图,只不过每个数据图都是红叉,因为还没有匿名查看权限。
2.配置cacti权限
默认状态下,cacti必须登录才能查看图像、监控、气象图等各个部分,但也可以设置为匿名访问。以admin登录cactiez,依次选择控制台(console)-工具(utilities)-用户管理(user management),点击进入guest用户设置,在启用(enabled)一栏勾选“启用(enabled)”,在下方功能权限(realm Permissions )中勾选“Plugin-Weathermap: View”和“View Graphs”,前者允许查看气象图,后者用于气象图上浮动显示的数据图,其他是否允许匿名用户查看可视实际情况勾选。接下来,依次选择控制台( jconsole) - 配置(configuration)- 设置(settings)- 验证(authentication),在特别用户(special users)一栏中,设置来宾用户(guest user)为guest,此选项作用为将匿名用户当作guest用户来对待。再次刷新构造的页面,气象图就完整独立的显示出来了,如图1所示。当需要把气象图嵌入到其他信息系统时,只需要提供上述的链接就能随时动态地查看了。
(作者单位为中南民族大学网络技术中心)
特别声明:本站注明稿件来源为其他媒体的文/图等稿件均为转载稿,本站转载出于非商业性的教育和科研之目的,并不意味着赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。