V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
abc9999
V2EX  ›  程序员

各位架构师,服务调用链路上某个服务报错怎么排查?

  •  
  •   abc9999 · 2023-10-24 08:25:12 +08:00 · 2492 次点击
    这是一个创建于 425 天前的主题,其中的信息可能已经有所发展或是发生改变。
    服务 A 调用服务 B ,服务 B 再调用服务 C...,整个链路上如果某个服务报错,怎么排查?
    如何确定是哪个服务报错?
    如果是 B 报错,如何查看 A 传递给 B 的参数?如果 B 有多个副本,怎么知道是哪个副本抛异常?
    18 条回复    2023-10-24 11:30:11 +08:00
    twofox
        1
    twofox  
       2023-10-24 08:29:10 +08:00
    你需要一个分布式链路追踪组件
    Java 有 Skywalking 或者是 es 的 apm
    abc9999
        2
    abc9999  
    OP
       2023-10-24 08:38:01 +08:00
    @twofox 只用过 sleuth+zipkin ,但是它看不到是服务的哪个副本报错,Skywalking 可以做到吗?
    twofox
        3
    twofox  
       2023-10-24 08:45:17 +08:00
    @abc9999 skywalking 我都没怎么用过,但我记得 elastic apm 是可以的
    xuanbg
        4
    xuanbg  
       2023-10-24 08:46:10 +08:00
    你没有日志的么?哪个服务的哪个类里的哪个方法抛异常在日志里都能看得到啊。如果只需要定位异常,这就够了。但有时候异常是上游数据引发的,那就需要链路追踪,通过一个 requestId 把一串调用日志串起来看。这个可以使用第三方的成熟产品,也可以自己一路传 requestId ,打日志的时候一起打出来就行。
    xwayway
        5
    xwayway  
       2023-10-24 08:47:29 +08:00
    @abc9999 统一日志看不到 host 的么?
    overthemoon
        6
    overthemoon  
       2023-10-24 08:48:51 +08:00
    elk
    jtwor
        7
    jtwor  
       2023-10-24 08:51:31 +08:00
    skywalking 能做到,就是个链路追踪。不理解为什么要确认是哪个副本,既然都报错了,在那个副本执行都应该报错把。
    crazywind
        8
    crazywind  
       2023-10-24 08:54:31 +08:00
    zipkin 是可以看到调用链路的吧
    abc9999
        9
    abc9999  
    OP
       2023-10-24 09:06:05 +08:00
    @xuanbg 公司没用过,就是一些想法而已,你的意思大概明白了,需要依靠链路日志,我自己搭个环境再看看,感谢
    abc9999
        10
    abc9999  
    OP
       2023-10-24 09:06:35 +08:00
    @xwayway 刚看了下,可以看到 ip ,以前没注意到这点,感谢
    abc9999
        11
    abc9999  
    OP
       2023-10-24 09:07:07 +08:00
    @crazywind 可以看到链路上的每台机器 ip ,之前没注意,感谢
    datoujiejie221
        12
    datoujiejie221  
       2023-10-24 09:07:34 +08:00
    如果看日志的话,按 opentrace 那套标准打印 log ,elk 做采集分析就可以,我们现在采集的时候是把 k8s 的 podname 加上的
    skywalking 可以定位到示例,但是我们用主要是用到指标的监控,快速定位哪个服务拖慢了速度
    abc9999
        13
    abc9999  
    OP
       2023-10-24 09:08:40 +08:00
    @jtwor 是的,一般是因为上游数据有问题,跟哪个副本没关系
    8355
        14
    8355  
       2023-10-24 09:14:29 +08:00
    微服务->全链路 -> 网关->防雪崩
    dif
        15
    dif  
       2023-10-24 09:14:58 +08:00
    可以装个 pinpoint ,或者其他什么 apm 的东西
    coderxy
        16
    coderxy  
       2023-10-24 09:15:14 +08:00
    链路追踪 一看就知道哪里报的错
    tanxnative
        17
    tanxnative  
       2023-10-24 09:17:25 +08:00   ❤️ 1
    opentelemetry
    snb9
        18
    snb9  
       2023-10-24 11:30:11 +08:00
    sleuth + elk ( filebeat 收集)可以准确跟踪到机器,skywalking 辅助使用。单 skywalking 长链路查找有点麻烦
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2880 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 14:18 · PVG 22:18 · LAX 06:18 · JFK 09:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.