V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
shiznet
V2EX  ›  问与答

Tracing 系统 or 人肉 Tracing

  •  
  •   shiznet · 2015-05-31 12:45:03 +08:00 · 4189 次点击
    这是一个创建于 3258 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    5 条回复    2015-06-25 16:26:26 +08:00
    wmttom
        1
    wmttom  
       2015-05-31 14:18:05 +08:00   ❤️ 4
    OneAPM
        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 给我们打广告的机会 :)
    Chimney
        3
    Chimney  
       2015-06-02 11:12:45 +08:00
    @OneAPM 能否展开一下BCI技术。。。
    shiznet
        4
    shiznet  
    OP
       2015-06-13 11:52:17 +08:00
    @OneAPM
    抱歉这么就才来回复。

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

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

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

    我个人对文中的描述是监控某个service对其他服务调用的监控,只是一度的关系的维护(比如app188-4外部服务),而没有类似鹰眼的整个业务链的tracing。不知我理解的是否正确?
    答案: 我们也支持业务链的tracing 目前http 远程调用支持的比较好。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1767 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 00:39 · PVG 08:39 · LAX 17:39 · JFK 20:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.