写点什么

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

  • 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:491934

评论

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

文本纠错:提升OCR任务准确率的方法

合合技术团队

人工智能 文字识别 OCR 合合信息

MobTech ShareSDK 高级接口及配置

MobTech袤博科技

android MobTech袤博科技 sharesdk

从零到一,教你搭建「以文搜图」搜索服务(一)

Zilliz

人工智能 机器学习 深度学习

RT-Thread记录(十四、I/O 设备模型之ADC设备)

矜辰所致

RT-Thread 8月月更 ADC

这三道MySQL面试题,99%的人答不出来!

程序员小毕

Java MySQL 数据库 程序员 面试

马蹄链Dapp系统开发部署技术

薇電13242772558

dapp

保利威荣获「年度最佳直播服务商」!引领视频直播行业创新发展

科技怪咖

105份墨天轮“国产化迁移”干货文档汇总(含TiDB、openGauss、上云等)

墨天轮

数据库 阿里云 TiDB 国产数据库 达梦

Linux常用命令

楠羽

图灵8月书讯 | 10 本新书上市,本本精选

图灵社区

新书推荐

何去何从的并行计算

博文视点Broadview

如何应对软件可变性?这4种常用的方法肯定要知道

华为云开发者联盟

云计算 软件 后端

左邻云安全 | 全程守护,让园区安全看得见

科技怪咖

教你使用Jupyter可视化查询语句的语法树

华为云开发者联盟

人工智能

​Black Hat 2022 聚焦软件供应链安全

SEAL安全

网络安全 软件供应链安全

计费准确率高达100%,是如何实现的?

科技怪咖

Docker与虚拟化技术浅析第一弹之docker与Kubernetes

京东科技开发者

Docker Kubernetes k8s 虚拟机

KubeEdge边缘计算在顺丰科技工业物联网中的实践

华为云开发者联盟

云计算 云原生 工业物联网 顺丰

从实验室到用户桌面,深度解析AI 落地实践之路

云智慧AIOps社区

人工智能 机器学习 AI 算法实践 智能运维AIOps

1 分钟在 Serverless 上部署现代化 Deno Web 应用

阿里巴巴中间件

阿里云 Serverless 云原生

技术分享| anyRTC 8月更新迭代

anyRTC开发者

音视频 WebRTC 视频通话 实时消息 抓拍图片

解决 NGINX LDAP 参考实施中的安全问题

NGINX开源社区

nginx HTTP 安全漏洞 ldap 身份验证

Rewind the PlanetScale Rewind | 拆解硅谷当红科技公司如何做 Product Marketing

Bytebase

B站基于Iceberg+Alluxio助力湖仓一体项目落地实践

Alluxio

B站 iceberg Alluxio 湖仓一体 8月月更

“似水无形” 的小程序化技术

Speedoooo

小程序 小程序管理平台 轻应用 快应用 小程序平台

阿里云 ACK 容器服务生产级可观测体系建设实践

阿里巴巴中间件

阿里云 容器 云原生 可观测

Kruise Rollout v0.2.0 版本发布:支持 Gateway API、StatefulSet 分批发布等能力

阿里巴巴中间件

阿里云 开源 容器 云原生 OpenKruise

打破数字化盐碱地:传统型企业如何踏稳数字化转型第一步

科技怪咖

泰禾智能:智能改变未来,成就工业设备行业佼佼者

科技怪咖

秋招涨薪攻略!拿着GitHub标星80k的阿里性能优化笔记,把项目优化个遍

退休的汤姆

Java 阿里 社招 Java工程师 秋招

打造耳聪目明的MES系统,你准备好了吗?

科技怪咖

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