最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

百度网络质量监控实战:猎鹰一战成名(下)

  • 2019-09-09
  • 本文字数:3449 字

    阅读完需:约 11 分钟

百度网络质量监控实战:猎鹰一战成名(下)

我们在上一篇文章《百度网络监控实战:猎鹰一战成名》(上)中,初步介绍了百度外网质量监控的典型场景与需求,本篇文章将从外网监控的实现原理及系统架构两个方面系统详细介绍百度外网质量监控平台猎鹰。

一 外网监控实现原理

通过上一篇文章的需求调研,我们可以知道,业务线运维工程师希望外网监控平台能够真实反映用户到百度 IDC(Internet Data Center,互联网数据中心,又称机房)间的网络质量,并能够及时快速地发现机房侧故障、骨干网故障以及单省份故障,这里面有几个关键问题:

1 监控数据反映的是网络质量

对于业务线运维工程师来说,他们关注的是外网质量,因此,需要通过一种探测手段来实时反映网络质量。而探测协议有很多种,比如 ICMP、TCP、HTTP,那么哪种协议更适合呢?我们选择了 TCP 和 HTTP 来作为探测协议,原因有以下两点:


首先,网络设备在转发请求时,是根据请求的源 IP、源端口、目的 IP、目的端口、网络协议这五个信息决定请求的 Next Hop 所经过的链路或者设备。TCP 和 HTTP 协议有请求端口,而 ICMP 协议只有源 IP、目的 IP 以及网络协议这三个信息。那么对于一个监测点和一个被监测目标来说,由于 TCP 和 HTTP 探测请求的源端口可以不断的变化,因此 TCP 和 HTTP 探测方式能够比 ICMP 探测方式够覆盖更多的链路。


其次,用户访问百度服务的请求大多数是基于 TCP 和 HTTP 方式的,因此,TCP 和 HTTP 方式更接近于用户的访问方式。


在确定了探测方式之后,我们需要有探测指标来衡量网络质量的好坏,为了更加真实反映用户到百度服务之间的网络质量,我们将网络连接是否建立成功、连接建立的时延作为衡量网络质量的指标。对于 HTTP 探测方式,我们不关心 HTTP Code,只要连接建立成功,即使 HTTP Code 为 500,我们也认为网络正常。

2 监控数据反映用户到百度 IDC 的网络访问质量

为了能够真实反映用户到百度 IDC 间的网络质量,需要从用户侧向百度的的 VIP(Virtual Internet Address,百度多台服务器形成的一个虚机地址)发起探测。因此,我们在全国三大运营商各个省份部署了若干监测点,用于执行具体的探测任务。

3 能够及时快速地发现网络故障

为了尽可能快地发现网络故障,我们设计了基于数据驱动的网络故障检测模型。已有的故障检测模型大多是固定周期检测模式,比如检测周期是 1min,那么检测模型每两次相邻的检测需要间隔 1min,这种模式比较适用于流水数据、PV 数据的检测。但是对于网络异常检测的场景,实际上每两次相邻的检测并不一定需要间隔 1min,看下面这个例子:


假如 Tn 周期的检测时间点是 10:00:00,按照固定周期检测模式,Tn+1 周期的检测时间点则是 10:01:00,而实际很有可能在 10:00:35 的时候就已经收集够了相对充足的探测样本,足够判断出当前是否存在网络异常,那么在 10:00:35 就可以进行故障检测了,这样能够将故障发现时间提前 25 秒。


因此,在我们的基于数据驱动的网络故障检测模型中,我们对固定周期检测模式进行了改进,加入了探测样本数判断,如果提前收集到了足够的探测样本,则提前进行故障检测,尽可能地加快故障发现速度。

4 能够准确区分网络故障类型

当出现网络故障时,业务线运维工程师需要知道网络故障的类型,以便于采取对应的止损策略进行止损。我们针对机房侧故障、骨干网故障、单省份故障的表现特点分别设计了三种故障发现策略。



图 1 外网监控原理示意图


如上所述,我们通过在每个省份部署若干采集点,这些采集点周期性地向百度机房的 VIP 发起探测请求(HTTP 请求和 TCP 请求),并将探测结果进行上报,然后对探测结果进行故障判定,得到实时的网络质量和状态(如图 1 所示)。

二 系统架构

猎鹰整体系统架构如图 2 所示,主要包括采集服务、任务分发、数据分析与告警、元数据管理、存储以及可视化展示等六部分。



图 2 猎鹰整体架构图

1 元数据管理

元数据管理是整个系统最基础的一部分,它负责不同的实体映射关系维护,主要包括 VIP→机房归属关系、机房→VIP 的映射列表以及 VIP→域名归属关系。


在上一小节中提到,猎鹰部署在各个省份的采集点需要周期性地向百度机房的 VIP 发起探测请求,服务端接收到探测结果之后,需要把每个 VIP 的探测样本在 VIP 所属的机房维度进行汇聚计算,得到机房粒度的探测质量数据。因此,我们必须要维护 VIP→机房归属关系以及机房→VIP 的映射列表。


另外,在检测出故障后,我们需要判断出受损的业务线,因此需要维护 VIP→域名归属关系,比如检测出广东机房出现故障,我们根据机房→VIP 的映射列表得到所有受到影响的 VIP,然后再根据 VIP→域名归属关系分析出受影响的域名,从而得到受损的业务线列表。

2 任务分发

任务分发负责将采集任务分发到采集点,这里的采集任务主要指 VIP 探测列表,采集任务会指定探测目标(即 VIP)、探测协议(HTTP or TCP)、探测周期、超时阈值等。

3 采集服务

采集服务在采集点上运行,负责执行具体的采集任务。采集任务包括 HTTP 探测任务和 TCP 探测任务两种,在执行完探测之后,会将探测结果上报给上层的数据分析与告警服务,用于后续的数据处理与实时分析。探测结果包括两个指标:失败率和连接时延。

4 数据分析与告警

数据分析与告警是整个系统最核心的部分,包括数据收集、故障判定以及影响分析与告警。


数据收集用于接收采集服务上报的探测结果,并对探测结果进行一些清洗、去噪以及汇聚计算。


故障判定用于对清洗汇聚后的探测结果进行故障判定,通过三种故障发现策略来判断当前是否存在某种网络故障。


影响分析与告警用于进行故障通告和报警,当故障判定判断存在网络故障时,会通过元数据信息分析出受到此次故障影响的业务线,然后给这些业务的运维工程师发送报警。

5 存储

存储包括三部分:指标时序数据存储、异常事件存储以及元数据存储。指标时序数据存储主要存储实时的探测指标(失败率和连接时延),异常事件存储主要存储网络故障事件,元数据存储主要存储基础的数据归属映射关系。其中指标时序数据存储和异常事件存储使用的是百度通用的数据存储平台,元数据为内存存储。

6 可视化

可视化视图部分的展现非常重要,这个是对用户最直接的呈现。猎鹰的可视化视图主要包括三部分:全局网络视图、业务线网络视图、机房视图。


全局网络视图用来展现实时的全局网络状况,图 3 展示的是全局网络视图,包括故障公告、机房全局概览和产品线概览。故障公告展示的是最近一段内的网络故障通告。机房全局概览展示的是全百度所有机房的网络状况,如果有异常,会进行飘红显示。产品线概览展示的是接入猎鹰的所有产品线的网络状况,如果该产品线受到网络故障影响,则会飘红显示。



图 3 全局网络视图(示意图)


业务线网络视图展示的是各个业务线的域名以及 VIP 的网络质量视图,各业务线运维工程师可以很直观地观察到自己所负责的域名和 VIP 的网络访问质量。图 4 展示的是百度搜索产品线的域名网络质量视图,主要包括两部分:



图 4 业务线网络视图


1 域名网络连通性质量趋势图


展示的是某一段时间内全国所有省份访问某个域名的连通性情况,按运营商维度分别展示。


2 域名分省网络连通性视图


以地图的形态分运营商展示域名在每个省份的网络连通性质量,地图的每个省份的颜色会随着网络质量的好坏而变化,并且如果网络质量持续异常,地图上的省份会有红圈闪动。每个省份鼠标悬浮停留会展示该省份的网络连通性质量,包括探测异常率和响应时间两个指标。


机房视图展示的是全国各个省份到全百度各个机房的详细外网质量数据。这个视图包括两部分:


1 机房网络连通性趋势图


展示某个时间段内全国所有省份到某个机房的网络连通性状况。


2 可视化机房-省份连通性视图


机房-省份连通性视图以地图的形态细致地展现了每个省份到每个机房的外网访问质量,地图的每个省份的颜色会随着网络质量的好坏而变化。同时,地图上的省份可以和趋势图联动,点击地图的某个省份,右边趋势图展示的内容会变成选中的省份到该机房出的网络连通性数据。



图 5 机房视图

总结

猎鹰已经多次帮助发现重大网络故障,及时挽回了数千万可能的 PV Loss,在业务线日常运维工作中发挥着越来越重要的作用。接下来我们会继续秉承着“科技改变世界、技术改变生活”的理念将猎鹰打造成更加智能化的网络监控平台,让网络问题无处遁形。


作者介绍:


运小海,百度高级研发工程师,从事网络监控、可用性建设相关工作,负责百度外网监控平台猎鹰、百度内网监控平台 NetRadar 等系统的研发和优化工作。在网络采集、网络异常检测、系统可用性方面有广泛的实践经验。


本文转载自公众号 AIOps 智能运维(ID:AI_Ops)。


原文链接:


https://mp.weixin.qq.com/s/kaUWo7n0JbJdj2C0PgnROw


2019-09-09 17:491695

评论

发布
暂无评论
发现更多内容

黔唐百宜软件系统开发内容

容器安全最佳实践入门

百度开发者中心

容器

算法大赛报名 | OMG!这些名企的真实数据竟用来battle

工赋开发者社区

算法 工业互联网

性能测试软启动初探

FunTester

性能测试 接口测试 测试框架 压力测试 测试开发

Axie Infinity区块链游戏系统开发技术

薇電13242772558

区块链

Vue进阶(幺玖肆):JavaScript解决浮点数精度丢失问题

No Silver Bullet

jquery Vue 浮点数 7月日更

了解腾讯京东字节等面试风格,掌握财富钥匙,大厂前端面试稳啦!

前端依依

程序员 面试 大前端 经验分享

2021世界人工智能大会召开,百度飞桨人工智能产业赋能中心于上海浦东启动运营

百度大脑

人工智能 大数据 百度 物联网

数据仓库的基本概念

大数据技术指南

7月日更

熵核科技,自主研发虚拟机赋能安全操作系统

熵核科技

支付安全 安全操作系统 物联网安全 eSIM安全

CGPay Pro钱包APP系统开发需求

我乃平常客,本持平常心| 2021 年中总结

编程三昧

程序人生 大前端 代码人生

fil矿机怎么选择?用什么fil矿机比较好?

FIL矿机怎么买 fil挖矿

等保二级与等保三级定级标准是怎样?哪个级别更高?

行云管家

网络安全 数据安全 等保 等级保护

火爆 GitHub!这个图像分割神器开源了

百度大脑

百度 算法

云服务器、虚拟主机以及服务器如何定义的?三者有什么区别?

行云管家

云计算 服务器 云服务器 虚拟主机

从零开始学习3D可视化之摄像机自由飞行

ThingJS数字孪生引擎

大前端 可视化 3D 数字孪生

国内报价-APP时间加速

Qunar技术沙龙

优化逻辑 优化 优化技巧 优化业务 报价

Vue进阶(幺叁捌):vue路由传参的几种基本方式

No Silver Bullet

Vue 路由 7月日更

加电软件系统开发详情

优米心选软件系统开发资料

了不起的开发者 丨 有奖征文活动来啦!

百度开发者中心

百度 开发者 征文

疫情下的在线教育行业未来发展

anyRTC开发者

音视频 WebRTC 在线教育 视频直播 双师课堂

首个SSRF漏洞开篇学习

网络安全学海

网络安全 信息安全 渗透测试 漏洞分析 SSRF

懂了!时间复杂度O(1),O(logn) ,O(n),O(nlogn)...

Ayue、

数据结构

【redis前传】自己手写一个LRU策略

zxhtom

Java redis 原理 造轮子 jdk运用

hadoop 1.0 和 hadoop 2.0 的区别

五分钟学大数据

hadoop 7月日更

架构实战营1期第二模块作业

五只羊

架构实战营

VGC挖矿APP系统开发内容

重温历史 致敬百年 “复兴大道100号”线上VR展馆正式开馆

百度大脑

百度 虚拟现实

7.24 杭州站 | 阿里云 Serverless Developer Meetup 开放报名!

Serverless Devs

云计算 阿里云 Serverless 云原生

百度网络质量监控实战:猎鹰一战成名(下)_文化 & 方法_运小海_InfoQ精选文章