突破传统监测模式:业务状态监控HM的新思路 | 京东云技术团队

一、传统监控系统的盲区,如何打造业务状态监控。

在系统架构设计中非常重要的一环是要做数据监控和数据最终一致性,关于一致性的补偿,已经由算法部的大佬总结过就不再赘述。这里主要讲如何去补偿?补偿的方案哪些?这就引出来数据监控系统了。有小伙伴会问了,为什么业务状态监控系统可以做补偿?别急,往下看。

传统监控系统分为两种,系统监控和业务监控。系统监控有并发量监控、异常监控、调用链监控、端口监控、zabbix 监控、http监控等。业务监控是指用以监控业务数据是否正常,用户需要进行业务埋点进行数据采集。业务监控底层常规依赖日志上报系统,接入业务监控之前先申请接入日志上报系统。如图1

(图1)

从业务监控时序图中看到一般分为五步:

  1. 数据埋点,业务端埋点后上报的日志,也可以是mysql。日志文件最后通过flume或者bin log上报。

  2. 数据收集,通常都通过kafka做数据采集。

  3. 数据清洗,一般都是在ods层用spark-streaming进行分流,清洗。

  4. 数据存储,数据分流后会存储到dw层,最后落到各种库里面。

  5. 数据展示,开源的很多,用的多还是grafana,还有数据大屏等。

看到这里大家有没有感觉到一丝困惑?有没有感觉跟链路追踪傻傻分不清楚?业务监控和链路追踪的区别就成了侵入式埋点上报和无侵入式agent抓取上报。这仿佛没了灵魂,于是我去问了下AI,AI给出的答案是“业务监控则是一种用于监测业务指标和关键业务流程的技术,目的在于实现对业务运营状况的实时了解和快速响应”。

二、新型业务监控,hunter-monitor的诞生。

站在巨人的肩膀上开始俯视全局,发现真实的需求:

  1. 报警能力,围绕业务,运营场景。设置各种预警的阈值。达到阈值后要及时发出响应。

  2. 数据计算和数据统计能力,根据埋点计算整条链路上,每个节点的异常数据。帮做统计和输出。

  3. 触达能力,内部聊天工具,邮件,必要时电话,短信,微信都要跟上。

  4. 数据归档能力,数据归档是为了兜底,做最终一致性。是为了异常时做数据比对。

  5. 数据自理能力,在AI时代,必须要有自动消化处理的能力。

  6. 报警规则能力,“树”的应用,要把整个系统链路串联起来的能力。

我们是京东保险平台研发部,承接商城的端延保订单的流量。流量全是交易数据。交易数据是不允许丢失。因此我们孕育出自己的业务监控系统“监控猎手 (hunter-monitor)” 简称hm。hm已经实现了以上6种能力。在出现问题时,会第一时间通知业务和产品。还提供了异常数据统计、节点数据计算、回溯、补偿等能力。业务或产研发需要时,可以在平台上做数据对比。还具备了延展能力,如可以对接jsf接口。来实现自动补偿能力。

hm业务状态监控的核心能力是:数据串联和数据计算。是可以把业务整条链路在系统中的埋点,已线性串联起来。并展示出每个节点的异常状态数据。最终消化掉异常数据。

三、三连问:谁适合接入?如何使用?有接入的实例么?

1、谁适合接入

接入保险SaaS工作台的系统都可以接入业务状态监控。没介入的呢?只需要在保险SaaS工作台中,创建租户便可以使用hm业务状态监控。

2、如何使用

2.1 监控接入

接入hm只要简单的三步即可**,创建规则,创建报警规则,业务接入埋点。**创建方式和常规的业务监控系统一样。

2.2 数据处理

异常数据最终需要处理掉。在监控列表中可以一键处理异常数据

2.3 定制化

我们支持**触达内容定制化,异常数据处理方式定制化,异常数据统计定制化。**可以调用业务系统jsf接口完成自动处理,也可以根据需求出异常数据报告,更可以深度帮助业务方定制系统链路中的异常处理。hm已应用到延保交易全链路系统,履约平台,业财一体平台和保险abTest等系统。我们来看几个延保业务的接入的场景。

3、实战!延保业务接入场景

3.1 大屏展示:

每周都会公示出上一周延保业务出现的问题,并通过内部通讯工具和邮件发送给业务方负责人,支持异常投保单的下载。业务收到邮件后会按照邮件中的攻略去操作,完成正确的投保。截止目前帮助业务侧完成40万+的异常投保单的重新投保。帮助业务降低了客诉率,也帮助保司拿到保费。(图2)

(图2)

3.2 自动补单:

延保的业务上游大多来自商城,业务会在系统里处理订单分发到下游,由于量大,操作门槛高,总会出现异常的情况,比如漏配某个参数,导致交易失败或者用户不能正常履约。以前都是到客户履约的时候或者下游交易发起结算失败时,才能发现的问题。在hm中配置了监控后,发现异常情况会调用补单的jsf接口,触发自动补单。以前出现问题最长要已天为单位才能解决,现在分钟级解决问题。起到了降本增效的效果。

3.3 数据归档:

hm给延保上游和下游交易提供数据了永久归档能力,如发现各种异常类的情况,可以从hm系统里面导出数据来作数据比对。如果是金额类的还可以自动接入到对账系统。在线上查看对账结果,导出对账差异数据(图3)。同时会发送异常数据邮件,通知对应的产品和业务(图4)。

(图3)

(图4)

四、HM的内核,技术架构和实现方案

如果实在是没办法接入,只能自研怎么办?没关系,我把技术方法列出来。给大家提供解决方案的思路。

1.技术架构

hm架构上化繁为简,单刀直入。从最核心的业务数据下手,在业务应用中埋点,通过树型节点nodeId串起整条链路。埋点数据统一进数仓清洗后。由调度中心定时触发去做数据计算和数据统计,展示到前端。我们先来看一张架构图。图5

(图5)

2.核心技术

2.1 规则引擎

规则引擎是指埋点的规则。规则引擎参考了Jaeger源码,用来生成我们的规则编码nodeId。(图6)构建成hm的规则树。最终缓存到工作业务台展示(图7)。

(图6)

(图7)

2.2 报警引擎

报警引擎是指配置报警的一系列的规则,数据计算的规则,触达的方式。创建好规则后,要对每一个规则进行详细的报警配置,包括触发报警的类型,报警规则,操作阈值,处理方式等。(图8)报警类型指触达方式,继承了保险SaaS-msg的能力,支持邮件、内部聊天工具、微信、电话等触达方式。任务系统使用Easy-Job来动态管理任务。处理方式可以对接业务方Jsf 来完成闭环,也可以设置成归档,以便后续的有导出或对数的需求。

(图8)

2.3 数据埋点

在保险工作台配置好埋点规则和报警规则后,就可以在业务方去埋点,区别于链路追踪或传统的基于Agent系统,它们都是无侵入埋点系统。hm则属于强侵入式埋点系统,在这里我们定制了一套埋点规范,“必须启用异步线程,进行发送MQ或者调用API接口”。埋点支持两种方式,一种是send msg to topic,mq支持jmq2/jmq4。另一种就是通过调用API去初始化hunter-expoxt的实体类。由hm来发送消息。

2.4 数据清洗

hm的主要职责在业务数据的归纳、分拣。除了埋点接入外还支持,mq、数据库等数据源的接入。所有的数据统一有集团的DP(DataPilot )平台的DataBus系统的DTS完成,统一进数仓的FDM/BDM层。再由集团的调度中心Buffalo(EMR),配置的spark任务执行数据分拣。最终数据进入doris/hive/es中存储。

2.5 数据计算

hm只记录异常数据,发力在异常数据的统计和计算上。在配置好规则节点和系统埋点后,hm会去计算每个节点的异常数据。根据报警规则来进行处理,或通知业务和产研,或调用业务系统的jsf接口去做异常数据的自动处理,又或者根据规则自行处理数据。

2.6 数据统计

hm每周会出数据统计报表发送给业务和产研。报表中会体现他负责的业务线下所有系统的异常数据,包括处理过的异常数据和未处理的异常数据,A业务线和B业务线异常对比数据,业务系统与业务系统的异常对比数据等。可以根据业务需求定制报表。帮助业务和产研更好掌握系统的最新状况。

2.7 任务中心

任务中心是指xxljob任务指调度中心,它和报警规则强绑定的。调度任务分为两类,一类是业务类任务,是动态去创建的任务,按照设置的corn执行。另一类是平台任务。用于维护业务类任务的,比如定期去删除没有异常的任务等。(图9)

(图9)

2.8 触达展示

触达方式支持了保险工作台、内部聊天工具、邮件、企业微信、电话语音等。根据业务方需求来选择。

2.9 处理方式

如果触达3次还没有做异常的处理数据,会进行自动升级,在下次触达时会抄给本部门的上一级。异常数据需要在hm列表页里做数据状态变更。

2.10 开源能力:jaeger

hm底层参考了jaeger-core,重写了jaegerSpan和jaegerTracer类。并把jaeger-core和opentracing-api重新打包-形成自己的jar(hunter-api)

五、总结

以上是hm的全部技术细节。hm灵魂是数据计算、治理、数据统计。hm根基是集成百家之长。是我们平台研发部自研的一款面向业务的,异常监控处理的解决方案,汇集了团队每位伙伴的智慧。

作者:京东保险 管顺利

来源:京东云开发者社区

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/20989.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TCP/IP协议

TCP/IP 是一类协议系统,它是用于网络通信的一套协议集合 物理层 所谓的物理层,是指光纤、电缆或者电磁波等真实存在的物理媒介。这些媒介可以传送物理信号,比如亮度、电压或者振幅。对于数字应用来说,我们只需要两种物理信号来分别…

leetcode 435. 无重叠区间

2023.8.3 本题和引爆气球 这题非常类似&#xff0c;利用同样的思路可以解决&#xff0c;代码如下&#xff1a; class Solution { public:static bool cmp(vector<int>& a , vector<int>& b){if(a[0] b[0]) return a[1] < b[1];return a[0] < b[0];…

SpringBoot复习:(16)TomcatStarter

直接在idea里运行SpringBoot程序时&#xff0c;内嵌的tomcat容器会调用TomcatStarter这个类的onStartup方法。TomcatStarter继承自ServletContainerInitializer 其onStartup方法会调用ServletContextInitializer&#xff08;不是ServletContainerInitializer)的onStartup方法.…

Unity 引擎做残影效果——3、顶点偏移方式

Unity实现残影效果 大家好&#xff0c;我是阿赵。 继续讲Unity引擎的残影做法。这次的残影效果和之前两种不太一样&#xff0c;是通过顶点偏移来实现的。 具体的效果是这样&#xff1a; 与其说是残影&#xff0c;这种效果更像是移动速度很快时造成的速度线&#xff0c;所以在移…

关于前后端分离

关于前后端分离 接下来&#xff0c;你将进入 前后端分离项目开发 模块。 这也是企业中比较常见的开发模式。 疑问&#xff1a; 什么是前后端分离&#xff1f;与之前的开发模式有什么区别&#xff1f;企业为什么要用前后端分离&#xff1f; 1. 什么是前后端分离&#xff1f;…

基于人工智能的状态监测帮助结束冷却塔的维护“噩梦”

冷却塔是将水蒸气冷却成较低温的水、将系统的废热排到大气层的排热装置&#xff0c;在工业生产中扮演着不可或缺的关键角色。大型工业冷却塔的主要用途是用来冷却在水冷系统中的循环水。这些水冷系统广泛应用于发电厂、炼油厂、石化厂、天然气制造厂、食品加工厂、半导体厂等工…

ARP断网攻击及防御

ARP断网攻击及防御 攻击防御 攻击 PC1的IP地址 10.9.136.222 PC2的IP地址 10.9.136.55在局域网里通信 需要有IP地址和MAC地址 两台电脑PC1和PC2要想相互通信&#xff0c;PC1在连接PC2的时候&#xff0c;PC1会先查看自己的ARP缓存表&#xff08;命令&#xff1a;arp -a &#xf…

校园跑腿小程序运营攻略

作为一名校园跑腿小程序的运营者&#xff0c;你可能会面临诸如用户获取、平台推广、服务质量保证等挑战。在本篇推文中&#xff0c;我将为你提供一些关键的运营策略&#xff0c;帮助你成功运营校园跑腿小程序。 1. 用户获取和留存 用户是校园跑腿小程序成功的关键。以下是一些…

C++如何用OpenCV中实现图像的边缘检测和轮廓提取?

最近有个项目需要做细孔定位和孔距测量&#xff0c;需要做边缘检测和轮廓提取&#xff0c;先看初步效果图&#xff1a; 主要实现代码&#xff1a; int MainWindow::Test() {// 2.9 单个像素长度um 5倍double dbUnit 2.9/(1000*5);// 定义显示窗口namedWindow("src"…

VR实景导航——开启3D可视化实景导航新体验

数字化时代&#xff0c;我们大家出门在外都是离不开各种导航软件&#xff0c;人们对导航的需求也越来越高&#xff0c;而传统的导航软件由于精度不够&#xff0c;无法满足人们对真实场景的需求&#xff0c;这个时候就需要VR实景导航为我们实景指引目的地的所在。 VR实景导航以其…

跨境多商户中日韩英多语言商城搭建(PC+小程序+H5),搭建方案

随着全球化的推进&#xff0c;跨境电商正变得越来越普遍。在本文中&#xff0c;我们将介绍跨境电商系统开发中多语言商城独立站的部署搭建方案。 准备工作 在开始部署搭建之前&#xff0c;需要准备以下环境&#xff1a; 服务器&#xff0c;确保服务器具备足够的性能和稳定性。 …

RF手机天线仿真介绍(一):金属边框天线和LDS天线

目录 简介LDS天线LDS天线仿真 金属边框天线金属边框天线仿真 简介 最早的手机是外置式天线&#xff0c;从NOKIA开始采用内置式天线&#xff0c;开始采用内置金属片&#xff08;一般是0.1MM厚的不锈钢片冲压而成&#xff09;&#xff0c;随后为降低成本&#xff0c;后来改用FPC…

powershell脚本写一个托盘图标

1、准备ico格式图标 star_bethlehem_icon 文件名改为star.ico 2、安装VSCode 如何下载安装VSCode 扩展&#xff1a;PowerShell扩展 3、创建项目 1、运行PowerShell命令 mkdir trayicon_ps1;cd trayicon_ps1;New-Item trayicon.ps1;code .2、将star.ico放入trayicon_ps1文…

DDS中间件设计

OpenDDS、FastDDS数据分发服务中间件设计 软件架构 应用层DDS层RTPS层传输层 软件层次 FastDDS整体架构如下&#xff0c;这里可以看到DDS和RTPS的关系。另外缺少一部分IDL&#xff08;统一描述语言&#xff09;&#xff0c;其应该是Pub、Sub的反序列化、序列化工具。 在RT…

Ubuntu安装harbor(http模式)并随便上传一个

Ubuntu安装harbor&#xff08;http模式&#xff09; docker和harbor的介绍就免了&#xff0c;都不知道啥东西&#xff0c;还安装搞毛 先安装docker环境 不要问&#xff0c;软件源之类的配置&#xff0c;挨个梭就行 sudo apt update sudo apt install apt-transport-https ca…

Python3 高级教程 | Python3 CGI编程(二)

目录 一、什么是CGI 二、网页浏览 三、CGI架构图 四、Web服务器支持及配置 五、第一个CGI程序 六、HTTP头部 七、CGI环境变量 八、GET和POST方法 &#xff08;一&#xff09;使用GET方法传输数据 &#xff08;二&#xff09;简单的url实例&#xff1a;GET方法 &#x…

快速排序——“数据结构与算法”

各位CSDN的uu们好呀&#xff0c;今天又是小雅兰的数据结构与算法专栏啦&#xff0c;下面&#xff0c;就让我们进入快速排序的世界吧&#xff01;&#xff01;&#xff01; 快速排序 快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法&#xff0c;其基本思想为&…

【Docker】Docker容器与虚拟机的对比、三要素、架构和镜像加速器的详细讲解

&#x1f680;欢迎来到本文&#x1f680; &#x1f349;个人简介&#xff1a;陈童学哦&#xff0c;目前学习C/C、算法、Python、Java等方向&#xff0c;一个正在慢慢前行的普通人。 &#x1f3c0;系列专栏&#xff1a;陈童学的日记 &#x1f4a1;其他专栏&#xff1a;CSTL&…

什么?你还没有用过JPA Buddy,那么你工作肯定没5年

1. 概述 JPA Buddy是一个广泛使用的IntelliJ IDEA插件&#xff0c;面向使用JPA数据模型和相关技术&#xff08;如Spring DataJPA&#xff0c;DB版本控制工具&#xff08;Flyway&#xff0c;Liquibase&#xff09;&#xff0c;MapStruct等&#xff09;的新手和有经验的开发人员…

《Java-SE-第二十七章》之常见的锁策略

前言 在你立足处深挖下去,就会有泉水涌出!别管蒙昧者们叫嚷:“下边永远是地狱!” 博客主页&#xff1a;KC老衲爱尼姑的博客主页 博主的github&#xff0c;平常所写代码皆在于此 共勉&#xff1a;talk is cheap, show me the code 作者是爪哇岛的新手&#xff0c;水平很有限&…