百度网络监控实战:NetRadar横空出世(上)

原文:https://mp.weixin.qq.com/s/VBShicsqReDtureKAdEgDA

转自订阅号「AIOps智能运维」,已授权运维帮转发

作者简介:运小贝,百度高级研发工程师

负责百度内网质量监测平台(NetRadar)的业务端设计及开发工作。在系统和网络监控、时序指标异常检测、智能客服机器人等方向有广泛实践经验。

干货概览

百度内网连接着数十万台服务器,承载着全公司业务的网络通信,其通信质量的重要性不言而喻。而百度内网的质量监测平台NetRadar(网络雷达),通过对整个内网“服务器端到端”传输质量进行监测,实现了快速、准确地发现、通告、定位内网问题,为百度业务的正常通信提供了有力保障。

《百度网络监控实战:NetRadar横空出世》系列文章将分上、下两篇介绍NetRadar平台,本文主要介绍内网质量监测的意义、相关需求以及百度原有的内网监测技术,而下篇将从核心功能、设计框架、异常检测策略以及可视化视图等方面对NetRadar平台进行系统介绍。

百度内网介绍

百度拥有数十万台服务器,分布于全国各地的几十个数据中心(又称IDC、机房)。这些海量的服务器通过网络分层级互联,构成了统一的“资源池”,对外提供可靠、强大的存储、计算和通信服务。

在软件架构上,百度的大型服务一般都是模块化设计,一次服务需要上下游大量模块共同协作完成。为了提高并发服务能力和容灾能力,这些模块会分布式地部署在不同机房的不同服务器上。为保证服务的正常运行,内网必须保证各模块具有良好的“端到端”网络通信能力,一旦出现网络故障并影响了模块间的通信,往往会对服务造成影响,甚至导致服务整体不可用。

为了提供高可靠、高性能的端到端通信能力,网络结构在设计上预留了大量冗余,既有设备的冗余,也有线路的冗余。这样一来,两台服务器间的通信可以同时存在许多条不同的路径,能够在一定程度上抵御网络故障。尽管如此,实际环境中端到端的通信问题依然常见,其原因主要包括:路由收敛延迟、ToR交换机单点故障、网络拥塞等等。另一方面,即便单个设备、网线、服务器发生故障的概率很低,乘上巨大的数量,故障必然是“常态”现象。

在这种“与故障为伴”的环境下,既然无法避免故障,就需要能够及时、准确地监测内网质量,这对于保证服务正常运行来说是至关重要的。

需求调研

在运维实践中,工程师对内网质量监测系统都有什么样的需求呢?我们对各业务线的运维工程师,以及来自网络组的同学进行了调研。为了更好地说明用户需求,图1给出了一个典型的运维场景:

图1     内网问题相关的运维场景

当运维工程师发现服务关键指标异常后,如果怀疑是内网故障导致的,则需要通过回答如下一些问题进行排查:
 1)“机房A到机房B的网络有问题吗?”
 2)“服务器a到服务器b网络有问题吗?”

如果经过检查确认内网没有问题,就要继续排查其他可能的原因,诸如上线、操作、程序 bug 等原因,以帮助进行有效的止损和恢复决策。而如果确定是内网故障导致服务受损,那么网络工程师为了诊断和修复网络故障,会排查一系列的通信问题来帮助缩小故障范围,比如:“哪些服务器通信有问题?”,“哪条链路有问题?”等。为了回答这些问题,最直接有效地方式就是“进行服务器端到端检测”,比如:

1) 排查“机房A到机房B网络有问题吗?”

可以测试: 机房A大部分机器到机房B大部分机器间的网络质量

2) 排查“机房A内部网络有问题吗?”

可以测试: 机房A大部分机器互相访问的网络质量
   3) 排查“服务器a到服务器b网络有问题吗?”

只需测试: 服务器a访问服务器b的网络质量

4) 排查“哪些服务器通信有问题?”

需要挨个ping或ssh疑似有问题的服务器
   5) 排查“在哪条链路上出的问题?”

需要执行traceroute命令查看路由细节

图2     人工测量网络质量步骤

但是,人工执行上述测试任务费时又费力。如图2所示,为了进行一次端到端的网络质量检测,首先要确定“源-目的”服务器,然后获得服务器的登录权限,之后才能登录到机器上执行各种测试操作,最终分析数据得到测量结果。显然,这种人工测量的方式可扩展性很差,无法应对大规模测量的需求。因此,需要一个平台能够实时地、自动地执行测量任务,给出分析结果。

那么,这个平台需要满足什么要求呢? 通过对业务线运维工程师和网络工程师进行调研,整理的需求如下:

 1)“端到端”的持续监测

由于百度业务线的程序或模块均部署在服务器上,其网络通信也都是从服务器发起和接收,所以服务器“端到端”的网络质量更能反应内网状况对业务通信的实际影响。所以从业务角度出发,平台应当能够对端到端网络质量进行持续监测。

 2)全覆盖的监测

实际中,运维工程师通常知道业务部署在哪些机房,但不清楚具体哪些机器间有网络通信,所以会关注 “这些机房网络是否正常”这种全局性的问题。此外,网络工程师的责任是保证整个内网质量可靠,需要系统地监测整个内网性能,尽可能地发现和修复网络故障,减少隐患。

 3)按需下发监测任务

实际工作中常常需要根据现场情况执行特定的监测任务,这导致需要进行额外的、有针对性的测量。所以,监测平台还需支持按需监测。

 4)检测结果主动报警

由于网络工程师直接对内网质量负责,因此希望监测平台在测量”端到端”通信性能后,对相关数据进行分析,判断网络是否正常,并在检测到网络异常后及时发送报警,以保证各业务线服务正常。

 5)针对产品业务的定制化展示

由于一个产品业务通常只部署在部分机房,依赖部分网络,所以运维工程师往往不关注非其负责的。因此,监测系统需要支持定制化展示,使运维工程师能迅速获取其需要关注的网络状态信息。

那么,百度现有的内网监测技术能否满足以上需求呢?

现有监测技术

其实,百度内部已经应用了一些内网质量监测技术,这些技术利用不同的测量手段获取内网质量数据,并加以分析,进而判断网络是否正常。表1给出了三种现有监测技术的相关信息。

表1      现有监测技术原理及不足


编号


监控原理


不足


技术1


利用交换机的Syslog监测交换机级别故障 


交换机级别故障无法准确反映业务所感知的网络性能


Syslog无法记录所有交换机故障


无法检测非交换机故障类网络异常


技术2


部署专用的服务器探针来连接各IDC核心交换机,服务器通过互相发包对IDC间网络性能进行主动探测


IDC内部网络通信监控缺失


探测到的IDC间网络性能和业务感受到的网络性能有所差别


资源开销大,不能直接扩展


技术3


在所有线上服务器部署探针,并在各IDC分别设置一个靶标服务器,让所有线上服务器测量到各靶标服务器的网络状态


单个靶标服务器存在单点故障问题,不能很好代表机房的网络情况


机房内部的拓扑覆盖不全


不支持按需探测功能

上述几种技术在内网质量监测和运维中发挥了一定作用,但在使用过程中也发现了一些不足,不能很好满足上述需求。因此,基于以上技术的实战经验,我们开发了新平台NetRadar(网络雷达)。与以上监测技术相比,NetRadar具有以下优点:

覆盖广探测agent在全网linux服务器完成部署,覆盖了百度全部内网机房;

多层级7*24小时持续监测整个内网的网络质量,包括机房间、机房内集群间、集群内ToR交换机间的网络质量;

指标全评价网络质量的方式多样,区分QOS队列、协议、统计值,共计27种网络质量监控指标,每个探测周期会产生近百万的监控指标;

检测准通过自适应异常检测算法对监控指标进行检测,并进一步生成机房、区域级别的网络事件;

除此之外,NetRadar还支持按需探测,并提供全内网“端到端”探测接口以及故障事件接口,以帮助工程师快速诊断网络问题。

总结

相信通过本文的介绍,您已经对百度内网质量监测有了一些了解。接下来,我们将推出本系列文章的下篇:《百度网络监控实战:NetRadar横空出世(下)》,系统性地介绍NetRadar平台,请持续关注AIOps智能运维!

原文地址:https://www.cnblogs.com/robinunix/p/8337330.html

时间: 2024-10-05 06:05:05

百度网络监控实战:NetRadar横空出世(上)的相关文章

实战1 网络监控cacti的安装配置

一.cacti概述二.cacti工作流程三.cacti安装四.配置cacti监控本机 环境: 操作系统:CentOS 6.4 x86_64软件:Cacti-0.8.7e 官方网站:http://www.cacti.net 一.cacti概述Cacti 在英文中的意思是仙人掌的意思,Cacti是一套基于PHP.MySQL.SNMP及RRDTool开发的网络流量监测图形分析工具.它通过snmpget来获取数据,使用 RRDtool绘画图形,它的界面非常漂亮,能让你根本无需明白rrdtool的参数能轻

实战Nagios网络监控(2)—— Nagios+Nrpe监控其他主机

本次实验在上次实验的环境下进行:实战Nagios网络监控(1)--监控本机运行状态和Mysq主机 需要的包:nagios-plugins-2.1.1.tar.gz nrpe-2.15.tar.gz 服务器端:server1.example.com        172.25.254.1 新监控端:server2.example.com        172.25.254.2 实验前提: /etc/init.d/httpd start /etc/init.d/nagios start /etc/i

实战Cacti网络监控(2)——搭建Spine轻量级框架

本次实验接着上次实验的环境.实战Cacti网络监控(1)--基础安装配置     (1)在物理主机上:        <1>yum install net-snmp.x86_64  -y    ##安装snmp服务             yum install net-snmp-utils.x86_64 -y        <2>vim /etc/snmp/snmpd.conf 41 #com2sec notConfigUser  default       public 42

实战网络监控Zabbix(1)—— 远程监控主机服务

1. Zabbix 简介 Zabbix 是一个高度集成的网络监控解决方案,可以提供企业级的开源分布式监控解决方案,由一个国外的团队持续维护更新,软件可以自由下载使用,运作团队靠提供收费的技术支持赢利. 官方网站:http://www.zabbix.com    1.1 zabbix模式 Zabbix 通过 C/S 模式采集数据,通过 B/S 模式在 web 端展示和配置.      被监控端:主机通过安装 agent 方式采集数据,网络设备通过 SNMP 方式采集数据       Server

CentOS6.7上安装Cacti网络监控系统

Cacti工具是一套开源的基于Web的网络监控和系统监控的图形解决方案.Cacti通过SNMP服务获取数据,并使用RRDtool绘制图形,提供非常直观的数据和用户管理功能.Cacti需要Web.MySQL和PHP的支持.Cacti一般用于监控网络流量.使用率CPU负载.磁盘空间等. Cacti官网:http://www.cacti.net/ 安装Cacti需要安装的软件包:Apache.MySQL.PHP.RRTool.PHP-SNMP.NET-SNMP 一.安装Cacti需要安装的软件包 1.

Docker 监控实战 教你如何监控 Docker 容器内部

如今,越来越多的公司开始使用 Docker 了,现在来给大家看几组数据: 2 / 3 的公司在尝试了 Docker 后最终使用了它 也就是说 Docker 的转化率达到了 67%,而转化市场也控制在 60 天内. 越大型的公司越早开始使用 Docker 研究发现主机数量越多的公司,越早开始使用 Docker.而主机数量多,在这个研究里就默认等同于是大型公司了. Docker 优势 那为什么 Docker 越来越火呢?一谈起 Docker 总是会跟着让人联想到轻量这个词,甚至会有一种通过 Dock

项目实战——企业级Zabbix监控实战(一)

项目实战--企业级Zabbix监控实战 实验一:Zabbix监控的搭建 1.实验准备 centos系统服务器3台. 一台作为监控服务器, 两台台作为被监控节点, 配置好yum源. 防火墙关闭. 各节点时钟服务同步. 各节点之间可以通过主机名互相通信. 1)所有机器关闭防火墙和selinux iptables -F && setenforing 2)根据架构图,实验基本设置如下: 2.Zabbix的安装 1)更新我们的yum仓库 我们去官网下载一个包zabbix-release-3.4-2.

Python接口测试实战5(上) - Git及Jenkins持续集成

如有任何学习问题,可以添加作者微信:lockingfree 课程目录 Python接口测试实战1(上)- 接口测试理论 Python接口测试实战1(下)- 接口测试工具的使用 Python接口测试实战2 - 使用Python发送请求 Python接口测试实战3(上)- Python操作数据库 Python接口测试实战3(下)- unittest测试框架 Python接口测试实战4(上) - 接口测试框架实战 Python接口测试实战4(下) - 框架完善:用例基类,用例标签,重新运行上次失败用例

合nagios+cacti+微信、飞信实现网络监控报警

系统环境:rhel6.3         selinux disabled  和 iptables     整合cacti和nagios是利用了cacti的一个插件nagiosfor cacti,它的原理是将nagios的数据通过ndo2db导入到mysql数据库(cacti的库中),然后cacti读取数据库信息将nagios的结果展示出来. 一.nagios监控本地主机 注释掉localhost.cfg,新增加hosts.cfg,services.cfg [[email protected]