写点什么

京东云监控系统设计及落地之路

颜志杰

  • 2019-11-07
  • 本文字数:4413 字

    阅读完需:约 14 分钟

京东云监控系统设计及落地之路

监控是运维的生命线,监控系统的目标是通过快速发现问题、定位问题、解决问题来达到缩短异常出现的 MTTR,在这方面,京东云定义了一套统一的监控标准:即监控需要覆盖基础 - 存活 - 性能 - 业务四个层面,从而保证采集数据的全面,进而避免监控遗漏。


谈运维为什么离不开监控?典型监控系统一般是如何设计的?业务驱动的高可用监控系统又有何不同?作为巨头之一的电商平台京东, 其基于京东云的监控系统是否有值得借鉴的地方?本文将解答这些问题。本文整理自 10 月 30 日由京东云开发者社区和英特尔联合举办的在线公开课,京东云工具产品研发部专家架构师颜志杰的在线课程演讲——业务驱动监控系统设计与落地。

为什么需要做监控

世上没有百分百可靠的系统,程序、机器、网络都可能在运行中出现问题,进而导致服务异常, 带来金钱及品牌的损失,所以监控目标就是降低损失,通过发现、定位、解决问题,期望缩短异常出现的 MTTR (平均修复时间)。


要达到这个目标,监控对象必须具备可观测性,即通过数据描述是否出现异常,这些数据包括指标监控 Metric、日志 log 和 Trace 数据。


为了实现缩短 MTTR 的目标,监控系统应该具有这些能力:


1、数据采集能力,获取可观测的数据


2、数据能够方便加工,比如把相关的数据汇聚起来,得到我们需要关注的数据


3、对这些关注的数据,做异常检测,及时产生告警


4、收到告警后,通过 Dashbord 查图定位,最好有专家推荐,加速定位


5、定位问题后,通过预案平台进行快速止损


6、整个监控系统需要做到高可用,监控就是为了发现异常,如果由于异常导致自身不可用,肯定是减分的

从功能模块来分解监控系统


“典型监控系统从功能模块分为采集、计算、存储、告警、算法、业务端等。”


从下往上来看,首先是抽象层,包含 CMDB(配置管理数据库),抽象了我们对监控对象的定义,比如定义了应用、机器、域名、网络等,比如确定监控系统里面机器到底是用 IP 还是 Hostname。采集层包含众多采集手段,包括机器、容器、进程、日志、端口等,可以通过 Agent 数据传输,或者外部探测点定期拉取,也可以用户直接通过 API 推送进行数据采集。


数据采集后,分为三条数据流处理:计算、存储、告警,计算即进行数据加工,如聚合计算把 10 台 Nginx 的 PV 累加起来;数据存储便于 Dashbord 能够查看;报警通路进行异常检测,快速发出报警。上层计算平台基于智能算法对异常或者故障的根因进行分析,进行根因推荐,输出专家辅助定位。最终到达用户层,提供用户常见的监控功能点:监控配置维护、告警处理、预案管理等。

从数据的视角来分解监控系统


“从数据视角去理解,监控系统就是一个数据处理系统,便于我们简化系统设计以及更好理解监控系统。”


从数据的视角来分解监控系统,同样分为四层,上图尝试用不同颜色、形状的图形去说明采集、计算、存储、告警等模块在数据视角的功能。打比方说:数据抽象层,即把监控数据被抽象成是各种形状、各种颜色的模块,数据采集就是标准化过程,把各种形状颜色的数据用统一的方式表示,比如上图用一个云的形状把各种图形框起来;聚合计算就是对同一标签的数据做聚合处理,比如上图按照颜色来聚合,存储流把相同的形状颜色顺序摆好,告警则是挑选出有红色框的数据(上图表示异常数据点)。所以,无论是采集、聚合、存储、告警还是查看 Dashbord,本质上都是对数据的一些处理、变换操作。


举个例子,用户 Dashbord 筛选耗时 >2s 的曲线、和告警模块筛选出 >2s 告警,对应数据视角是一致的,都是做一些数据计算过滤等。所以,如果我们把数据的通用处理,过滤转换、运算表示为统一通用能力,用 F(x) 表示,那么在设计监控的时候,把这些通用能力封装成 .lib 可以应用到各个模块中,不但能够实现很强的能力复用,还能简化系统设计。站在数据的视角上,将监控系统理解为一个数据处理系统,会有助于更好的理解监控系统。


那么从数据视角分析监控系统,还需要优先考虑以下这几个部分:


1、数据模型先行,不同模型代表着不同的数据描述及处理能力,进而会对监控产品的形态产生影响


以一个 Http 的 2xx 的请求 PV 为例,用单值模型描述,即通过“监控项名字 + 取值”来描述,这种体验就跟如下左图一样:去地摊买东西,不同数据平铺开来,关联比较弱;用多维度单值模型,引入了标签的概念,比如这里面的 code:200,通过“名字 + 标签”组合去描述,如中间图:去超市货架买东西,同种商品公用一个饮料标签,如上层是可乐标签,通过标签可以快速找到相关性的众多商品;而多维度多值模型,如右图:一次性就能够把你想吃的东西都拿到,同样还能得到一些有趣的数据,如商家可以知道喜欢吃番茄口味薯片的人对铜锣烧的需求爱好是什么。类比到监控领域,PV 和耗时放到一块,然后一块进行存储,这样我们可以方便获取到耗时大于两秒的那些 PV 是多少,因为他们是存储在一起的。所以先清楚监控系统的数据模型,对于理解监控系统很重要。



2、监控采集就是数据标准化的过程


如果是用 Agent 数据传输的方式,首先要考虑就是 Agent 稳定性,也就是资源消耗的问题。从 CPU、内存、磁盘等都需要做一些限制,保证 Agent 有确定性最大资源消耗。


3、监控数据存储具有读写正交、meta 的灵活查询需求,基本上会采用列式存储 + 倒排 +Gorilla 的方案选型


为了满足读写正交要求,业界一般采用列式存储作为主存,如 Hbase、Cassandra,满足监控查询按照标签做灵活检索,一般采用倒排存储 meta 数据,这样可以实现类似百度通过标签筛选指标,监控数据有最新值查询的需求,所以采用基于 Gorilla 的缓存。所以京东云的 TSDB 选型方案为 Es+Cassandra+Gorilla。


4、聚合计算就是对数据进行范围圈定,进行算子处理


数据另外一条流加工常见的是聚合计算,比如有 3 台 Nginx 程序,部署在 H1、H2、H3 机器上,需要把这三台机器的 PV 加起来,这个就是聚合计算,而需要把 PV 在 httpCode=2xx、3xx 进行展开,则称为多维度聚合计算。


要实现这个目标,从数据视角看,首先需要做范围圈定,也就是 H1、H2、H3 为什么是在一起计算?这就需要通过标签进行关联。范围圈定后进行数据的算子处理,比如常见的 sum、min、max、avg 运算,数据量级不大的情况下,可以让存储模块完成,但当数据量级较大,一般会发送给流式计算平台。京东云选择是用 Spark Streaming 来计算,为了保证稳定性,京东云设计了对流式计算的调度能力,分机房部署了 Spark 计算集群,通过一个 map,指定调度,比如把 Nginx 应用放到 SparkA 进行计算,MySQL 应用放到 SparkB 进行计算,这样,当某个 Spark 出现问题,也能快速做调度止损,定位恢复另一个集群。对于重型开源系统,设计实现的时候,可以考虑在前面加一层 Proxy,将开源细节封装起来,这样当出现异常时,会有较强的掌控能力。


5、报警通路做好“质检员”工作,同时完成通知用户这件事情


告警通路的作用其实是质检,通过抓取数据做检查,发现问题就及时报警。从数据视角来看,报警通路作用归纳到两类,一是时序数据处理,可以依据基于经验的算法,比如简单阈值、同环比等,如果这些方法解决不了,就尝试基于统计的机器学习算法。二是为了让通知更加有效,京东云目前的思路是事件的标签化,支持对告警事件进行合并,比如:用户通过标定告警级别,选择不同的告警方式和时效性,按照环境合并告警。

京东云的监控标准设计

“监控需要覆盖基础 - 存活 - 性能 - 业务四个层面,从而保证采集数据的全面,进而避免监控遗漏。”



在京东云监控标准设计上,基础监控这一层主要解决机器、网络层面的问题,包括 CPU 、内存、机器死机等问题。存活监控层主要解决程序部署到机器上后是否存活的问题,比如进程退出、端口不工作等问题。应用性能监控层解决程序异常定界的问题,重点关注 Google 提出的四大黄金指标 PV、平响,错误、容量。最上层业务监控,模拟用户进行访问,解决服务在用户侧的表现是什么。


那么如何按照监控标准去指导监控产品的落地呢?看京东云如何从发现问题、定位问题和解决问题三个方面来减少 MTTR:


在发现问题阶段,分别面向管理者和运维人员设置监控系统的打分机制及推荐系统,给予管理者一个直观的总分和每个维度的细分得分,使得管理人员对整体监控有个量化的指标,另一方面,对于运维人员,则提供配置推荐、一键启用,可以快速地根据标准去完善监控,达到监控变‘全’。


在定位问题阶段京东云推进了变更可视化项目,将上线、配置更改、第三方的变更事件,都接入到变更事件中,用户可以根据时间去查询时间段的变更,跟报警做关联,京东云也会根据一些相关性的算法推荐,将变更推荐给用户,加速问题定位过程。


处理问题阶段京东云可提供预案平台,对预案进行标准化分类,指导用户管理预案。

京东云落地实践:以监控告警收敛项目为例

在监控告警上,运维人员往往在提升告警手段上做了很多工作,比如说通过发邮件的形式到短信、电话的形式等,京东云每月短信发送量 200w+、电话告警每月 4000+,但是运维人员并没有感受到有这么多问题,这就说明告警关注度是下降的,所以告警收敛势在必行,目标就是让告警关注度提升,那如何落地呢?


这就需要首先数据量化,先统计各个渠道的告警总数,然后分两步走,对于产品线负责人,需要让产品线的负责人知道自己部门的情况,另一路出分析数据,拆解产品线发送多的原因,给运维同学提供数据指导,分析各种有可能导致发送告警多的原因,如:一条短信平均接收人、哪些告警规则发送较多等。


基于这些统计数据,监控团队去成立告警收敛项目:在面对接收人过多的情况(一个短信原来需要 10 几个人接收),京东云推出值班表计划,在产品设计上保证告警规则设置的合理性,对于一些大规模触发情况,比如网络故障,京东云默认会按照规则、应用进行合并,同时为了在合并之后让用户能看的更清楚,京东云也推出了移动端程序。


面向未来,颜志杰老师说:“数据处理原来基于规则和经验解决了不少问题,后续疑难杂症会慢慢尝试基于统计和大数据的机器学习,因为效果更明显。在数据收集方面,由于云原生的兴起,常见的可观测数据将会变得更加标准化,而对于一些非结构化的,比如日志,会有机器学习的算法去帮助语义理解标准化。在数据处理层面,对于单数据的处理,我们去判断比如一条曲线的动态阈值是什么样子,很多公司已有不少实践,未来多数据之间的联动处理,会更加有意义,比如一个域名告警了,如果同一时刻其他部门域名大规模告警,那么平台或者网络的可能性较大,否则应该是自身的原因较大,越来越多用大数据的思想分析多指标数据将会更加普遍。同时数据处理方面,Trace、log、Metric 之间的关联将会越来越智能,准确,最后数据驱动整体闭环,未来,监控将会在数据的大道上,通向 AI 化,智能化。”


通过学习本篇监控系统课程,我们了解了如何从数据角度去看监控系统,及京东云监控系统落地实践。京东云监控具有实时展现监控数据变化及迅速报警等优势,能够满足日常业务监控管理和处理异常等场景,目前京东云监控提供免费服务,点击链接,了解更多关于京东云监控的内容。


2019-11-07 15:384465

评论

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

Goldie App for Mac(黄金比例设计软件) v2.2永久激活版

mac

苹果mac Windows软件 Goldie App 黄金比例工具

办公软件定制开发在企业发展中的优势

Geek_16d138

APP软件开发 软件定制

Parallels Desktop 19完美激活秘钥

iMac小白

综合清理优化工具:MacCleaner 3 Pro 激活中文版

mac大玩家j

Mac软件 清理工具 清理优化软件

《社交泛娱乐出海作战地图》加印领取啦!

融云 RongCloud

地图 社交 泛娱乐 出海 一图流

Python subprocess模块的高级玩法

秃头小帅oi

Python 程序员 低代码 subprocess 前沿

借助工具落地提高外包软件项目代码提交规范

知者如C

HTTPS的安全问题及应对方案

EquatorCoco

网络安全 https 安全

Aseprite for mac(像素动画制作工具)

展初云

Mac 2D像素风格动画制作软件 Aseprite

打破障碍:克服数字化应用挑战的策略

互联网工科生

数字化

什么是工业元宇宙?如何利用版本控制来应对工业元宇宙的挑战?

龙智—DevSecOps解决方案

元宇宙

ASP.NET Core Web API设置响应输出的Json数据格式的两种方式

EquatorCoco

json 前端 ASP.NET Core .NET 7

云小课|HSS教您如何应对LockBit勒索事件

华为云开发者联盟

云计算 后端 华为云 主机安全 华为云开发者联盟

Mac安装Windows应用的工具CrossOver 23.7

展初云

集群 CPU 利用率均值达 45% ,揭秘小红书规模化混部技术实践

小红书技术REDtech

cpu #云原生

Things3 for Mac(日程和任务管理工具) 3.19.3激活破解版

mac

任务管理工具 苹果mac Windows软件 Things 3

VPS服务器搭建指南:快速、简单、高效的秘诀大揭秘

一只扑棱蛾子

VPS VPS服务器

电脑兼容性会被PC端小程序引擎颠覆吗?

Geek_2305a8

Vue 实现低代码开发平台,没想到这么好用!

伤感汤姆布利柏

使用OSS搭建私有云内网yum仓库的方法

EquatorCoco

云原生 数据 OSS 仓库

【专业测试工具推荐】优化测试流程,高效完成测试工作!

Liam

程序员 测试 自动化测试 接口测试 测试工具

企业如何选择安全又快速的大文件传输平台

镭速

大文件传输 大文件传输平台

优雅实现API接口开关:让你的应用更可控

树上有只程序猿

spring-boot API接口

99%的人不知道的Docker干货

伤感汤姆布利柏

Docker 程序员 低代码 干货

Tableau Desktop 2019 for Mac(最好用的数据分析工具)激活版下载

iMac小白

Mac综合优化清理软件MacCleaner 3 Pro

展初云

Mac 清理优化 MacCleaner Pro

上海数交所与合合信息发布产业数据行业创新中心,政产学研合力为“数据航母”加速

合合技术团队

合合信息 上海数交所 产业数据行业创新中心 2023全球数商大会

应用容器化转型系列-容器部署进阶

品高云计算

产学研合作新篇章:东南大学OpenHarmony技术俱乐部成立,专家进校园共谋发展

科技热闻

京东云监控系统设计及落地之路_安全_InfoQ精选文章