应用监控工具Pinpoint、Jeager、zipkin对比

pinpoint和jeager对比

  • 功能:

    • 应用链路监控。监控方法调用信息、监控跨服务调用信息。
  • 背景

  • 架构

    • pinpoint
      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zHAAk9Fv-1635170259498)(assets/image-20211025210913-103ccd9.png)]
      • agent:代码插桩
      • collector:agent发送数据到collector,collector进行整理并存储数据
      • storage:使用hbase,数据存储
      • web:UI
    • jeager
      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uiphD6E6-1635170259501)(assets/image-20211025211438-9l2dqsg.png)]

      • client:代码插桩

      • agent:网络代理-收集span,发送给collector

      • collector:收集数据,转存

      • DB: 支持内存;支持两种NOSQL数据库: Cassandra and Elasticsearch;还支持一堆别的数据库

      • query:数据检索中间件

      • UI: UI

    • pinpoint的agent约等于jeager的client+agent,都是插桩+信息传输
  • 开发语言

    • pinpoint:java
    • jeager:go
  • 基础/思路

    • 两种均基于Google Dapper
      • Dapper的trace和span结构
  • 支持

    • pinpoint:
      • agent有java、C、go、php、node版
    • jeager:
      • client有Go、java、Python、Node、C#、CPP
    • 各自对每种语言的支持监控的框架/协议(例如spring/tomcat有所不同)
    • 就java而言,pinpoint支持的协议要多一些:http、grpc、dubbo…
  • 使用

    • pinpoint
      • 无侵入,使用javaagent自动插桩,即java -agent pinpoint-agent.jar 业务.jar 即可
    • jeager
      • 常规:有侵入,需要在业务对http接收和发送时进行header手动解析。如trace生成、id解析等
      • 或者使用opentracing社区开发的client插桩。例如java java-specialagent
    • 有侵入和无侵入的区别在于是否需要手改代码。
  • 开发

    • pinpoint
      • 不支持opentracing
      • ASM字节码插桩技术。
      • 开发较为繁琐。需要为特定的协议编写plug,监控某个方法,进行字节码插桩生成。
      • 但控制更为细致
    • jeager
      • 支持opentracing
      • 但文档貌似更为强调对网络流量、trace的收集,而非对某个方法的监控。即强调agnet的功能而非client的功能
      • 实际开发时,需要对代码进行少量修改
      • opentracing实现了对一些语言的常用框架的插桩监控,使用bytebuddy,例如java [java-specialagent](
      • 开发方便,毕竟opentracing写起来比pinpoint好入门一点。但如果写堆特定应用的插桩,都差不多。毕竟都是dapper的衍生,数据结构和思路都差不多。
    • openTracing
      • 一种开发规范
      • 定义了span、trace等如何构建以及编写。
      • 在应用中生成trace时(无论是手动埋点还是自动埋点),都可以忽略监控程序,按照统一的CNCF openTracing API开发
  • 对微服务的支持

    • pinpoint:支持,需要为每个服务配置agent(启动应用时随agent启动)。比较难配置应该[#TODO: pinpoint如何处理一个pot中server和development#]
    • jeager:支持,容易配置。istio自带jeager。并且jeager原理是收集流量,通过istio代理配置,很容易收集信息。
  • 性能损耗:

    • pinpoint:文档说3%最多
    • jeager: 就普通监控而言,只收集trace,性能肯定要好于插桩了的pinpoint。但如果要方法监控插桩,bytebuddy又差于ASM
  • 文档

    • 就中文以及基本分析而言,pinpoint要明显多于jeager。也许是因为pinpoint开发更为繁琐,需要更多的文档解释。但就入门以及简单开发的需求,两者的文档都可以解释的比较清楚

zipkin

  • Twitter开发的监控工具
  • 使用时需要在业务逻辑中解析http
    • 有多重方法
      • 手动解析
      • 使用现有库,在spring中自动装配等
  • 使用和开发类似jaeger
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值