一、RRD及RRDTool简介
RoundRobinDatabase环状数据库,是一种处理定量数据、以及当前元素指针的技术。没有起点,没有终点,过来一段时间,所有可用的位置都会被用过,该循环过程会自动重用原来的位置。这样,数据集不会增大,并且不需要维护。
基于这种特点,RRD数据库用于许多记录时间序列的数据系统,如气象、速度、电压、输出量、网络流量、机场附近的噪音等级。
RRDTool就是操作这个数据库的工具,它向RRD数据库存储数据、从RRD数据库中提取数据。计算平均值、峰值,创建用于在Web浏览器中显示的PNG格式的图像。
RRD优点:
1、基于文件系统,与LDAP结合。
2、自定义数据统计周期大小,创建数据库时即固定文件大小,不需要维护。
3、一个数据库可自定义多个数据源和多种统计方式,一个数据库可生成多种统计图表,多个数据库可合并一个图表。
4、可生成xml数据库定义模板和图表定义模板,可将数据导入导出xml文件,扩展性强,应用广,兼容性强。
5、轻量级文件型数据库,需要什么保存什么,减轻已有数据库服务器压力。
6、基于java开源工具,有pool、Backends、Plottable等机制可以使用和扩展。
二、Cacti监控系统原理
步骤详解:
1、定时采集数据:使用agent客户端代理或网络协议采集被监控服务器数据。
2、存储数据:在监控服务器安装net_snmp工具将采集的数据保存至rrd数据库。
3、用户配置设备:用户使用cacti、opennms、nagios等监控工具配置服务器集群、生成图表的监控项等。
4、保存配置数据至开源数据库。
5、监控工具绘制图表:在用户查看时生成,使用rrdtool工具绘制性能统计图表。
6、展现图表。
三、基于RRD监控系统UI模块设计
步骤详解:
1、数据采集:使用已有的基于日志和ftp数据采集。
2、查看数据库模板并分配数据:每获取一次采集数据,对数据存储消息服务发送一次消息,由该服务查看数据库中该数据相关RRD模板。如采集一条sso登录用户数据,对应用户登录统计(年/月/日)、金牌会员登录统计(年/月)、用户停留时长统计(月)3个RRD模板,即这条数据将更新至这3个RRD数据库中。
3、存储数据:将对应的采集数据更新至RRD库。
4、与Nagios集成:大多数网络监控系统如Nagios,都采用RRD保存监控数据,JRobin可以直接读取这些RRD文件,并生成图表。
5、用户配置统计项:UI提供用户自定义配置统计项功能,列出系统监控点和支持统计算法,供用户选择并生成RRD模板和对应的RRDGraph模板。
6、将用户自定义的RRD模板和RRDGraph模板以一对多的形式与关联的监控数据点对应保存至数据库。如用户配置sso登录用户监控点,自定义了3个RRD模板,和6个RRDGraph模板。
7、根据对应RRDGraph模板生成图表。
8、展现给用户。
四、JRobin语法
(一)创建数据库
1、建立一个名为target.rrd的资料库
RrdDefrrdDef=newRrdDef(rrdPath);
2、开始时间(1'023'654'125)是由01-01-1970起算的秒数
rrdDef.setStartTime()
3、Step300说明每300秒是一个周期.完整程序稿(wrapperscript)在每一周期都应执行一次,才能在每一周期内更新资料库.若要更新资料库,更新时间(秒)亦须定义;且更新时间必须比开始时间大.
rrdDef.setStep()
4、DS(DataSource)是对应到被监视设备参数的真实变数,其语法如下:
DS:variable_name:DST:heartbeat:min:max
rrdDef.addDatasource("cpu123","GAUGE",2*step,0,Double.NaN);
(1)DS:关键字,表示这是一个资料的定义
(2)variable_name(变数名):资料库中存放资料的名称;可依需要定义多个DS.在每一个step周期内会产生一组新的DS值,用以更新资料库.这个值也称为PrimaryDataPoint(PDP).在上例,每300秒产生一个新的PDP值.
注:如果无法刚好在每300秒产生一个值,RRDtool会自动补偿修正.
(3)DST(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
(4)heartbeat:在我们的例子中heartbeat是600秒;如果在300秒内,资料库没有接收到一个新的PDP值,它将会再等300秒(共600秒);若还是无法收到任何PDP值,将会以UNKNOWN存到资料库中.
注:UNKNOWN在RRDtool具有特殊意义(以UNKNOWN表示一个错失掉的值比用0或其他的值好).
(5)minimum:上限值.
(6)maximum:下限值.
如果设定了上下限,任何更新值落在范围之外,将以UNKNOWN贮存之.
5、roundrobinarchive(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列).
每一个PDP要300秒,12个PDP要12*300=3600秒,即1小时.这表示要取得1个CDP(等於12个PDP)的资料需要1小时,24个CDP需要一天.因此这个RRA需要一天的时间建构.经过24个CDPs,第25个CDP会取代第1个CDP;依次类推.
第二列的RRA:
贮存31个CDP;每个CDP要一个一天的平均值(288个PDPs,每个300*288=24小时);所以这个RRA是一个月的建构周期.
一个单一的资料库可以有很多RRA.如果定义了多个DS,每个个别的RRA将贮存所有DS的值到资料库.例如有一个资料库,有3个DS定义,及有每日,每周及每月的RRA宣告,则每个RRA将分别为3个datasources保存资料.
注意:一个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:图表数据源名
File:RRD库路径
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
分享到:
相关推荐
这段代码可能用于自建的服务器监控系统,或者作为其他监控工具(如Nagios、Zabbix)的插件,提供定制化的数据存储和展示功能。通过结合其他系统接口,我们可以实现全网流量监控、实时告警等功能。 总的来说,...
Cacti是一款基于RRDTool的流行网络监控系统,可以在"基于RRDTool的监测系统Cacti简介.htm"中了解更多。Cacti提供了一个用户友好的Web界面,方便管理员监控网络设备和服务器的性能,如CPU使用率、内存消耗和带宽利用...
作为一个轻量级框架,它为监控系统性能提供了直观、实时的图表展示功能,尤其在处理网络流量、系统资源消耗等监控场景下表现突出。在本文中,我们将深入探讨 JRobin 的核心特性、工作原理以及如何将其集成到您的项目...
在Java世界中,数据持久化是一个不可或缺的部分,而JRobin正是这样一个轻量级的、高效的RPM(Ring-Persistent Metrics)存储库,它被广泛用于记录和分析系统性能指标。JRobin-1.5.14.jar是这个项目的一个稳定版本,...
赠送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...
赠送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绘图的绝佳例子程序
结合JavaMelody和JRobin,开发者可以实现对Java应用的全方位监控,及时发现并解决问题,提升系统的稳定性和效率。在实际应用中,这两个工具可以帮助运维人员更好地管理和维护Java应用程序,确保其健康运行。
网络管理系统(Network Management System, NMS)是一种用于监控、管理和维护网络设备的软件工具。基于Web的网络管理系统将这种功能与Web技术相结合,使得管理员可以通过Web浏览器远程访问和控制网络设备,无需安装...
总之,`javamelody-core-1.52.0.jar`和`jrobin-1.5.9.jar`是JavaMelody监控解决方案的重要组成部分,它们共同为Java Web应用提供了详尽的性能监控和数据分析能力。通过集成这两个JAR,开发者可以轻松地对应用进行...
JavaMelody是一款强大的开源系统性能监控工具,专为Java应用程序设计。它允许开发者和运维人员实时监测应用的运行状态,从而有效地识别并解决性能问题。JavaMelody通过简单的集成方式,提供了一整套全面的监控指标,...
另外,它还能够监控系统级别的指标,如CPU使用率、磁盘空间和网络I/O,这些信息对于系统运维人员来说非常宝贵。 集成JavaMelody到你的JAVA Web项目中十分简便。通常只需要在web.xml配置文件中添加相关的监听器和...
jrobin-1.5.9.1.jar则是用于存储和读取监控数据的库,它是基于Rrdtool(Round Robin Database Tool)的一个Java实现。Rrdtool是一种高效的数据存储方案,特别适合于长期保存时间序列数据,如性能监控数据。jrobin库...
JavaMelody是一款强大的Java应用程序和应用服务器监控工具,它提供了实时的数据分析,帮助开发者和运维人员了解系统的健康状况和性能指标。通过图表形式展示内存使用、垃圾回收、Session管理、JDBC连接、SQL查询、...
JRobin是RRDTool的100%纯Java替代品,具有几乎完全相同的规格。 如果向RRDTool和JRobin提供相同的数据,则将获得完全相同的结果和图形。 支持所有标准RRDTool操作。
JavaMelody利用JRobin来持久化监控数据,如内存、CPU使用率等,以便后续分析。 3. **javamelody.war**: 这是一个预打包的Web应用,可以独立部署在支持Servlet容器(如Tomcat、Jetty等)上。当你不想或不能将Java...
监控器需要的jar,需在web.xml中配置 <filter-name>monitoring <filter-class>net.bull.javamelody.MonitoringFilter</filter-class> <filter-name>monitoring <url-pattern>/* <listener-class>...
综上所述,JavaMelody为Java Web应用提供了一套全面而灵活的监控解决方案,不仅能够帮助开发者快速定位性能瓶颈,还能有效提升系统的稳定性和可靠性。无论是对于开发团队还是运维人员来说,都是一个不可或缺的工具。
JRobin是一个纯Java实现的RMON(Remote Monitoring)兼容的数据存储系统,它能够高效地记录和分析时间序列数据,如Tomcat的内存使用趋势或HTTP请求频率。这种数据存储方式使得监控信息可以长期保存,便于进行历史...
- 将`javamelody.jar`和`jrobin-x.jar`两个文件从提供的`javamelody.zip`压缩包根目录下复制到待监控Web应用的`WEB-INF/lib`目录中。 - 如果使用Maven构建工具,可以通过添加`javamelody-core`依赖项简化安装流程...