链路追踪是一件比较难做工作,但在故障分析,应用调优,应用监控等方面起着至关重要的作用,可以说做好链路追踪,能使得如上的工作效率大幅度提升。
应用容器化之后,又增加了容器层,因此使得链路的追踪变得更难。目前的主要APM技术有:
skywalking,pinpoint,zipkin,jaeger等。
可以采用3种方式部署:1. 侵入方式,以插件形式集成于业务运行时环境,例如:将skywalking
集成于jboss运行环境;2. 与服务无网格(istio)集成,实现链路追踪,例如:jaeger;3. 以sidecar方式运行;
如上仅供参考。
收起云原生基金会下的主流容器网络实现,都提供了一些流量跟踪的基础功能。著名的比如 Cilium 的 Hubble 方案通过自己的 eBPF 层获取;比如 kiali 方案通过 istio 获取等。目前容器网络选型尚无统一的最佳实践,还需要按实际情况来研判。
更实际一点的来说,既然上了容器,说明这些业务系统都是比较新的,那么通过应用日志改造的方式,走日志分析角度做链路跟踪,应该比走网络流量分析更加合适。
网路链路和服务链路作为两种不同视角的链路能力,可以优先考虑网络链路能力的构建,在自主研发能力和业务规模的基础上,逐步增强日志链路的能力。
考虑到容器环境的网络复杂性,应考虑选型具有支持underlay、overlay多种网络模型的流量采集工具,基于Vxlan包协议能够进行拆包分析。当然这也有个前提,容器网络也要进行精确的网络分区规划,避免网段重叠。此外,考虑目前容器网络技术的发展,选择合适的路由或者underlay网络也是比较可行的一种技术方案,这样传统的流量分析工具仍然可用。
收起