Tracing 系统 or 人肉 Tracing

2015-05-31 12:45:03 +08:00
 shiznet

昨天参加sfgg-d-day的活动,听到zava-kid分享的淘宝鹰眼系统,想到以前在进行业务追踪时的痛苦。记得又一次客户端某个用户一天流量就爆掉了,然后在左问题定位的时候,把整个业务相关的人拉到一起,然后大家一起来Tracing。后来就在客户端中有加入了日志统计的模块。但是如果下次其他系统出现同样问题,是否还会经历这样折磨的过程呢?如果有一个完整的业务追踪系统,在问题定位、问题预警上都会发挥不小的作用。

不知道诸位是否在使用一些比较成熟的方案来作Tracing,或者说一些好用的工具以方便Tracing,再或者分享一些人肉Tracing的经验/趣闻。

google是有自己的解决方案的:Dapper,这个昨天看了1/3,感觉比较适合比较大的公司,有足够的技术团队能够hold住的。对于小规模的是否有更好的解决方案呢?

4332 次点击
所在节点    问与答
5 条回复
wmttom
2015-05-31 14:18:05 +08:00
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技术,感兴趣的朋友可以向我要资料。frances@oneapm.com
关于鹰眼系统的资料也欢迎大家发送给我。


这篇文章里提到性能监控系统通常有几个设计目标,目前来看OneAPM是完全符合:
(1)低侵入性——非业务组件,无侵入其他业务系统,使用方透明,减少开发人员的负担;
(2)灵活的应用策略——随时决定所收集数据的范围和粒度;
(3)时效性——从数据的收集和产生,到数据计算和处理,再到最终实时展现;
(4)决策支持——这些数据能在决策支持层面发挥作用,特别是从 DevOps 的角度;
(5)可视化。

最后,感谢@wmttom 给我们打广告的机会 :)
Chimney
2015-06-02 11:12:45 +08:00
@OneAPM 能否展开一下BCI技术。。。
shiznet
2015-06-13 11:52:17 +08:00
@OneAPM
抱歉这么就才来回复。

想问下OneAPM这里的Java Agent是否是类似于nginx这种做http的proxy?如果是这样的话,最终对服务的性能开销大概有多少呢?对于某些核心服务对于性能的要求还是蛮高的,所以需要关注一下。
我个人对文中的描述是监控某个service对其他服务调用的监控,只是一度的关系的维护(比如app188-4外部服务),而没有类似鹰眼的整个业务链的tracing。不知我理解的是否正确
OneAPM
2015-06-25 16:26:26 +08:00
@shiznet

想问下OneAPM这里的JavaAgent是否是类似于nginx这种做http的proxy?
答案:不是

如果是这样的话,最终对服务的性能开销大概有多少呢?
答案:2%

我个人对文中的描述是监控某个service对其他服务调用的监控,只是一度的关系的维护(比如app188-4外部服务),而没有类似鹰眼的整个业务链的tracing。不知我理解的是否正确?
答案: 我们也支持业务链的tracing 目前http 远程调用支持的比较好。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/195059

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX