1、商业产品,无疑使用dynatrace,相对简单实用
2、有技术能力的,大规模应用建议使用zipkin或者skywalking,如果需要做到真正的全链路跟踪(如阿里的天眼),包括采集服务间链路跟踪日志、中间件日志、应用日志),可在基于zipkin进行二次开发,zipkin和springcloud天然集成,属于侵入式,但难点均是需和ELK做集成,以便根据链路和日志快速定位问题,skywalking属于后起之秀,方便之处在于应用协同agent启动进行信息采集,如何与ELK集成未深入研究。小规模应用,可以使用韩国开源产品pinpoint。
APM的选择性比较多,有开源的,有收费的,目前市面的系统基本都是参考Google的Dapper论文来开发的。如果预算充足,可以选择收费的企业版。好处是比较稳定,遇到问题有专人负责解答。如果研发资源充足,又想自己造轮子,可以选择开源版本,如skywalking,Pinpoint,Zipkin,CAT。
skywalking,Pinpoint:基本不用修改源码和配置文件,只要在启动命令里指定javaagent参数即可,对于运维人员来讲最为方便;
Zipkin:需要对Spring、web.xml之类的配置文件做修改,相对麻烦一些;
CAT:需要在程序中硬编码,侵入性比较大。
具体选择哪个,这个根据业务团队的熟悉具体产品的程度来决定。