容器视角下的网络性能监控( 二 )


那么为什么需要通过流量采集来解决这个问题呢?有两个方面的原因 。
第一个方面:从应用的层面无法解决问题 。从日志或代码插件很难去感知到网络层面的问题 。比如某个访问消耗了500毫秒,在网络层面是由于建连导致的时延问题?还是协议栈时延?其实在应用层并不清楚,只知道最终这个请求消耗了500毫秒 。
第二个方面:网络层的信息能提供更精确的数据 。以Nginx日志为例,当一个请求所发送的数据已在内核缓冲区里,Nginx认为已经实现了请求的完整回复,而记录了一个时延 。但是如果能从网络流量的角度去监测,会发现在实际的环境中对于这样的场景会有3~10倍时延的误差 。这说明,从网络层面去分析应用的质量、性能是必要的 。
为了实现整个业务的监控,需要在容器网络环境获取到的数据,包括Service之间访问的追踪关系;负载均衡、Service前后IP的变化关系;真实源IP与SNAT和DNAT后的变化关系 。
通过这些数据来刻画监控数据的分布,以及监控数据和网络逻辑拓扑的关联,构建网络知识图谱,实现各个纬度的可视化;同时对历史的交互数据进行回溯分析,在不同的维度(资源组维度、POD维度、服务维度)做层层的钻取来最终定位业务的性能问题,并进行证据的留存 。目前国内已有不少企业通过自己的产品赋能容器网络性能监控,例如云杉网络DeepFlow虚拟网络流量采集、可视化与监控平台,基于高效的混合云流量全网采集和时序数据存储、检索技术,提供混合云网络流量采集与分发和性能监控诊断解决方案 。




推荐阅读