9月7日-8日,相约 2023 腾讯全球数字生态大会!聚焦产业未来发展新趋势! 了解详情
写点什么

Orbitz 的开源监测工具 ERMA 和 Graphite

  • 2008-07-10
  • 本文字数:2193 字

    阅读完需:约 7 分钟

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 开发者网络的成员来说是免费的。

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

ERMA 的两个主要元素是 Monitor 和 MonitorProcessor 接口。应用程序代码通过使用 Monitor 实现来仪表化。开发者还可以使用注解如 @Monitored 来标记需要被监测的 Java 类。@Monitored 注解可以被声明在类型一级(类或接口)也可以被声明在方法级。通过利用基于 Spring AspectJ 的配置,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 汇聚到网络运转中心。

GraphiteGraphite 是一个 Python Web 应用,用来为数字时序数据提供可伸缩的存储和可视化显示。它接收来自 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

活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2008-07-10 15:441466
用户头像

发布了 150 篇内容, 共 41.7 次阅读, 收获喜欢 9 次。

关注

评论

发布
暂无评论
发现更多内容

堪称零瑕疵!仅用了330页直接封神,我要吹爆这份RocketMQ笔记

Java 程序员 后端

哇塞!这是我见过的最牛逼的性能监控系统,集强大功能于一身

Java 程序员 后端

国内顶级大牛整理:分布式消息中间件实践笔记+分布式核心原理解析

Java 程序员 后端

在外包公司从Java后端干到安卓开发,你醒醒吧!,阿里大师推荐的这份Java开发必读书单

Java 程序员 后端

三面阿里被挂,竟获内推名额,历经5面拿下口碑offer(Java后台)

Java 编程 程序员 架构 面试

基础面试3:内存溢出 vs 内存泄漏,java自学教程视频

Java 程序员 后端

备战金三银四吃透这些Spring Boot笔记文档,让你超过90%的Java面试者

Java 程序员 后端

哟,我发现 Dubbo 这波优化好像不够彻底啊?,深入java虚拟机第四版百度网盘

Java 程序员 后端

图解Redis数据结构篇之压缩列表,java注解原理解析

Java 程序员 后端

基于springboot开发的国际物流管理系统,花费近一年时间整理的Java核心知识清单

Java 程序员 后端

在SQL SERVER中实现RSA加解密函数,java入门书籍推荐

Java 程序员 后端

NQI一站式线上平台搭建,质量基础设施一站式服务

电微13828808271

多线程—可能你会遇到的多线程面试题都在这里了(含答案

Java 程序员 后端

大厂面试算法到底有多重要?学会这份算法宝典,随便暴打头条面试官

Java 程序员 后端

团灭LeetCode!Alibaba技术官甩出的大师级算法宝典真的太香了!

Java 程序员 后端

社招三面阿里“落榜”,幸获内推名额,4面揽下美团offer

Java 架构 面试 后端

图解Redis:一套方案轻松搞定数据库与缓存数据不一致问题(1)

Java 程序员 后端

大厂面试官:千万级数据量的表,如何进行快速查询,springmvc源码书籍

Java 程序员 后端

嘘,助你一臂之力,快来瞧瞧这份-Spring-面试小抄,百度语音识别接口java

Java 程序员 后端

四年的开发经验只去面试了蚂蚁金服,无忧一次过,自学linux视频教程推荐

Java 程序员 后端

架构实战营总结

Mr.He

架构实战营

团队管理(二)-敏捷开发最佳团队协作管理平台,mysql入门很简单视频

Java 程序员 后端

质量基础设施一站式平台建设,NQI一站式系统开发

电微13828808271

图解Redis:一套方案轻松搞定数据库与缓存数据不一致问题

Java 程序员 后端

基于DRBD的KVM动态迁移,Java开发需要学什么

Java 程序员 后端

多线程详解第3讲:线程状态,感悟分享

Java 程序员 后端

基于Java NIO框架区别对比,spring教程下载

Java 程序员 后端

复习54天二战字节跳动,终获offer定级2-2【面试答案,springboot底层原理面试题

Java 程序员 后端

太为难我了,阿里面试了7轮(5年经验,拿下P7岗offer)

Java 程序员 面试 后端

四面美团开发岗,成功斩获offer,这份面经总结终结篇看完就是血赚

Java 程序员 后端

图说线性表-搞懂链表从这篇文章开始,2021必看-Java高级面试题总结

Java 程序员 后端

  • 扫码添加小助手
    领取最新资料包
Orbitz的开源监测工具ERMA和Graphite_Java_Srini Penchikala_InfoQ精选文章