运维可视化 | 漫谈内网连通性可视化
作者简介
莫莫 百度资深前端研发工程师
负责百度智能运维(Noah)相关产品的前端设计和研发,在运维数据可视化方向有着丰富的实践经验。
干货概览
对于运维可视化,在前面的文章《运维可视化 | 漫谈内网监控可视化》中详细介绍了能将内网监控中的异常情况可视化的事件流图。本文将从可视化角度继续分析,百度内网监测系统(NetRadar)如何通过可视化手段展示在某个时刻内网中存在哪些异常,从而让运维工程师直观地知道内网的哪些部分受到了异常的影响。
机房连通性可视化
当运维工程师发现自己的系统出现异常,并通过事件流图得知内网存在异常后,他需要进一步得知这些异常影响了内网的哪些部分,从而判断内网的异常是否造成了自己系统的故障。在这种情况下,运维工程师希望能够有一个视图直观地展示异常的影响范围。具体来说影响范围包括:
哪些机房之间的连通性有异常
哪些机房的内部网络存在异常
连通性异常是否是地域性的
备注:一个区域包含多个机房,比如有华北区域包括4个机房,华东区域包括4个机房,华南区域包括3个机房。区域之间通常用跨区域的链路连接。跨区域链路出现故障时,会导致两个区域中的机房互相不能连通。
可视化网络状态的方法包括两种:图(graph)和连通性矩阵。在图中,每个节点代表一个网络实体,比如交换机、路由器、主机等,每条边代表网络实体之间的链路。在连通性矩阵中,网络实体对应矩阵的行和列,矩阵中的元素表示所在行和列对应的网络实体之间的链路。根据上述的需求,我们可以看出工程师们主要关注机房之间的连通性情况。如果用图的方式表达,就会形成一个全连通图,图中大量的边不利于工程师掌握网络总体状态。因此,我们决定使用连通性矩阵的可视化方法。
1连通性矩阵
假设有a1, a2, a3, a4四个机房,可以用一个4行4列连通性矩阵来表示,其中机房ai对应矩阵中的第i行和第i列。矩阵中第i行第j列的元素描述的就是机房ai到机房aj的连通性状态,如下图:
图1 连通性矩阵
我们不妨用bij来表示矩阵中位于第i行第j列的元素。图中存在一个红色的圆点,位于b32,以及一个灰色的三角形,位于b44。
b32的红色的圆点代表机房a3到机房a2的链路出现了异常。在矩阵中,与b32对称的元素b23代表的是机房a2到机房a3的链路状态。b23和b32说的都是机房a2和机房a3之间的链路,只是方向不同,这正好可以表达内网监控系统的探测方向。为了探测网络连通性,监控系统在服务器之间发送探测包。比如,服务器x给服务器y发送了一个探测包,y收到探测包后给x发送一个响应包。如果x收到了响应包,就认为x到y的链路没有问题。反过来,y也可以给x发送探测包,x发送响应包。这说明内网监控系统的探测是存在方向性的。所以图中b32有红点,b23没有点的意思就是:机房a3的服务器主动发送探测包探测机房a2中的服务器,存在大量丢失响应包或者延迟显著增大的情况,连通性有异常;而机房a2的服务器主动发送探测包探测机房a3中的服务器,响应包基本都能正常到达。两个探测方向结论不一致主要是由机房的网络出口和入口设备不同,并且单一设备出故障导致。
b44的灰色三角形代表的是机房a4的机房内网络存在异常。连通性矩阵的主对角线元素bii都代表机房内网络的状态。为了能够与机房间网络有更直观的区分,我们选择了三角形来表示。
最后,颜色代表了异常的程度,红色代表异常程度比较严重,灰色代表异常程度比较轻微。所以图1中a3到a2的机房间网络存在比较严重的连通性异常,而a4的机房内网络则存在比较轻微的连通性异常。
当连通性矩阵中存在多个异常点时,这些点可以形成特定的模式,分别代表不同的网络问题。下面,我们就来分析几种常见的模式。
2单机房出/入口链路问题
在连通性矩阵图中,可能会出现整行红色圆点。
图2.1 单机房出口链路问题
图2.1存在三个红色的圆点,分别位于b31, b32, b34位置。这就是整行红色圆点的情况。 每个点的含义如下:b31代表的是a3到a1的链路有异常,b32是a3到a2的链路有异常, b34 表示a3到a4链路有问题, 从这几个链路问题来看,链路都是从a3出来的,所以a3的出口链路出现了故障。
当然有可能出现整列红色圆点的情况,如下图所示:
图2.2 单机房入口链路问题
图2.2的三个红色圆点,分别在b13, b23, b43位置, 同理: b13表示a1到a3的链路有问题, b23说明a2到a3链路有故障, b43呈现a4到a3的链路问题,这一列的链路问题,说明a3的入口链路出现的异常。
是不是有整行,整列的红点情况呢?
图2.3 单机房出入口链路问题
图2.3包含了6个红色圆点,是图2.1与图2.2的集合, 整行与整列的异常代表a3的出/入链路都出现异常。
3单机房核心设备问题
图2.1,图2.2,图2.3都看到b33这个点是没有状态的,那如果在b33的点的异常情况也加上有表示什么呢?看如下可视化方式:
图3 单机房核心设备问题
图3所示,除了图2.2中的6个红色圆点,还在b33中有个红色的三角, b33位置的三角刚好在矩阵图的主对角线上,代表a3机房内网络出现故障。图3的6个红色圆点说明a3的出/入链路出现网络异常,红色三角说明a3单机房核心设备也出现故障。
4区域链路问题
通常,网络不是只在某一个区域,有可能同时有华北区域a1, a2, a3, a4四个机房,华东区域b1, b2, b3, b4四个机房,华南区域c1, c2, c3, c4四个机房,如下图所示。
图4.1 区域链路问题
图4.1,我们可以看出机房分别用三个颜色来标识:紫色,蓝色,绿色。这几个颜色在右上角有说明分别代表华北区域,华东区域与华南区域。同时,图中在蓝色区块的华东区域(b1, b2, b3, b4机房)两个区块有大批红点出现,呈现两个矩阵形状的圆点,这说明华东区域的链路问题导致机房互相不能连通。那如果,我们想对区域进行筛选,只查看华北,华南的区域之间的情况呢?如下图所示:
图4.2 区域筛选链路问题
如图4.2中只有一个红色三角与红色圆点,与图4.1相比,这里筛选掉了图4.1华东区域的所有异常, 我们从图4.2中,能看到一个细节问题,鼠标移动到异常点的时候,出现“进入c3-a4机房详情页 ”tooltip信息,点击这个异常点,可以进一步查看这俩机房间的异常事件与相关的指标趋势。如果想要知道a4机房内的详情情况,可以点击这个异常点详情查看,然后我们可以进一步观察a4内部集群之间的网络连通性, 集群的网络连通性跟机房连通性矩阵的方式是一样的,就不详细展开了。