http://netsecurity.51cto.com/art/201809/582862.htm

自提出互联网转型以来,苏宁创新科技零售:以云技术为基础,云服务为产品,为生产商、代理商、零售商提供开放的金融服务、供应链服务和产品品牌推广服务,为个人、家庭、企事业客户提供产品、内容、应用智能解决方案。

在高效地支撑苏宁互联网相关业务的过程中,各系统间的交互也变得如图 1 一样错综复杂,下图中的点代表各个应用系统,连线代表系统间的交互。

图 1:系统交互图

以上错综复杂的特性主要由以下两个原因导致:

  • 系统和服务的复杂性:体系数量庞大:4000+ 系统,10w+ 服务;系统间调用方式复杂:大部分使用 RSF,也有其他的方式,如 HESSIAN,ESB等。
  • 业务的复杂:既有线上新业务又有线下老业务,这些业务系统之间会有大量的关联。

基础环境的复杂性:多数据中心,每个数据中心会划分多个逻辑机房和部署环境;一个系统服务器规模往往会很大,例如,缓存服务器就可能有上千台。

为解决上述复杂性问题和更加有效的支撑整个业务的发展,我们提出了立体式监控解决方案。

所谓立体式监控,是由传统的单点系统监控演化而来,在复用当前监控探针的前提下,由单点发展为对业务全链路的监控。

并根据采集而来的监控数据进行多维度、甚至任意维度的分析,实现多维空间的监控,便于快速预判和定位系统或者业务故障,提升业务支撑效率。

监控体系建设

苏宁监控一体化解决方案旨在为用户提供从系统监控、问题定位、实时告警到决策分析、故障自愈的一站式解决方案。即全力为用户打造从“监”到“控”的全方位一体化 APM/CPM 解决方案。

从移动 App、PC/WAP端、网络端、服务端、调用链各个级别进行应用性能分析。

能够深入到应用、数据库自动捕获应用性能异常,自动识别有问题的应用组件和代码,利用关键业务性能剖析进行故障原因深度分析,非 IT 专家也能够快速定位问题原因所在。

采用新一代的应用监控技术,将企业数据中心基础资源监测数据、用户体验监测数据、应用代码性能分析数据、网络性能数据、系统运行日志等各类异构、海量的 IT 监测数据进行集中收集和处理,融合苏宁大数据能力,构建更加高效、更加智能的 IT 故障分析能力。

立体式监控体系整体架构图如图 2 所示:

图 2:苏宁立体式监控概览

第一个维度

从左到右,是从监控的思路进行构建的:

  • 左边一块为监测产品,主要用来发现问题。
  • 问题发送给智能告警平台和决策分析平台,定位问题根源,反馈给研发团队及时进行处理,以及服务治理系统进行治理。
  • 右边是自动化的干预处理,最后再回到最左的流程中进行监测。

第二个维度

从上到下,从前端到后端。我们现在的监控主要面对的是苏宁一些核心应用,比如苏宁易购手机端、苏宁金融易付宝等等。

这些应用用户数量多、范围广、使用频次高,会不断地反馈应用或服务的问题。

先从用户角度,对用户体验进行监控,一旦发现问题,会立刻针对数据进行溯源,到客户端通过 SDK 或 JS 抓取一些传统标准做法采集数据,再通过多维度分析,将数据问题反馈给研发。

同时我们会对服务端进行性能监控,前面也说服务端的系统相对而言要复杂得多,因此我们往往会想办法串起前后端,做到分钟级甚至秒级调用,所以我们对调用链也进行了监控。

而调用链监控依然是在中间件层面,也可能是基础设置的波动导致了问题的产生,所以在底层对基础设施构建了监控。

第三个维度

从数据层面:

  • 首先是 Metric 指标,这个指标可以是从基础设施而来的,可以是业务层面定义的,也可以来自性能监控,这是评估性能的一个重要指标。
  • 还有一个是 Event 事件,日志监控承载了非常重要的能力,事件帮助系统定位问题。
  • 第三个指标 Trace,来源于调用链。三个指标会产生交集,辅助定位、排查问题。

根据目前监控体系的现状,为了满足日益复杂的监控需求,打造基于 AI 的监控体系,实现面向用户体验的无人化智能服务解决方案目标,我们提出了面向现代监控的体系规划。

详细的规划如图 3 所示:

图 3:面向现代监控的体系规划

在该体系中,通过引入自然语言处理、建立知识图谱和图像识别等 AI 技术,让监控实现无人值守,用户可以更简单便利地与监控系统机器人进行交互,获取所需的监控信息。

在问题分析和决策领域,将通过建立计算模型生成不同维度的指标,实现多维度的关联分析和异常检测,并且动态计算出告警阈值,生成告警事件推送给用户。

监控技术实现

监控产品介绍

立体式监控体系由一系列的监控产品构成,每种监控产品都存在独特的特性,但同时也和其他产品有着相互协调的关联关系,从而形成一个监控生态体系。

监控主要产品如图 4 所示:

图 4:监控体系主要产品及其关系

用户体验监控(UOM)

UOM 是一个可以对用户产品端进行全方位、多种维度进行监控和分析的平台。

通过将监控采集 SDK 无侵入或者较少侵入的植入用户端中,获取用户在使用产品时对用户造成体验影响的调用链异常数据,并基于此进行分析、预测和告知该产品的相关运维人员。

通过采用无侵入和较少侵入的方式,将采集 SDK 植入用户应用,实现对用户应用的系统异常、业务异常、用户信息进行采集。

对异常数据进行建模,形成相应的异常数据趋势图和用户轨迹,实现迅速地对用户应用问题进行定位。

通过态势感知计算模型动态计算异常增长率,根据不同维度的规则配置,实现对应用异常问题进行告警。

UOM 机器人可满足用户在豆芽中,通过自然语言方式直接和机器人交流,实现快速获取问题根本原因。

图 5:UOM 系统技术架构

日志统计分析

离线日志统计分析是运用大数据技术,海量历史日志分析的一种解决方案。专注于帮助使用者发现并解决系统性能问题。

通过分析各类访问日志,得到各系统使用过程中请求量、响应时间、错误率、命中率等性能指标,可以通过分析来源 IP 判断是否遭受攻击等。

图 6:离线分析

实时日志统计分析是一个在 E(Elasticsearch)F(Flume)K(Kibana4)的基础上进行二次开发的平台。

它集成了苏宁内部的账号体系和系统基础数据,实现准实时日志的检索、统计分析。

图 7:实时分析

调用链监控

完全采用 OpenTracing 标准,对系统异常和业务异常进行全链路监控。采用字节码技术实现监控 SDK 植入,对业务系统功能不会造成影响。同时提供及时关闭、自动升级功能,节省人工、降低风险。

并可以应用于各领域应用系统服务和调用链监控,为 IT 研发人员检测系统健康、定位解决问题提供可靠依据。

根据异常栈详情,用户可以直观了解到操作的页面轨迹以及服务端系统的调用链路。

系统利用机器学习分析异常数据并做出预判,提供一站式的预警、排查、告警和问题解决策略。

图 8:调用链监控模块

监控组件介绍

通过之前的介绍,我们了解了很多目前苏宁监控体系中的产品,这些监控产品如何无侵入式的植入各个应用中,如何实现对监控数据的采集,请参考图 9。

图 9:无侵入式数据采集

具体过程如下:

  • 通过字节码拦截请求,创建调用上下文、生成埋点。
  • 调用上下文保存在 ThreadLocal,对应用透明。
  • 调用上下文包含了 TraceId、RpcId、调用类型等数据。
  • 调用上下文随着 Http 调用在网络间传输。

“源头型”:生成 TraceId,创建调用链,结束调用链。

“单项型”:仅客户端,生成日志(服务端未埋点)。

“双向型”:客户端+服务端,传输上下文,生成日志。

根据以上的实现方式,无侵入式监控数据采集的整体调用顺序如图 10 所示:

图 10:监控数据采集时序图

在时序图中,我们可以看到请求发送到前端应用时,将会调用 StartTrace 生成一个全局唯一的 TraceId,TraceId 使用了 IP + Timestamp + 顺序数  + 进程号的方式保证唯一性。

其次通过对 StartRpc 的调用生成相应的 RpcId,它标识着一次请求的顺序和嵌套关系,各个系统间传递,调用关系是同步、异步还是一对多调用。

通过使用 TraceId + RpcId 组合的方式完成整个调用链的异常数据标识和采集。

在监控数据采集过程中,也遇到过相关的难点,但是经过努力,也都一一解决,以下是我归纳的一些早前所遇到的问题和解决方法,可供大家参考。

愿景

未来,苏宁将全面打造 AI 监控生态云平台,对全生态监控体系实现无人值守的监控。

用户可通过多种方式(语音、文本、动作)与机器人进行交互,机器人将给出用户需要的分析数据,并能根据结果数据给出相应的解决方案。

以用户为导向,形成用户行为分析闭环,实现资源智能地分配与回收,让监控改变世界。

转载于:https://www.cnblogs.com/davidwang456/articles/9598830.html

4000+系统,10w+服务的立体式监控是如何炼成的?相关推荐

  1. 使用NAGIOS监控网络、系统及服务

    近两天,受一位之前同事的启发,自已也搞起了nagios学习和研究之旅.还好,凭着google上几位"先人"的先行,以及自己的烂泥式的英语阅读能力.终于还是搞好了些监控项目.下面截图 ...

  2. 视频智能分析系统EasyCVR视频流媒体安防监控云服务实现城市视频智能化应用

    在互联网.物联网.大数据.人工智能引领新经济发展时,智慧城市成了城市发展破冰前行的利刃.而随着经济发展的需求和科学技术的进步,传统的电视监控因其具有不够精确等特点,已被新型的智能视频监控技术逐渐替代. ...

  3. TB级微服务海量日志监控平台

    本文主要介绍怎么使用 ELK Stack 帮助我们打造一个支撑起日产 TB 级的日志监控系统.在企业级的微服务环境中,跑着成百上千个服务都算是比较小的规模了.在生产环境上,日志扮演着很重要的角色,排查 ...

  4. Nagios—服务和性能监控

    Nagios-服务和性能监控 简介: Nagios是一个监视系统运行状态和网络信息的监视系统.Nagios能监视所指定的本地或远程主机以及服务,同时提供异常通知功能等. Nagios可运行在Linux ...

  5. 如何打造一个TB级微服务海量日志监控平台

    前沿技术早知道,弯道超车有希望 积累超车资本,从关注DD开始 来源:性能与架构.图文编辑:xj 本文主要介绍怎么使用 ELK Stack 帮助我们打造一个支撑起日产 TB 级的日志监控系统.在企业级的 ...

  6. 中邮智递通过数加和datav将系统和服务迁移到大数据平台

    云栖号案例库:[点击查看更多上云案例] 不知道怎么上云?看云栖号案例库,了解不同行业不同发展阶段的上云方案,助力你上云决策! 概述 中邮智递数据平台发展到现在经历了四个阶段: (1) 直接在业务生产系 ...

  7. nagios远程系统监测服务

    nagios全部的服务大致可以分为3大种:第一种是"本地系统监测服务",就是监测主机Nagios所在主机对自己本地的一些情况的监测,比如本地磁盘占用情况,本地CPU使用情况等等.第 ...

  8. 客服系统微服务架构的演化

    客服系统微服务架构的演化 微服务要求 服务协作 服务治理 服务治理 1 怀疑第三方 坚持一条信念:"所有第三方服务都不可靠",不管第三方什么天花乱坠的承诺.基于这样的信念,我们需要 ...

  9. golang 系统级服务器,golang 服务器监控

    golang 服务器监控 内容精选 换一换 本节定义了云耀云服务器上报云监控的监控指标的命名空间,监控指标列表,各项监控指标的具体含义与使用说明,用户可以通过云监控检索云耀云服务器服务产生的监控指标和 ...

最新文章

  1. Robolectric
  2. java 类 clone_Java Clone(类的复制)实例代码
  3. 2018 Multi-University Training Contest 7 - Sequence
  4. equipment download scenario3
  5. 浙大计算机学院朱建科,浙江大学计算机科学与技术学院导师介绍:朱建科
  6. 5-1计算机视觉的基本概念
  7. Prompt Learning | 一文带你概览Prompt工作新进展
  8. 实验板FPGA型号在哪里看_【VE】一文看懂乙烯基树脂发展史!
  9. ipython的用法详解
  10. SpringBoot实现163邮箱发送邮件
  11. 乐理基础:五线谱读谱(1)
  12. Python调用HEG批量转换hdf影像为tiff
  13. 实现一个简洁朴素的左侧贴边导航栏html+CSS+javaScript
  14. 机器学习风险评估_5种常见的机器学习安全风险以及如何克服它们
  15. 《kafka面试100例 -6》如果在/admin/delete_topics/中手动写入一个节点会不会正常删除Topic
  16. 小米K20pro刷international版
  17. 单点登录(sso)和cas系统的原理
  18. 项目规划管理 - 2
  19. 安装Windows server 2003系统后无法安装显卡驱动的解决办法 (转载)
  20. 机器学习算法拾遗:(七)隐马尔科夫模型(前向后向算法、鲍姆-韦尔奇算法、维特比算法)

热门文章

  1. c语言编程中句柄无效怎么解决,句柄无效,手把手教你句柄无效怎么解决
  2. linux磁盘分配最佳实践,构建容器应用的8个最佳实践
  3. Linux虚拟内存和进程虚拟地址空间简述
  4. spring第五讲:aop
  5. python函数能否增强代码可读性_总结的几个Python函数方法设计原则
  6. wps定位对话框快捷键_Word、Excel、PPT快捷键汇总
  7. markdown软件_实用软件推荐|Markdown文本编辑器之Typora
  8. ajax查询返回字符串,从CFC返回结果之前,对AJAX查询执行字符串函数
  9. #pragma使用分析
  10. 普中28335开发攻略_TMS320F28335项目开发记录1_CCS的使用介绍