bcc ebpf 可插拔无侵入监控服务函数级耗时 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
xuelang

bcc ebpf 可插拔无侵入监控服务函数级耗时

  •  
  •   xuelang
    selfboot 2023 年 7 月 1 日 1632 次点击
    这是一个创建于 1028 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我们都知道,在开发和维护后台服务时,监控函数的执行时间是至关重要的。通过监控,我们可以及时发现性能瓶颈,优化代码,确保服务的稳定性和响应速度。然而,传统的方法通常涉及在代码中添加统计信息并上报,这种方法虽然有效,但往往只针对那些被认为是关键路径的函数。

    假设在某个时刻,我们突然需要监控一个并非重点关注的函数的执行时间。在这种情况下,修改代码并重新部署服务可能是一项繁琐且耗时的任务。这时,eBPF (扩展的伯克利数据包过滤器)和 BCC ( BPF 编译器集合)就派上了用场。通过使用 eBPF ,我们可以在不修改代码和不重新部署服务的情况下,动态地插入探针来监控函数的执行时间。这不仅大大简化了监控过程,还减少了对服务性能的影响。

    完整文章在这里 利用 ebpf bcc 无侵入分析服务函数耗时

    函数耗时直方分布

    函数平均耗时和 P99 耗时

    4 条回复    2023-07-03 10:31:01 +08:00
    LindsayZhou
        1
    LindsayZhou  
       2023 年 7 月 1 日   1
    uprobe ,好,学到了。

    平常我这边 kprobe 用得多一点,最近还准备去看看 tc 的部分。

    比起 bcc ,个人会要更喜欢 libbpf / libbpfgo 一点。
    不会要在服务器上装 python bcc clang 一大堆东西。libbpf 编译好直接扔上去就行。
    各个发行版也都默认开始把 btf 开起来了。
    xuelang
        2
    xuelang  
    OP
       2023 年 7 月 2 日
    @LindsayZhou 直接用 libbpf / libbpfgo 的话,开发起来容易吗?我一直都是用 bcc 和 bpftrace ,还没直接用过 lib
    LindsayZhou
        3
    LindsayZhou  
       2023 年 7 月 3 日   1
    @xuelang 开发难度我觉得差不多。

    内核里有一大堆 libbpf 的示例,可以看看: https://github.com/torvalds/linux/tree/master/samples/bpf
    libbpfgo 还会更简单一点: https://pkg.go.dev/github.com/aquasecurity/libbpfgo
    xuelang
        4
    xuelang  
    OP
       2023 年 7 月 3 日
    @LindsayZhou 很强,我学习下,感谢。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3020 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 02:43 PVG 10:43 LAX 19:43 JFK 22:43
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86