百度网络质量监控实战:猎鹰一战成名(下)
作者简介
运小海 百度高级研发工程师
从事网络监控、可用性建设相关工作,负责百度外网监控平台猎鹰、百度内网监控平台NetRadar等系统的研发和优化工作。在网络采集、网络异常检测、系统可用性方面有广泛的实践经验。
干货概览
我们在上一篇文章《百度网络监控实战:猎鹰一战成名》(上)中,初步介绍了百度外网质量监控的典型场景与需求,本篇文章将从外网监控的实现原理及系统架构两个方面系统详细介绍百度外网质量监控平台猎鹰。
通过上一篇文章的需求调研,我们可以知道,业务线运维工程师希望外网监控平台能够真实反映用户到百度IDC(Internet Data Center,互联网数据中心,又称机房)间的网络质量,并能够及时快速地发现机房侧故障、骨干网故障以及单省份故障,这里面有几个关键问题:
对于业务线运维工程师来说,他们关注的是外网质量,因此,需要通过一种探测手段来实时反映网络质量。而探测协议有很多种,比如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,我们也认为网络正常。
为了能够真实反映用户到百度IDC间的网络质量,需要从用户侧向百度的的VIP(Virtual Internet Address,百度多台服务器形成的一个虚机地址)发起探测。因此,我们在全国三大运营商各个省份部署了若干监测点,用于执行具体的探测任务。
为了尽可能快地发现网络故障,我们设计了基于数据驱动的网络故障检测模型。已有的故障检测模型大多是固定周期检测模式,比如检测周期是1min,那么检测模型每两次相邻的检测需要间隔1min,这种模式比较适用于流水数据、PV数据的检测。但是对于网络异常检测的场景,实际上每两次相邻的检测并不一定需要间隔1min,看下面这个例子:
假如Tn周期的检测时间点是10:00:00,按照固定周期检测模式,Tn+1周期的检测时间点则是10:01:00,而实际很有可能在10:00:35的时候就已经收集够了相对充足的探测样本,足够判断出当前是否存在网络异常,那么在10:00:35就可以进行故障检测了,这样能够将故障发现时间提前25秒。
因此,在我们的基于数据驱动的网络故障检测模型中,我们对固定周期检测模式进行了改进,加入了探测样本数判断,如果提前收集到了足够的探测样本,则提前进行故障检测,尽可能地加快故障发现速度。
当出现网络故障时,业务线运维工程师需要知道网络故障的类型,以便于采取对应的止损策略进行止损。我们针对机房侧故障、骨干网故障、单省份故障的表现特点分别设计了三种故障发现策略。
图1 外网监控原理示意图
如上所述,我们通过在每个省份部署若干采集点,这些采集点周期性地向百度机房的VIP发起探测请求(HTTP请求和TCP请求),并将探测结果进行上报,然后对探测结果进行故障判定,得到实时的网络质量和状态(如图1所示)。
猎鹰整体系统架构如图2所示,主要包括采集服务、任务分发、数据分析与告警、元数据管理、存储以及可视化展示等六部分。
图2 猎鹰整体架构图
元数据管理是整个系统最基础的一部分,它负责不同的实体映射关系维护,主要包括VIP→机房归属关系、机房→VIP的映射列表以及VIP→域名归属关系。
在上一小节中提到,猎鹰部署在各个省份的采集点需要周期性地向百度机房的VIP发起探测请求,服务端接收到探测结果之后,需要把每个VIP的探测样本在VIP所属的机房维度进行汇聚计算,得到机房粒度的探测质量数据。因此,我们必须要维护VIP→机房归属关系以及机房→VIP的映射列表。
另外,在检测出故障后,我们需要判断出受损的业务线,因此需要维护VIP→域名归属关系,比如检测出广东机房出现故障,我们根据机房→VIP的映射列表得到所有受到影响的VIP,然后再根据VIP→域名归属关系分析出受影响的域名,从而得到受损的业务线列表。
任务分发负责将采集任务分发到采集点,这里的采集任务主要指VIP探测列表,采集任务会指定探测目标(即VIP)、探测协议(HTTP or TCP)、探测周期、超时阈值等。
采集服务在采集点上运行,负责执行具体的采集任务。采集任务包括HTTP探测任务和TCP探测任务两种,在执行完探测之后,会将探测结果上报给上层的数据分析与告警服务,用于后续的数据处理与实时分析。探测结果包括两个指标:失败率和连接时延。
数据分析与告警是整个系统最核心的部分,包括数据收集、故障判定以及影响分析与告警。
数据收集用于接收采集服务上报的探测结果,并对探测结果进行一些清洗、去噪以及汇聚计算。
故障判定用于对清洗汇聚后的探测结果进行故障判定,通过三种故障发现策略来判断当前是否存在某种网络故障。
影响分析与告警用于进行故障通告和报警,当故障判定判断存在网络故障时,会通过元数据信息分析出受到此次故障影响的业务线,然后给这些业务的运维工程师发送报警。
存储包括三部分:指标时序数据存储、异常事件存储以及元数据存储。指标时序数据存储主要存储实时的探测指标(失败率和连接时延),异常事件存储主要存储网络故障事件,元数据存储主要存储基础的数据归属映射关系。其中指标时序数据存储和异常事件存储使用的是百度通用的数据存储平台,元数据为内存存储。
可视化视图部分的展现非常重要,这个是对用户最直接的呈现。猎鹰的可视化视图主要包括三部分:全局网络视图、业务线网络视图、机房视图。
全局网络视图用来展现实时的全局网络状况,图3展示的是全局网络视图,包括故障公告、机房全局概览和产品线概览。故障公告展示的是最近一段内的网络故障通告。机房全局概览展示的是全百度所有机房的网络状况,如果有异常,会进行飘红显示。产品线概览展示的是接入猎鹰的所有产品线的网络状况,如果该产品线受到网络故障影响,则会飘红显示。
图3 全局网络视图(示意图)
业务线网络视图展示的是各个业务线的域名以及VIP的网络质量视图,各业务线运维工程师可以很直观地观察到自己所负责的域名和VIP的网络访问质量。图4展示的是百度搜索产品线的域名网络质量视图,主要包括两部分:
图4 业务线网络视图
展示的是某一段时间内全国所有省份访问某个域名的连通性情况,按运营商维度分别展示。
以地图的形态分运营商展示域名在每个省份的网络连通性质量,地图的每个省份的颜色会随着网络质量的好坏而变化,并且如果网络质量持续异常,地图上的省份会有红圈闪动。每个省份鼠标悬浮停留会展示该省份的网络连通性质量,包括探测异常率和响应时间两个指标。
机房视图展示的是全国各个省份到全百度各个机房的详细外网质量数据。这个视图包括两部分:
展示某个时间段内全国所有省份到某个机房的网络连通性状况。
机房-省份连通性视图以地图的形态细致地展现了每个省份到每个机房的外网访问质量,地图的每个省份的颜色会随着网络质量的好坏而变化。同时,地图上的省份可以和趋势图联动,点击地图的某个省份,右边趋势图展示的内容会变成选中的省份到该机房出的网络连通性数据。
图5 机房视图
总结
猎鹰已经多次帮助发现重大网络故障,及时挽回了数千万可能的PV Loss,在业务线日常运维工作中发挥着越来越重要的作用。接下来我们会继续秉承着“科技改变世界、技术改变生活”的理念将猎鹰打造成更加智能化的网络监控平台,让网络问题无处遁形。
若您有任何疑问或想进一步了解猎鹰,欢迎给我们留言!
百度网络质量监控实战:猎鹰一战成名(下)相关推荐
- 网络摄像头监控中什么情况下需要使用流媒体转发服务器?
流媒体服务器是一台可以独立组网的网络视频监控系统核心设备,兼容DVR.DVS.IPC等多种品牌和编码类型的网络视频编码设备联网通讯,为内网和外网的多用户网络并发访问提供服务,满足C/S和B/S架构的联 ...
- Apache Griffin+Flink+Kafka实现流式数据质量监控实战
点击上方蓝色字体,选择"设为星标" 回复"面试"获取更多惊喜 八股文教给我,你们专心刷题和面试 Hi,我是王知无,一个大数据领域的原创作者. 放心关注我,获取更 ...
- 百度网络监控实战:NetRadar横空出世(上)
原文:https://mp.weixin.qq.com/s/VBShicsqReDtureKAdEgDA 转自订阅号「AIOps智能运维」,已授权运维帮转发 作者简介:运小贝,百度高级研发工程师 负责 ...
- 百度网络监控实战 | 多维度分析方法
作者简介 李聪 百度高级研发工程师 负责百度智能运维产品(Noah)监控数据分析相关工作,重点关注故障定位.异常检测等相关领域技术. 干货概览 在前一篇文章<百度网络监控实战 | 多维度分 ...
- 【逗老师带你学IT】PRTG监控系统配合树莓派采集企业内部无线网络质量
目录 本文介绍了一种,如何通过树莓派采集企业内部无线网络质量,将树莓派变成无线探针,并在PRTG网络监控平台上进行显示的方法. 实现原理 部署方法 一.树莓派无线网络连接 二.编写shell脚本 三. ...
- python3网络爬虫开发实战pdf 崔庆才 百度网盘分享
python3网络爬虫开发实战pdf 崔庆才 百度网盘分享 介绍了如何利用Python 3开发网络爬虫,环境配置和基础知识,然后讨论了urllib.requests.正则表达式.Beautiful S ...
- python wifi探针_【逗老师带你学IT】PRTG监控系统配合树莓派采集企业内部无线网络质量...
本文介绍了一种,如何通过树莓派采集企业内部无线网络质量,将树莓派变成无线探针,并在PRTG网络监控平台上进行显示的方法. 可以监控我们感兴趣的无线网络的各项指标,包括 无线丢包 ping测试最大.最小 ...
- 机器网络配置与性能指标监控实战
前言: 有关于网络问题,又是笔者另一个薄弱知识点. 应该说是理论知识不够扎实,每次理论学的差不多的时候,由于缺乏实战,一段时间之后,又忘记的差不多了. 每次重复这种情况还是蛮尴尬的,所以理论结合实战才 ...
- linux 监控网络出口流量,Linux下网络流量监控
原标题:Linux下网络流量监控 Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发 网络数据使用 我生活在一个预付费的互联网环境中,大约每个月7GB流量.监视 ...
- zabbix使用fping监控任意两个节点之间的网络质量、丢包率和响应时间
zabbix使用fping监控任意两个节点之间的网络质量.丢包率和响应时间 zabbix使用fping监控任意两个节点之间的网络质量.丢包率和响应时间之前的博文 使用zabbix3.0.4的ICMP ...
最新文章
- C++实现十大排序算法(冒泡,选择,插入,归并,快速,堆,希尔,桶,计数,基数)排序算法时间复杂度、空间复杂度、稳定性比较(面试经验总结)
- python装饰器 property_Python中@property装饰器的使用技巧性解析(代码示例)
- 并发调试和JDK8新特性
- 大屏监控系统实战(11)-大屏显示日增投票数量柱状图的制作
- Linux定时向目标服务器传输文件
- Linux 用户和组 (1)基本概念
- ssm集成mysql_idea+SSM+Mysql框架整合
- TI DSP C64X 优化基本方法
- java excel 冻结_如何实现表格的首行冻结2
- 独角兽公司超级创始人早期的30个特质
- 2018 PKU_WC 长沙游 《我到长沙来看雪》
- 反应堆Reactor模式
- 嵌入式平台 STM32 libqrencode 移植 二维码生成
- 联想y7000p 2019 安装ubuntu20.04 双系统 设置efi分区
- Git安装图文教程(Windows、Linux全平台)
- 你的域名前要加www吗?
- HTML5开发APP页面(动效篇)
- The Earth Rover
- 如何在C++中方便的将float、int等类型数据转换成string类型,并利用ROS中的std_msg/String发布出去
- python gevent pool_python 协程编程之gevent
热门文章
- Django的BUG:ImportError: cannot import name 'patterns'
- 几何畸变的类型_几何畸变分为()和()。
- NLP实践——Few-shot事件抽取《Building an Event Extractor with Only a Few Examples》
- Android进程分类与管理
- [BZOJ4152][AMPPZ2014]The Captain题解
- 2022软件测试常见抓包工具
- 2022.4.24腾讯笔试记录
- 网络安全-MySQL数据库
- 计算机组成原理速成课程【速成】
- HDOJ1233 还是畅通工程(kru)