近年来随着容器和微服务发展,各种链路监控产品层出不穷,像Jaeger、Zipkin、SkyWalking、 Pinpoint、Elastic APM、CAT等 ,一般建议参考几个方面:
1、侵入性
2、扩展性
3、性能损耗
4、界面图标
5、业务能否hold住
6、OpenTracing 标准
CNCF 推出 OpenTracing 标准,统一了 Trace 数据结构和格式,通过提供平台无关的 API,使得开发人员能够方便的添加追踪系统的实现,建议选型参考这个标准。
综上,建议Jaeger或者SkyWalking:
1、Jaeger 部分侵入,go语言,遵循CNCF组织规范;
2、SkyWalking 侵入性低,java语言,国内当当、华为使用;
在容器中发布微服务,对微服务链路可视化,目前有两种方式:
1、通过埋设探针对微服务各个服务进行监控与数据收集,简单、易上手。
2、通过旁路探测的方式对请求服务进行监控,复杂、工作量大。
下面介绍通过探针的方式对微服务进行链路监测与可视化,目前市场上开源框架基本都是从openAPM框架演化而来,如:Zipkin、SkyWalking、 Pinpoint、ElasticAPM、CAT等。
目前市面上比较流行SkyWalking、Zipkin、Pinpoint这个比较主流,功能比较完善,支持分布式跟踪、监控、各种性能指标,与周边其他开源项目融合比较紧密,接口完善、数据打通、支持可视化展示与扩展接口。
全链路监控可视化解决哪些问题:
• 请求链路追踪:通过分析服务调用关系,绘制运行时拓扑信息,可视化展示。
• 调用情况衡量:各个调用环节的性能分析,例如吞吐量、响应时间、错误次数。
• 容器规划参考:扩容/缩容、服务降级、流量控制。
• 运行情况反馈:告警,通过调用链结合业务日志快速定位错误信息。
优势:APM工具对代码侵入性比较小或无侵入的集成到现有微服务当中,减少开发人员工作负担与透明接口。