zoukankan      html  css  js  c++  java
  • Pinpoint扩展插件实践笔记

    为链路(spanEvent)添加tag

    背景

    我们可能需要想在代码中写入特定的信息到调用链中,并且希望对里面的特定key做检索

    实现思路

    创建一个特定的类,只需要一个方法,再对这个类的方法进行增强,这个就可以拿到入参信息,把它加入到调用链路,这个思路是对的,也实现了,不过有优化空间,默认的插件拦截器都是会创建一个spanEvent,这样如果业务中调用了太多次,链路就会很深,实际上这些tag信息是不需要单独开链路的,只需要与当前的链路绑定就好了,所以可以获取当前的spanEvent,把tag内容添加进去

    检索的能力通过在收集器端解析特定的key,再把内容写到es中,再通过web端进行检索

    获取当前链路的traceId

    背景

    为了和其它的监控结合,比如在dubbo调用链中显示traceId,或者缓存监控框架中记录traceId,虽然官方提供了日志的增强,可以在日志中打印出traceId,或者使用MDC.get("ptxId")获取,但这个依赖于日志,如果系统没有打印日志,MDC中就是空的,所以需要一个单独获取traceId的便捷方法

    实现思路

    也是和添加tag思路一样,只需要暴露一个util类,再对它进行增强,在after方法里获取当前的traceId,将它赋值给方法的返回值,这里通过实践发现不能直接返回一个String,修改这个String的值,并不能改变最终的结果,需要包装成一个类,再修改里面的属性。

     

  • 相关阅读:
    字符串与模式匹配算法(一):BF算法
    Spring MVC:HandlerMapping
    Spring MVC:DispatchServlet类
    Spring:面向切面编程的AOP
    Java:检查异常与未检查异常
    AOP源码解析:AspectJExpressionPointcutAdvisor类
    Vue+Webpack打包之后超过url-loader大小限制的图片在css的background-image中使用路径问题
    less
    ES6模块的import和export用法总结
    bootstrap4网格
  • 原文地址:https://www.cnblogs.com/yissheng/p/7828832.html
Copyright © 2011-2022 走看看