`
cuijiemin
  • 浏览: 265566 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

基于Jrobin监控系统UI展现

阅读更多

一、RRDRRDTool简介

RoundRobinDatabase环状数据库,是一种处理定量数据、以及当前元素指针的技术。没有起点,没有终点,过来一段时间,所有可用的位置都会被用过,该循环过程会自动重用原来的位置。这样,数据集不会增大,并且不需要维护

基于这种特点,RRD数据库用于许多记录时间序列的数据系统,如气象、速度、电压、输出量、网络流量、机场附近的噪音等级

RRDTool就是操作这个数据库的工具,它RRD数据库存储数据、从RRD数据库中提取数据。计算平均值、峰值,创建用于在Web浏览器中显示的PNG格式的图像

RRD优点:

1、基于文件系统,与LDAP结合。

2、自定义数据统计周期大小,创建数据库时即固定文件大小,不需要维护。

3、一个数据库可自定义多个数据源和多种统计方式,一个数据库可生成多种统计图表,多个数据库可合并一个图表。

4、可生成xml数据库定义模板和图表定义模板,可将数据导入导出xml文件,扩展性强,应用广,兼容性强。

5、轻量级文件型数据库,需要什么保存什么,减轻已有数据库服务器压力。

6、基于java开源工具,有poolBackendsPlottable等机制可以使用和扩展。

二、Cacti监控系统原理

步骤详解:

1、定时采集数据:使用agent客户端代理或网络协议采集被监控服务器数据。

2、存储数据:在监控服务器安装net_snmp工具将采集的数据保存至rrd数据库。

3、用户配置设备:用户使用cactiopennmsnagios等监控工具配置服务器集群、生成图表的监控项等。

4、保存配置数据至开源数据库。

5、监控工具绘制图表:在用户查看时生成,使用rrdtool工具绘制性能统计图表。

6、展现图表。

三、基于RRD监控系统UI模块设计

步骤详解:

1、数据采集:使用已有的基于日志和ftp数据采集。

2、查看数据库模板并分配数据:每获取一次采集数据,对数据存储消息服务发送一次消息,由该服务查看数据库中该数据相关RRD模板。如采集一条sso登录用户数据,对应用户登录统计(年//日)、金牌会员登录统计(年/月)、用户停留时长统计(月)3RRD模板,即这条数据将更新至这3RRD数据库中。

3、存储数据:将对应的采集数据更新至RRD库。

4、Nagios集成:大多数网络监控系统如Nagios,都采用RRD保存监控数据,JRobin可以直接读取这些RRD文件,并生成图表。

5、用户配置统计项:UI提供用户自定义配置统计项功能,列出系统监控点和支持统计算法,供用户选择并生成RRD模板和对应的RRDGraph模板。

6、将用户自定义的RRD模板和RRDGraph模板以一对多的形式与关联的监控数据点对应保存至数据库。如用户配置sso登录用户监控点,自定义了3RRD模板,和6RRDGraph模板。

7、根据对应RRDGraph模板生成图表。

8、展现给用户。

四、JRobin语法

(一)创建数据库

1、立一个名为target.rrd的资料库

RrdDefrrdDef=newRrdDef(rrdPath);

2、开始时间(1'023'654'125)是由01-01-1970起算的秒数

rrdDef.setStartTime()

3Step300说明每300秒是一个周期.完整程序稿(wrapperscript)在每一周期都应执行一次,才能在每一周期内更新资料库.若要更新资料库,更新时间()亦须定义;且更新时间必须比开始时间大.

rrdDef.setStep()


4DS(DataSource)是对应到被监视设备参数的真实变数,其语法如下:

DS:variable_name:DST:heartbeat:min:max

rrdDef.addDatasource("cpu123","GAUGE",2*step,0,Double.NaN);

1DS:关键字,表示这是一个资料的定义

2variable_name(变数名):资料库中存放资料的名称;可依需要定义多个DS.在每一个step周期内会产生一组新的DS,用以更新资料库.这个值也称为PrimaryDataPoint(PDP).在上例,300秒产生一个新的PDP.
:如果无法刚好在每300秒产生一个值,RRDtool会自动补偿修正.

3DST(DataSourceType):定义DS的型态(Type);说明如下:
COUNTER:贮存在一个周期内,值之改变率(假设值是一直增加的).路由器的Trafficcounters是个使用counter型态的好例子.
DERIVE:COUNTER,但容许有负值.如果你想观察在你伺服器上的硬碟自由空间的变化率,可以使用本型态.
ABSOLUTE:同前,但假设前一周期的值为0,换句话说,是和前一周期的值的差.
GAUGE:贮存实际的值.伺服器的记忆体状况是个典型的例子.
几个不同的DST型态的比较例子如下:
Values=300|600|900|1200|Step=300seconds
COUNTERDS=1|1|1|1
DERIVEDS=1|1|1|1
ABSOLUTEDS=1|2|3|4
GAUGEDS=300|600|900|1200

4heartbeat:在我们的例子中heartbeat600;如果在300秒内,资料库没有接收到一个新的PDP,它将会再等300(600);若还是无法收到任何PDP,将会以UNKNOWN存到资料库中.
:UNKNOWNRRDtool具有特殊意义(UNKNOWN表示一个错失掉的值比用0或其他的值好).
5minimum:上限值.
6maximum:下限值.

如果设定了上下限,任何更新值落在范围之外,将以UNKNOWN贮存之.


5roundrobinarchive(RRA)的宣告,语法如下:
RRA:CF:xff:step:rows

rrdDef.addArchive("AVERAGE",0.5,1,24);

RRA:关键字;.
CF:整合(consolidated)函数;可以是AVERAGE,MINIMUM,MAXIMUM,andLAST.
xff:未说明;看到的值都是0.5(猜测是offset).
step:要多少个周期来整合(DS)资料(算是一列).
rows:要收集多少列(开始循环).
consolidateddatapoint(CDP)的概念由此处导入图形(picture)
一个CDP是在一个周期内已经经由整合函数处理后的一组PDP.这个RRA将保持数个CDPs的列.

6、让我们再来看看上面所用的例子:
RRA:AVERAGE:0.5:12:24\
RRA:AVERAGE:0.5:288:31
第一列的RRA:
12个周期(steps)PDP,使用整合函数AVERAGEed处理(算是一列);取到24(rows);从第25列开始循环(覆盖掉第1).
每一个PDP300,12PDP12*300=3600,1小时.这表示要取得1CDP(等於12PDP)的资料需要1小时,24CDP需要一天.因此这个RRA需要一天的时间建构.经过24CDPs,25CDP会取代第1CDP;依次类推.
第二列的RRA:
贮存31CDP;每个CDP要一个一天的平均值(288PDPs,每个300*288=24小时);所以这个RRA是一个月的建构周期.
一个单一的资料库可以有很多RRA.如果定义了多个DS,每个个别的RRA将贮存所有DS的值到资料库.例如有一个资料库,3DS定义,及有每日,每周及每月的RRA宣告,则每个RRA将分别为3datasources保存资料.

注意:一个rrd可以有多个DS,定义多个RRA.一个RRA可以记录所有的DS数值

覆盖周期=(#CDPsstored)*(#PDPsperCDP)*step


概念:

RRD:RoundRobinDatabase循环数据库

DS:DataSource数据源

RRA:roundrobinarchive档案

PDP:PrimaryDataPoint单元数据点

CDP:consolidateddatapoint整合数据点

(二)生成图表

1、建立数据库图表

RrdGraphDefdef=newRrdGraphDef();

2、数据定义

DEF:<vname>=<rrdfile>:<dsname>:<CF>[:step=<step>][:start=<time>][:end=<time>][:reduce=<CF>]

def.datasource(name,file,dsName,consolFunc)

def.setTimePeriod(start,start+86400);

Name:图表数据源名

FileRRD库路径

dsName:指定RRD数据源名

consolFunc:指定RRD数据源某个CF函数类型

3、变量定义

VDEF:vname=RPNexpression

VDEF支持输出最大值、最小值、平均值、当前值等逻辑成像。

def.datasource(name,MAX:%13.2lf)

4、数据计算

CDEF:vname=RPNexpression

CDEF支持很多数学运算,甚至还支持简单的逻辑运算if-then-else,可以只绘制你所关心的数据。

def.datasource(name,rpn)

Name:将通过CDEF计算过的数据当做图表数据源,重新命名。

Rpn:CDEF数据计算RPN语法语句。

5、图表元素

[-t|--titlestring][-v|--vertical-labelstring]

def.setVerticalLabel("linkspeed[bits/sec]");

def.setTitle("LeasedLineDailyTraffic");

Title:标题

Vertical-label:左侧说明文字

6、打印元素

(1)LINE的方式来绘图

def.line("b",Color.decode("0x22e9"),"min",1);

(2)STACK方式绘图

def.area("out8",Color.GREEN,"outputtraffic");

(3)基准线

graphDef.rule(100,Color.BLUE,"Maximumallowed");

graphDef.vrule(100,Color.BLUE,"Maximumallowed");

Rule:横向基线

Vrule:纵向基线

(4)数字报表

def.comment("")

def.comment("Maximum")

def.comment("Average")

def.comment("Minimum")

def.comment("95thpercentile")

def.gprint("ds0max","MAXIMUM","avgIn=@2@sbits/sec");

def.gprint("ds0avg","AVERAGE","avgIn=@2@sbits/sec");

def.gprint("ds0min","MINIMUM","avgIn=@2@sbits/sec");

def.gprint("ds0pct","PERCENT","avgIn=@2@sbits/sec");

Comment:报表列

Gprint:报表单元数据

7、生成图片

RrdGraphg=newRrdGraph(def);

g.saveAsPNG(PNG,400,200);

(三)RRD<spa

分享到:
评论

相关推荐

    jrobin流量监控代码

    这段代码可能用于自建的服务器监控系统,或者作为其他监控工具(如Nagios、Zabbix)的插件,提供定制化的数据存储和展示功能。通过结合其他系统接口,我们可以实现全网流量监控、实时告警等功能。 总的来说,...

    RRD与JRobin

    Cacti是一款基于RRDTool的流行网络监控系统,可以在"基于RRDTool的监测系统Cacti简介.htm"中了解更多。Cacti提供了一个用户友好的Web界面,方便管理员监控网络设备和服务器的性能,如CPU使用率、内存消耗和带宽利用...

    JRobin 流量报表

    作为一个轻量级框架,它为监控系统性能提供了直观、实时的图表展示功能,尤其在处理网络流量、系统资源消耗等监控场景下表现突出。在本文中,我们将深入探讨 JRobin 的核心特性、工作原理以及如何将其集成到您的项目...

    jrobin-1.5.14.jar和源代码

    在Java世界中,数据持久化是一个不可或缺的部分,而JRobin正是这样一个轻量级的、高效的RPM(Ring-Persistent Metrics)存储库,它被广泛用于记录和分析系统性能指标。JRobin-1.5.14.jar是这个项目的一个稳定版本,...

    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...

    jrobin学习例子程序

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

    javaMelody+jrobin jar文件 .rar

    结合JavaMelody和JRobin,开发者可以实现对Java应用的全方位监控,及时发现并解决问题,提升系统的稳定性和效率。在实际应用中,这两个工具可以帮助运维人员更好地管理和维护Java应用程序,确保其健康运行。

    基于Web的网络管理系统.pptx

    网络管理系统(Network Management System, NMS)是一种用于监控、管理和维护网络设备的软件工具。基于Web的网络管理系统将这种功能与Web技术相结合,使得管理员可以通过Web浏览器远程访问和控制网络设备,无需安装...

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

    总之,`javamelody-core-1.52.0.jar`和`jrobin-1.5.9.jar`是JavaMelody监控解决方案的重要组成部分,它们共同为Java Web应用提供了详尽的性能监控和数据分析能力。通过集成这两个JAR,开发者可以轻松地对应用进行...

    JavaMelody开源系统性能监控

    JavaMelody是一款强大的开源系统性能监控工具,专为Java应用程序设计。它允许开发者和运维人员实时监测应用的运行状态,从而有效地识别并解决性能问题。JavaMelody通过简单的集成方式,提供了一整套全面的监控指标,...

    JavaMelody JAVA Web项目服务器性能监控工具

    另外,它还能够监控系统级别的指标,如CPU使用率、磁盘空间和网络I/O,这些信息对于系统运维人员来说非常宝贵。 集成JavaMelody到你的JAVA Web项目中十分简便。通常只需要在web.xml配置文件中添加相关的监听器和...

    监控JAVA应用的好工具javamelody

    jrobin-1.5.9.1.jar则是用于存储和读取监控数据的库,它是基于Rrdtool(Round Robin Database Tool)的一个Java实现。Rrdtool是一种高效的数据存储方案,特别适合于长期保存时间序列数据,如性能监控数据。jrobin库...

    JavaMelody应用监控使用指南

    JavaMelody是一款强大的Java应用程序和应用服务器监控工具,它提供了实时的数据分析,帮助开发者和运维人员了解系统的健康状况和性能指标。通过图表形式展示内存使用、垃圾回收、Session管理、JDBC连接、SQL查询、...

    JRobin-开源

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

    javamelody性能监控jar和war

    JavaMelody利用JRobin来持久化监控数据,如内存、CPU使用率等,以便后续分析。 3. **javamelody.war**: 这是一个预打包的Web应用,可以独立部署在支持Servlet容器(如Tomcat、Jetty等)上。当你不想或不能将Java...

    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;/* &lt;listener-class&gt;...

    javamelody程序运行监控报表

    综上所述,JavaMelody为Java Web应用提供了一套全面而灵活的监控解决方案,不仅能够帮助开发者快速定位性能瓶颈,还能有效提升系统的稳定性和可靠性。无论是对于开发团队还是运维人员来说,都是一个不可或缺的工具。

    开源 tomcat 性能查看工具

    JRobin是一个纯Java实现的RMON(Remote Monitoring)兼容的数据存储系统,它能够高效地记录和分析时间序列数据,如Tomcat的内存使用趋势或HTTP请求频率。这种数据存储方式使得监控信息可以长期保存,便于进行历史...

    jave melody监控工具简介

    - 将`javamelody.jar`和`jrobin-x.jar`两个文件从提供的`javamelody.zip`压缩包根目录下复制到待监控Web应用的`WEB-INF/lib`目录中。 - 如果使用Maven构建工具,可以通过添加`javamelody-core`依赖项简化安装流程...

Global site tag (gtag.js) - Google Analytics