昨天参加sfgg-d-day的活动,听到zava-kid分享的淘宝鹰眼系统,想到以前在进行业务追踪时的痛苦。记得又一次客户端某个用户一天流量就爆掉了,然后在左问题定位的时候,把整个业务相关的人拉到一起,然后大家一起来Tracing。后来就在客户端中有加入了日志统计的模块。但是如果下次其他系统出现同样问题,是否还会经历这样折磨的过程呢?如果有一个完整的业务追踪系统,在问题定位、问题预警上都会发挥不小的作用。
不知道诸位是否在使用一些比较成熟的方案来作Tracing,或者说一些好用的工具以方便Tracing,再或者分享一些人肉Tracing的经验/趣闻。
google是有自己的解决方案的:Dapper,这个昨天看了1/3,感觉比较适合比较大的公司,有足够的技术团队能够hold住的。对于小规模的是否有更好的解决方案呢?
1
wmttom 2015-05-31 14:18:05 +08:00 4
开源:
http://twitter.github.io/zipkin https://github.com/naver/pinpoint https://github.com/sourcegraph/appdash 国外: new relic AppDynamics 国内: @OneAPM tingyun |
2
OneAPM 2015-06-02 11:05:33 +08:00
@wmttom 非常感谢推荐,欢迎试用 OneAPM。
OneAPM 做的是端到端、真实用户体验监控。目前支持多种编程语言:Java、.NET 、Pyhton、PHP、Ruby。移动端支持Android、iOS。 Ai 产品主要用于监控服务端(后端)的性能,实时抓取发生缓慢的HTTP请求、SQL语句。 Bi 产品从页面加载时间、AJAX 加载,页面 Trace、地理位置等多个角度,度量前端页面的性能。 Mi 产品监控的是移动App,App是否有缓慢的Activity、App是否崩溃闪退,可以直接看到造成这类问题的代码行。 关于淘宝鹰眼系统,我看了这篇文章大致了解了一下。 http://www.cnblogs.com/zhengyun_ustc/p/55solution2.html 鹰眼是定制的,需要修改代码。 OneAPM用的是BCI技术,无需修改代码。以Java举例,只需将oneapm.jar 放在应用服务器的目录下即可。 鹰眼用的埋点逻辑,用TraceId把所有的调用关系串起来。这对于开发团队来说是不小的工作量。 现在我们来对比一下实现的效果: 淘宝的鹰眼系统 OneAPM[Ai] Java Agent 会把所有被调用的http请求或一些后台任务纪录下来 我们这里拿一个OneAPM 抓取到的事务为例: 事务的调用拓扑图: 当发生了超过设定时间的请求,就会被当成一个trace,这里我们称为慢Web事务 在这里我们可以看到这个Web事务所有的调用关系,耗时的方法,代码行 这里我们分析下到底哪里出现了问题 以上只是大致介绍,其实还有更多的功能 :P OneAPM Java Agent 采用的是BCI技术,感兴趣的朋友可以向我要资料。[email protected] 关于鹰眼系统的资料也欢迎大家发送给我。 这篇文章里提到性能监控系统通常有几个设计目标,目前来看OneAPM是完全符合: (1)低侵入性——非业务组件,无侵入其他业务系统,使用方透明,减少开发人员的负担; (2)灵活的应用策略——随时决定所收集数据的范围和粒度; (3)时效性——从数据的收集和产生,到数据计算和处理,再到最终实时展现; (4)决策支持——这些数据能在决策支持层面发挥作用,特别是从 DevOps 的角度; (5)可视化。 最后,感谢@wmttom 给我们打广告的机会 :) |