硬核干货——《中小企业 AI 实战指南》免费下载! 了解详情
写点什么

外网质量监控系统实践之路

  • 2020-02-26
  • 本文字数:2470 字

    阅读完需:约 8 分钟

外网质量监控系统实践之路

用户在访问 360 服务器时,会经过运营商链路、各省的机房然后到达 vip,那么在这个链路中任何一个环节出现问题,都会导致用户无法正常上网。如何快速、准确的定位到这个链路中的哪个环节出现了故障?对于运维的人员来说是至关重要的。下来跟随作者一起来探讨下外网质量监控系统在 360 是如何实践的吧。

背景介绍

用户在访问 360 服务器时,会经过运营商链路、各省的机房然后到达 vip,那么在这个链路中任何一个环节出现问题,都会导致用户无法正常上网。如何快速、准确地定位到这个链路中的哪个环节出现了故障?对于运维的人员来说是至关重要的。


假如没有外网质量监控系统,那么我们是如何确定故障的呢。传统的方式是被动式的,当用户反映不能正常上网后,运维人员开始申请账号、登录主机、然后执行 ping、telnet 等命令来查看服务器是否可以正常访问,耗时又耗力,而且还不能准确的定位到具体的故障。比如,某个 vip 不能访问,可以是由于 vip 原因或是机房故障还可能是运营商的原因,而我们手动探测的链路太有限了。外网质量探测系统应运而生。


系统特点

  • 实时性检测(分钟级)。

  • 端到端持续检测(真实反映用户到 vip 的网络访问质量)。

  • 全覆盖监测(覆盖全国三大运营商的各个省份)。

  • 按需下发检测任务(简单灵活的接入方式)。

  • 检测结果主动报警(准确快速地主动告警,确定故障类型及影响范围)。

  • 支持不同视角的可视化展示(cdn 机器到 vip、运营商到 vip、机房到机房的平均延迟、丢包率、最大最小延迟等)。

系统框架

源主机的选择-CDN 机器

要进行外网探测,源主机的选择是我们要解决的第一个问题。那么我们有必要先看一下用户上网的流程是什么样的。如下图所示。



用户通过域名访问某个网址,三级域名系统给用户返回了 ip(vip 的地址)或者 cip(cdn 的 ip 地址),然后用户通过 ip 或者 cip 来访问后端服务器。用户的机器肯定是不能够作为源主机的。从剩下的机器中,我们看出,cdn 节点在这里起到了关键性的作用,我们将 cdn 节点作为源主机,添加故障判断逻辑后,可以准确的判断 vip 故障、机房故障及运营商故障,这也正是我们进行外网监控的目的所在(比如单个运营商所 ping 的所有 vip 中,有一半的 vip 丢包率都大于 50%,那么我们是不是可以认为这个运营商有问题了。所以 cdn 节点作为源节点非常合适)。

系统原理

利用三大运营商部署在各个省份的 cdn 机器来周期性的向 vip 发起 ping 操作。运行流程为:cdn 机器向 vip 发出 ping 包,将结果存储到时序数据库,然后故障判定模块从时序数据库中拿数据,进行分析之后,发出报警。我们的指标,主要是丢包率和平均时延。


系统架构图

整体架构主要分为三层。展示层、数据采集层和数据分析层。展示层:我们支持 grafana 以及自研的 web 系统展示,比如 watchman。数据采集层:我们借助了公司内部成熟的 wonder-agent 和大数据网关来进行数据收集。公司内部有 10 万台 wonder-agent,wonder-agent 在启动时,会判定自己的宿主机是否是我们想要的源,如果是,启动 ping 模块,并从网关那里拉取自己所 ping 的 vip 列表。由于 agent 的宿主机所处的运营商不同,我们会将不同运营商的 agent 划分到相应运营商的 lvs 下,这样就会避免 wonder-agent 上报数据超时的问题,也解决了断点问题。数据存储好之后,我们来看数据分析和报警层,数据分析模块,会从 influxdb-ha 来拉取时序数据,每分钟拉取一次,然后进行故障判断,生成报警。


任务下发

Center 网关生成每个 CDN 机器所 ping 的 vip 列表。通过对所有 vip 进行分片,保证同一个机房下的不同 cdn 服务器所 ping 的 vip 列表没有交集,并且同一机房下的 cdn 所 ping 的 vip 列表的并集为全部的 vip。然后,agent 主动从 center 网关拉取 vip 列表,同步周期为 1 小时。


优点:


  • 避免了 ping 风暴,减小了 vip 的负载。

  • 减小了 agent 采集数据的压力。

agent 数据采集

agent 通过执行 ping 功能来周期性的获取每个 vip 的存活状态,并上报给网关,其执行流程如下图所示。


存储

数据的存储主要分为了四类,如下所示。


1、Influxdb 时序数据库。存储实时的探测指标数据(平均延迟、最大最小延迟、成功率等)。


2、Mongo 存储故障数据(聚合)运营商故障、vip 故障、机房故障)。


3、Mysql 存储加白数据(vip 加白)。


4、元数据存储,内存存储(机房-vip、省份-vip 等映射关系等)。

报警策略

故障策略

故障的判断方式一共分为三种,如下所示。


1.vip 故障


1 个或者大于 1 个运营商一半以上的省份丢包率大于 50%报警(针对 lato 机房国内全部省份到 lato 都丢包 100%报警)。


2.机房故障


大于等于 2 个运营商、或者大于 10 个 vip 小于等于三分之一的 vip 丢包率大于 50%:怀疑机房故障大于等于 2 个运营商、或者大于等于二分之一的 vip 丢包率大于 50%;判断为机房故障。


3.运营商故障


单个运营商大于等于三分之一的省份、或者大于等于三分之一的 vip 丢包率大于 50%:怀疑(电信运营商)故障。单个运营商大于等于二分之一的省份、或者大于等于二分之一的 vip 丢包率大于 50%;判断为(电信运营商)故障。

数据分析与告警

1.平滑过滤掉毛刺数据。



其中,a1-a5 都是由 vip 组成的 vip 列表,通过求 a1-a5 的并集,将得到的结果(即去掉毛刺的数据)作为最终判断故障的元数据。


2.根据故障策略以及元数据对数据进行故障判定。


3.根据业务聚合,生成不同的故障报警内容。


4.提供业务名称或者部门 id 发送对应的报警内容。


5.不关注的报警,业务可以选择加白。

可视化

cdn 机器到目的 vip 的平均延迟、最大、最小延迟以及丢包率。



全国各省市到各个运营商机房的平均延迟。



vip 加白。



报警内容。


系统规划

在提供安全可靠报警的同时,未来努力的方向。


提供按需检测任务接口,主动下发,目前只支持被动获取(这样的话如果加 vip 列表,只有等到定时触发,不能很及时的进行探测)。


支持多种探测方式。包括 tcp ping、icmp ping 和 http ping。


添加异常检测机器学习算法(平均延迟更智能)。


接入 stackstrom 自动切换 vip。


对七层 URL 实现访问延迟和状态的监控。


本文转载自 360 云计算公众号。


原文链接:https://mp.weixin.qq.com/s/CIi9k2soHuLhwnkqnMtPdg


2020-02-26 23:571537

评论

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

STM32+ULN2003驱动28BYJ4步进电机(根据圈数正转、反转)

DS小龙哥

8月月更

全国独家 | 上海线下面授大规模敏捷LeSS认证 | 2022年12月8-10日

ShineScrum

less 大规模敏捷 LeSS认证 大规模敏捷LeSS

手写柯里化 - toString 理解

掘金安东尼

JavaScript 前端 函数式 8月月更

语音社交软件开发——充分发挥其价值

开源直播系统源码

软件开发 直播系统源码 语音聊天

JS逆向入门学习之回收商网,手机号码简易加密解析

梦想橡皮擦

Python 爬虫 8月月更

深入理解 Istio 流量管理的超时时间设置

万猫学社

云原生 istio envoy Istio流量管理

秘乐短视频挖矿系统开发详情

开发微hkkf5566

硅谷来信:快速行动,Facebook、Quora等成功的“神器”!

博文视点Broadview

长达四年的减肥记录

Amazing_eve

#开源

IO流篇 -- 基于io流实现文件夹拷贝(拷贝子文件夹及子文件夹内文件)满满的干货

Bug终结者

Java static 8月月更

2000多字教你三招在Linux中找出大文件,最后一个命令简直太简单了!

wljslmz

Linux 签约计划第三季 8月月更

Go编译原理系列6(类型检查)

书旅

Go 源码 后端

导火索:OAuth 2.0四种授权登录方式必读

知识浅谈

8月月更

牛刀小试基本语法,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang基本语法和变量的使用EP02

刘悦的技术博客

golang 语言 语言 & 开发 教程分享 #go

即刻报名|Apache Kylin X Apache DolphinScheduler:大数据底座的构建和展望

Kyligence

数字化转型 数字分析 数据调度

开源一夏|OpenHarmony如何查询设备类型(eTS)

坚果

开源 HarmonyOS OpenHarmony 8月月更

电竞、便捷、高效、安全,盘点OriginOS功能的关键词

极客天地

入门 Polkadot 平行链开发,看这一篇就够了

One Block Community

区块链

HDD杭州站•ArkUI让开发更灵活

HarmonyOS开发者

HarmonyOS

企业的数字化转型到底是否可以买来?

雨果

数字化转型

数据中台建设(十):数据安全管理

Lansonli

大数据 数据中台 8月月更

【LeetCode】最大层内元素和Java题解

Albert

LeetCode 8月月更

mysql进阶(二十七)数据库索引原理

No Silver Bullet

MySQL 聚集索引 8月月更 非聚集索引 覆盖索引

创建一个 Dapp,为什么要选择波卡?

One Block Community

区块链

RT-Thread记录(一、RT-Thread 版本、RT-Thread Studio开发环境 及 配合CubeMX开发快速上手)

矜辰所致

RT-Thread 8月月更

双因子与多因子身份验证有什么区别?

SEAL安全

身份验证

面试点:Java 中 hashCode() 和 equals() 的关系

TimeFriends

8月月更

告白数字化转型时代:麦聪软件以最简单的方式让企业把数据用起来

雨果

数字化转型

外网质量监控系统实践之路_文化 & 方法_360云计算_InfoQ精选文章