BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Orbitz的开源监测工具ERMA和Graphite

| 作者 Srini Penchikala 关注 37 他的粉丝 ,译者 宋玮 关注 0 他的粉丝 发布于 2008年7月11日. 估计阅读时间: 7 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

Orbitz Worldwide——全球领先的在线旅行公司,已经开源了它的两个监测工具:Extremely Reusable Monitoring API(ERMA)和Graphite(一个持久化和可视化组件)。ERMA是Orbitz自己开发出来的一个Java API和类库,已经被用于Orbitz的几个Web应用程序中,用以在运行时捕获应用程序中的监测统计数据。它是被处理的事件流源头,以便在服务停止或运行速度低于所定义的响应时间阈值时发出警报。

Orbitz监测和管理在线旅行社网站的范围包括了数十个Web应用、数百个VM和数千个Jini 服务。ERMA基于三种技术:复杂事件处理(Complex Event Processing——CEP)、Java管理扩展API(Java Management Extensions——JMX)和面向方面编程(Aspect Oriented Programming——AOP)。 Orbitz使用Aspect把监测逻辑注入到应用程序代码中,并使用CEP处理监测事件。CEP为处理大量的监测数据提供了一个高吞吐量及低延迟的解决方案。通过减少由软件可用性、可靠性和性能问题引起的客户影响事件的平均修复时间(MTTR),系统提升了可管理性。其结果是,Orbitz用最小的开发成本获得了访问超过10万个不同事件类型的能力。其处理如此大量数据的能力使公司能够在需要的时候以非常细粒度的层次监测服务。而且,使用这种技术,增加新的监测应用程序所需的硬件成本被限制在了最小程度。

JavaOne 2008大会上,Doug Barth和Matthew O'Keefe就Orbitz的CEP作了介绍,这是一个关于Orbitz Web站点的应用程序级监测的案例研究。在这个技术专题中,他们用监测统计的例子和可视化控制台示范了怎么把ERMA和Graphite工具用于Orbitz的应用程序。网上有关于这个介绍的多媒体录音,这个资源对于Sun开发者网络的成员来说是免费的。

ERMA

ERMA是一个基于Java技术的仪表API,它使用起来和日志API一样简单,而且足够灵活,通过配置就可以满足大多数日志、监测、分析和其它事件处理需求的需要。它动态地把发生在同一应用线程上的事件联系起来。作为结果的事件模式还可以把服务于一个用户请求的、分布式的VM连接在一起,以便能够高效下钻错误和延迟的根本原因分析,以及自下而上的影响分析。

ERMA的两个主要元素是Monitor和MonitorProcessor接口。应用程序代码通过使用Monitor实现来仪表化。开发者还可以使用注解如@Monitored来标记需要被监测的Java类。@Monitored注解可以被声明在类型一级(类或接口)也可以被声明在方法级。通过利用基于SpringAspectJ的配置,Orbitz使用了一个直接ERMA仪表和AOP风格仪表的混合体。

MonitorProcessor负责使用由仪表化代码产生的原始数据。Orbitz有许多MonitorProcessor实现,其中包括这么一个实现,把来自成百个VM的ERMA事件实时汇集到CEP引擎,这些事件在这里被高效聚合并处理。

ERMA可以从其Launchpad站点上下载。其团队已经完成了新的ERMA 3.0版本的测试。他们内部所有与ERMA相关的wiki文档已经被复制到新的ERMA Wiki站点上了。

ERMA使用了Apache Commons JEXL类库以便为声明哪些Monitor定位到哪些MonitorProcessor上提供简单的配置语法。这也使得应用程序可以在运行的时候动态地路由信息流。在开发过程中,为了确保向应用程序增加监测逻辑时不至于引入过多的延迟,使用了JUnitPerf测试框架。

该解决方案的可视化部分包括了一个显示SNMP事件的Netcool/OMNIBus控制台,以及一个自主开发的持久化和可视化系统——Graphite。Orbitz使用OpenNMS项目的JoeSNMP API开发了一个控制器,它可以把来自事件处理应用的数据通过SNMP汇聚到网络运转中心。

Graphite

Graphite是一个PythonWeb应用,用来为数字时序数据提供可伸缩的存储和可视化显示。它接收来自CEP引擎的输出,这些输出由7万种数据汇聚而成。Graphite中有一个Graphite portlet用来与监测portal集成,它是基于JBoss Portal框架的。这个portal呈现了重要的系统统计图表视图以及警报的RSS feeds。用户可以针对特定警报的严重性和/或受影响应用来订阅这些feeds。Graphite Web应用本身被用来显示使用RESTful URL所产生的监测统计的可视图形。Graphite数据可以被展现成线型图、饼图或者原始的CSV数据。Graphite还提供了一个基于Web的命令行接口,高级用户可以使用它来快速且方便地创建并共享包含相关图表集的仪表盘。

Graphite可以从Launchpad站点上下载。Chris Davis和Graphite开发团队也已经创建了一个wiki,介绍如何使用这个可视化工具。如果想向开发团队提供反馈,可以填写这个站点上的一个表格(需要用户注册)。不管什么时候,只要你把问题提交到这个网站上,Graphite团队都将收到一封电子邮件。

未来Orbitz的复杂事件处理还具有事件模式监测能力,包括实时点击序列(click stream)相关的分析和纠错能力。该公司正在开发一个解决方案,通过查找离散事件中的模式,估算出问题的根本原因,将之与客户影响事件信息捆绑在一起,能够减少传递给控制人员的警报数量。随着业务量和系统规模的增长,运营团队必然要依赖自动的行为事件侦测才能有效管理。ERMA的未来路线图包括与开源ESP引擎Esper的集成。

如果想更进一步了解ESP这个话题,InfoQ ESP专题还介绍了其它CEP产品,包括来自IBM的(WebSphere Business Events)、来自BEA的(WebLogic Event Server)、以及Esper。

查看英文原文:Orbitz Open Sources Monitoring Tools ERMA and Graphite

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT