`

JRobin简介

阅读更多

  link:http://harry.iteye.com/blog/352028

 

 http://blog.csdn.net/li_zhongnan/archive/2009/01/11/3754053.aspx

 

 做过网络管理的人,对于MRTG应该不算陌生。MRTG可以不断收集来自SNMP的数据,保存这些数据,并且按照日、周、月、年的方式生成4幅图像及相关说明,很直观的显示出要检测数据的趋势信息。

MRTG是比较早的技术了,后来又出现了RRD技术,是在MRTG技术的基础上发展起来的,更加灵活、更加方便。其应用也不在局限在主要监测网络数据上了。你可以通过RRD提供的强大功能收集各种各样的信息,并且生成更加复杂的图像。你也可以在自己的应用程序中使用它,因为它提供了丰富接口,方便应用程序调用。

      JRobin是RRD的java版本,其原理是一致的。假如你打算监测计算机的CPU使用率,除了查看当前时刻的数据外,你可能也关心计算机在过去的一天、一周,甚至一个月、一年的CPU使用率,也就是以前一段时间的数据。对于这个要求,需要考虑以下一些问题:

1、数据的采集

获取数据是监测的第一步,根据监测对象的不同,采集数据的方法也不一样,可以通过SNMP获取数据、可以通过外部程序获取数据、可以通过脚本得到数据、也可以采用Java编写代码来取得数据。这些提供数据的方式,或者说是程序,可以看成是JRobin的数据源。我们不是时时刻刻的采集数据,出于性能和成本的考虑,通常在每次采集数据之间都会有一个间隔,也就是说在采集一次数据后,等待几秒或几分钟,然后再次采集数据,将这些多次采集的离散数据用图像方式展示出来,就成了好看直观的曲线。MRTG的采集间隔是300秒,RRD较为灵活,可以以秒为单位自由设置。

2、数据的保存

在每次采集数据后,我们可以将这些数据和采集数据的时刻保存下来,这样方便以后绘制图像。假如每300秒采集一次数据,那么一天需要采集288次数据。如果打算保存一年的数据,那么数据的个数就是 365 * 288。这样的数据不算多,但是没有大多必要,因为我们对数据关心的程度与采集数据的时间远近成比例,越近的数据越关心。另外,当把这些数据显示在固定大小的图像上时,并不是数据越多就越清晰。

JRobin采用了所谓的RRD的存储方式。比如,我们打算用四个图像显示一日、一周、一月和一年内的数据,那么我们可以这么保存数据:

(1)保存最近的288个数据,也就是最近一天的数据;

(2)每7个数据保存一个,保存288个,也就是最近一周时间内的的一些数据;

(3)每30个数据保存一个,保存288个,也就是最近一月时间内的的一些数据;

(4)每365个数据保存一个,保存288个,也就是最近一年时间内的的一些数据。

实际处理时,可能并不是简单隔几个保存一个,而是应用一些简单或复杂的算法。比如或许会对多个数据作一个平均,然后保存为一个。

以这种方式保存数据在JRobin中称之为归档(Archive)。数据源于归档的关系可以用下图来简要说明:

 

3、数据格式

 

为了达到以上目的,JRobin采用自己的格式来保存数据,这种格式是平台无关的,与RRD的格式不兼容。

JRobin还提供强大的绘制图像的功能,利用其提供的接口,可以很方便的根据数据生成各种样式图像。

举例:

1、定义保存的数据格式,创建数据文件


   long end = Util.getTime(), start = end - 7 * 86400;             //截至时间为当前时间,起始时间为一周前
   String rrdFile = "demo.rrd";


   // 创建数据文件定义,保存日数据与周数据
   RrdDef rrdDef = new RrdDef(rrdFile, start - 1, 300);                           //数据间隔为300秒
   rrdDef.addDatasource("value1", "GAUGE", 600, Double.NaN, Double.NaN);   //定义数据源,可以定义多个

//以下定义归档数据,即如何保存数据
   rrdDef.addArchive("AVERAGE", 0.5, 1, 288);             //输入给数据源的数据每一个都保存下来,保存288笔数据,即保存最近一天的数据
   rrdDef.addArchive("AVERAGE", 0.5, 7, 288);             //每7笔数据,取平均值,然后保存,保存288笔数据,即保存最近一周的数据
   RrdDb rrdDb = new RrdDb(rrdDef);                             //根据数据定义创建数据文件

对于月和年的数据,可以用相同的方式处理。

2、更新数据

采用三角函数生成数据。

   for (long t = start; t < end; t += 300) {
    Sample sample = rrdDb.createSample(t);
    sample.setValue("value1", Math.sin(2 * Math.PI * (t / 86400.0)) * 50 + 50);
    sample.update();
   }

3、生成图形

 

   String pngFile = "";
   RrdGraphDef gDef = null;
  

//生成最近一天的图形
   pngFile = "demoday.png";
   gDef = new RrdGraphDef();
   gDef.setFilename(pngFile);
   gDef.setWidth(450);
   gDef.setHeight(250);
   gDef.setImageFormat("png");
   gDef.setTimeSpan(end - 86400, end);
   gDef.setTitle("JRobin Demo");
  
   gDef.datasource("demo", rrdFile, "value1", "AVERAGE");
   gDef.line("demo", Color.GREEN, "real");
   gDef.gprint("demo", "MIN", "%5.1lf Min");
   gDef.gprint("demo", "AVERAGE", "%5.1lf Avg");
   gDef.gprint("demo", "MAX", "%5.1lf Max");
  
   gDef.setSmallFont(new Font("Monospaced", Font.PLAIN, 11));
   gDef.setLargeFont(new Font("SansSerif", Font.BOLD, 14));
   new RrdGraph(gDef);
  

//生成最近一周的图形
   pngFile = "demoweek.png";
   gDef = new RrdGraphDef();
   gDef.setFilename(pngFile);
   gDef.setWidth(450);
   gDef.setHeight(250);
   gDef.setImageFormat("png");
   gDef.setTimeSpan(end - 7 * 86400, end);
   gDef.setTitle("JRobin Demo");
  
   gDef.datasource("demo", rrdFile, "value1", "AVERAGE");
   gDef.line("demo", Color.GREEN, "real");
   gDef.gprint("demo", "MIN", "%5.1lf Min");
   gDef.gprint("demo", "AVERAGE", "%5.1lf Avg");
   gDef.gprint("demo", "MAX", "%5.1lf Max");
  

   //如果需要显示中文,以下两条语句比较重要
   gDef.setSmallFont(new Font("Monospaced", Font.PLAIN, 11));
   gDef.setLargeFont(new Font("SansSerif", Font.BOLD, 14));  
   new RrdGraph(gDef);

4、生成的图形如下所示:

(1)按日生成的图形

 

(2)按周生成的图形

分享到:
评论

相关推荐

    jrobin-1.5.9-API文档-中文版.zip

    赠送jar包:jrobin-1.5.9.jar; 赠送原API文档:jrobin-1.5.9-javadoc.jar; 赠送源代码:jrobin-1.5.9-sources.jar; 赠送Maven依赖信息文件:jrobin-1.5.9.pom; 包含翻译后的API文档:jrobin-1.5.9-javadoc-API...

    jrobin-1.5.9-API文档-中英对照版.zip

    赠送jar包:jrobin-1.5.9.jar; 赠送原API文档:jrobin-1.5.9-javadoc.jar; 赠送源代码:jrobin-1.5.9-sources.jar; 赠送Maven依赖信息文件:jrobin-1.5.9.pom; 包含翻译后的API文档:jrobin-1.5.9-javadoc-API...

    RRD与JRobin

    介绍RRD与RRDTool JRobin 分享给那些做流量监控的朋友们.

    jrobin-1.5.14.jar和源代码

    jrobin-1.5.14.jar和源代码

    jrobin学习例子程序

    学习用jrobin绘图的绝佳例子程序 学习用jrobin绘图的绝佳例子程序

    JRobin 流量报表

    JRboin 是java 一开源的流量图型开源框架

    jrobin流量监控代码

    这里是jrobin流量监控代码(我自己写的)! 可以创建一个rrd文件,然后对柔软的文件进行更新和画图;是一个很有用的画图代码!

    javaMelody+jrobin jar文件 .rar

    javaMelody jrobin java监控运行时系统; 提供一些图表让你知道项目的运行情况,可以按天、周、月、年、全部(从运行至今)来查看监控信息

    JRobin-开源

    JRobin是RRDTool的100%纯Java替代品,具有几乎完全相同的规格。 如果向RRDTool和JRobin提供相同的数据,则将获得完全相同的结果和图形。 支持所有标准RRDTool操作。

    JavaMelody javamelody-core-1.52.0.jar jrobin-1.5.9.jar

    JavaMelody javamelody-core-1.52.0.jar jrobin-1.5.9.jar 集成所需的jar包

    javamelody.jar和 jrobin.jar

    监控器需要的jar,需在web.xml中配置 &lt;filter-name&gt;monitoring &lt;filter-class&gt;net.bull.javamelody.MonitoringFilter&lt;/filter-class&gt; &lt;filter-name&gt;monitoring &lt;url-pattern&gt;/* ...可以进入到监控页面

    jrobin-1.5.9.jar中文-英文对照文档.zip

    注:下文中的 *** 代表文件名中的组件名称。 # 包含: 中文-英文对照文档:【***-javadoc-API文档-中文(简体)-英语-对照版.zip】 jar包下载地址:【***.jar下载地址(官方地址+国内镜像地址).txt】 ...

    snmp-tutorial:SNMP教程:Jrobin、SNMP4j

    snmp-tutorialSNMP tutorial :Jrobin、SNMP4jsnmp4j-1x-demoSNMP4j实现同步和异步的GET的示例SNMP4j实现同步和异步的Walk的示例SNMP4j实现Trap的示例SNMP4j实现SET的示例SNMP4j实现GETBLUK的示例robin-demoJRobin ...

    javamelody性能监控jar和war

    包含javamelody.jar、jrobin-1.5.9.1.jar和javamelody.war文件,测试可用

    监控JAVA应用的好工具javamelody

    javamelody.jar和jrobin-1.5.9.1.jar 博文链接:https://navylee.iteye.com/blog/746914

    jribin-1.5

    JRobin is just an API. With this API you are free to optimize your code so that RRD files are open or closed only when necessary. This could lead to huge performance benefits.

    javamelody 1.53整套源码及bin文件

    2014/03/07 14:17 238,016 jrobin-1.5.9.1.jar 2014/03/07 14:17 11,358 LICENSE 2014/10/01 23:31 18,519 pom.xml 2014/05/14 18:24 1,979 README.txt 2014/03/07 14:18 &lt;DIR&gt; src 2014/10/01 23:29 40 VERSION....

    jprofiler 监控容器 tomcat

    里面含有具体文件,web.xml 配置、 javamelody-1.32.1.jar、 jrobin-1.5.9.1.jar、javamelody-1.32.1.war, 把你的web.xml配置 然后把两个jar放到你的项目下面,然后把那个war包放到你的服务下,启动就可以监控你的...

    javamelogdy-1.51.0

    jrobin-1.5.9.1.jar 3、如果您的web项目有SpringSecurity,修改SpringSecurity资源过滤配置、不过滤/monitoring的访问 &lt;!-- -------------------------------------需监控工程修改结束-------------------------...

    RRDSharp-开源

    RRDSharp 是 rrdtool (www.rrdtool.org) 的 100% 托管实现,在 Mono 和 .NET 上运行,并基于 Java JRobin 项目。 该项目最初由 David Quintana 开发。

Global site tag (gtag.js) - Google Analytics