.net中调用esb_大型ESB服务总线平台服务运行分析和监控预警实践

d16dd8f199201b48ccc1bed0706896b7.png

今天准备谈下ESB总线平台建设项目中的服务运行统计分析,服务心跳监测,服务监控预警方面的设计和实现。可以看到,在一个ESB服务总线平台上线后,SOA治理管控就变得相当重要,而这些运行监控分析本身也是提升ESB总线平台高可用性的关键。

对于ESB总线本身的高可用性建设,我在前面写过一篇文章可以参考。

大型集团ESB服务总线平台建设项目高可用性实践总结

今天主要分享下对于这类大型ESB总线平台建设项目在服务运行统计分析,服务心跳监测,服务监控,服务预警等配合高可用性能力方面的一些实践总结。

对接口服务运行统计分析的思考

对于ESB服务运行监控,从SOA服务管控和治理层面来看,经常会涉及到的KPI性能指标并不多,主要还是体现在运行次数,运行时间等关键的维度,如果考虑到指标本身之间的关联关系方便分析,那么还需要增加服务运行的并发数(分钟级),服务调用的数据量等关键指标。

举例来说,当我们发现服务调用变慢了,即服务运行时间明显增加了,那么我们需要分析是否是该服务本身的并发量是否增加了,还是说服务本身调用的数据量增加了,还是说其它服务调用的并发量和数据量增加了导致该服务的资源被占用等。这些都是可能需要涉及到关联分析的地方。

首先我们来看下单次服务运行能够采集和记录的关键数据

  1. 服务运行时间(服务请求开始 to 服务请求结束)
  2. 服务运行是否成功(True or False)
  3. 服务传输的消息报文大小
  4. 服务名称
  5. 服务提供的系统,包括服务提供系统归属的组织类别等
  6. 服务消费方系统
  7. 正常调用还是非法调用
0132696d16f0b03f18631470ee303eef.png

接着再来看某个时间周期的情况,比如1个小时,1天,1周或1个月的统计时间周期

  1. 运行次数,对运行次数进行求和
  2. 最大分钟级并发数,取并发数的Max值
  3. 异常数,对异常数按时间点进行求和
  4. 告警数,对告警数按时间点进行求和
  5. 服务最大运行时间,最小运行时间,平均运行时间
  6. 服务消息报文最大报文,最小报文,平均报文容量

对于时间周期只我们我们统计的一个维度,而对服务进行分析的时候还需要考虑如下维度

  • 按服务目录-》按服务
  • 按企业-》子公司-》子组织
  • 按应用域-》按应用系统-》按模块
  • 按服务类型-》服务子类型
  • 按服务提供系统,服务消费系统

经过以上分析,我们看到一个最底层的服务运行日志信息,就有了按时间维度,按组织,服务类型,系统等多个维度进行维度分析和统计的可能。而这些恰好又是我们进行自定义报表和维度分析的基础。所有的统计分析基本都会基于以上基础运行信息展开进行。

基于以上思考,我们整合了一个面向组织和业务系统的服务运行统计分析报表,可以按系统的维度详细的查看到自己提供和消费的接口服务的运行情况,异常情况,并发量和数据量,异常和告警等各种关键信息。如下参考:

239f1da6caaa5a22c0dd62f424a3a2ef.png

为了做完整的服务运行和性能分析,我们最好还需要对中间件资源池(应用服务器和数据库服务器)的CPU,内存利用率,存储使用量等关键指标进行实时的性能分析和监控。在实际的性能分析和监控中往往也是首先会从CPU和内存告警上第一时间反应出服务当前运行出现异常(如大并发,超大数据传输等),然后我们在通过实际的日志监控分析功能快速的查看当前服务运行的并发情况,传递的数据量情况等。

当我们发现如果一个服务经常运行大并发,大数据量的异常调用的时候,则需要对服务单独启用流量控制策略等。比如:

  • 对服务传输的数据量及报文大小进行流控。
  • 对服务本身的并发量进行流控。
  • 对某个服务最大能够使用的资源量进行流控,防止单服务占满所有资源。

服务运行指标勾稽关系分析

服务运行指标相关之间的关联分析是我们进行服务运行问题排查,异常告警问题根源分析的基础。在前面谈SOA治理管控平台中,我们曾经画过一个图来说明,服务运行过程中的基础物理资源,数据库和应用服务器中间件资源,服务运行KPI和SLA设置之间的关联关系,如下:

1710bb7f2e3a14ab4d69e901e550be5b.png

基于上图,我们进一步做下扩展分析,先做下基本的关联关系判别:

JVM内存持续增加不释放,一个是服务并发量增加同时服务调用时间增长,其次是出现大数据量,长执行时间的服务调用,导致服务连接和内存无法快速回收。CPU使用率高升,但是内存利用率一般,一般为出现大并发量的服务调用,其次对于服务调用过程中有过多的数据映射,转换等处理导致CPU利用率增加。

服务调用运行时间长,首先要分析是否是原始服务本身调用时间就变长,如果不是,则一般是在ESB服务调用上出现大量长周期服务调用,但是连接不能快速是否,线程池满一直排队的情况。

如果JVM内存溢出,首先要通过Jstat工具监控下内存GC回收的情况,究竟是新时代,老生代,还是PermSize出现溢出。如果是PermSize需要进一步分析是否是程序本身有问题。

如果没有做流量控制,单个服务本身的大并发,大数据量调用往往会侵占所有资源,对整个ESB上其它运行的服务都造成性能影响。

对于ESB总线本身的等待线程数增加一定会涉及到内存持续增加,涉及到服务调用响应周期增加。如果是服务调用超时,则需要分析具体是在哪段引起的超时,是原始服务本身超时,还是在ESB中间件上进行服务处理的时候超时。

对于服务告警和预警,前面也讲到过,再强调下具体场景包括

  1. 服务单位时间运行次数明显增加,我们可以设置一个阈值,只要超过了就进行报警。
  2. 服务运行时间明显增加,我们可以设置一个阈值,只要超过了就进行报警。
  3. 服务单位时间数据量明显增加,我们可以设置一个阈值,只要超过了就进行报警。

注意对于服务告警策略可以是针对所有服务,也可以是针对某个具体的服务,对于阈值可以是一个百分比数,也可以是一个绝对值。接下来我们再看下服务运行各个指标本身之间的一些关联关系:

  • 服务传递数据量大,一定带来内存增加
  • 服务运行时长增加,同时更加容易引起服务调用超时。
  • 服务调用并发量增加,服务调用时长一般也会增加,如果时长增加明显,则一定导致内存持续增加。单个服务本身的并发量增加,会引起ESB上线程排队增加,导致直接影响到其它服务调用性能。
  • 单个服务调用本身的数据量增加,容易引起JVM内存持续增加,导致JVM内存溢出。
  • 如果是后端服务本身性能下降,最明显的就是占有连接,资源不释放,导致ESB本身性能下降。

而对于整个ESB中间件的性能监控和分析,从最底层的IT基础设施,存储和服务器,到ESB中间件资源池,再到具体运行的服务运行包,相互之间存在密切的关联,需要达到的效果往往是第一时间反馈出预警。并且通过预警去采取后续的行动措施和SLA策略设置等。

1. 从资源池监控发现的CPU和内存异常第一时间找到非法调用服务?

e47b40c63eece1c90a6ce0185970f692.png

如果有CPU和内存利用率出现异常,同时某个服务或某几个服务出现运行性能告警,那么我们就有了分析的依据究竟是哪个服务导致的。并快速定位到具体的服务。在定位到具体的服务后,可以再详细查看服务调用的并发数,数据量等信息,然后有针对性的对服务展开流量控制策略。

2. 如果JVM内存持续上升而没有释放,如何快速定位到服务?

这个也是经常遇到的问题,当JVM内存持续增加,或者连接数不断的增加而不释放的时候,如果我们不进行及时的处理往往就导致整个JVM内存溢出而影响到所有ESB服务的运行。因此在这种场景下我们需要尽快的发现导致问题的服务,并对服务采取相应的措施。

3. 从服务运行告警到自动熔断

为了不因为一个具体服务的异常非法调用而影响到所有服务的运行,对于单个服务在出现持续性的告警后,应该有策略直接对该服务进行熔断处理。比如直接对服务进行禁用处理。

增加实时的心跳检查

在前面部分已经详细分析了服务本身的运行并发,次数和数据量与JVM内存,与CPU和内存利用率等各个关键指标之间的勾稽关系。

这些指标之间本身相互影响和作用,我们对指标的监控本身应该是风险驱动的,即在系统出现宕机或内存溢出等故障问题前快速的发现问题并进行处理。

因此,我们就需要对各种关键指标进行心跳监控和实时预警。

对JVM内存利用率进行监控

在前面我们已经谈到了,实际上出现JVM溢出的时候,往往会由于请求漂移影响到整个集群大量节点内存溢出而导致集群不可用。

因此需要时刻监控JVM内存利用率的情况,如果发现JVM内存持续在某个高位,无法通过Gc操作将内存回收下来的时候就应该实时进行预警。

在预警后我们既可以进行人工处理,也可以设置策略直接对问题节点进行重启操作。

8b160ebaf711d6bc74f16c7ab058927d.png

如上,我们对所有集群节点的JVM内存利用率进行实时监控,当发现利用率持续大于70%的时候就进行相应的预警操作,如果超过80%就推送严重警告信息。

对后端业务系统和服务本身可用性监控

其次,ESB服务总线如果出现服务调用异常,除了ESB总线本身的异常故障外,更大的可能性是后端业务系统不可用,或者说后端业务系统提供的业务服务不可用导致。

对于ESB总线本身,我们可以实时心跳检查ESB总线暴露的服务可用性,如下:

8a6bfc26e1349bd6432c67387c6f493f.png

如果是后端系统本身不可用,那么往往会快速的返回connection timeout异常信息,这样不会影响到整个ESB总线平台稳定性。但是如果是后端业务系统服务假死或处于长时间无响应的状态,那么就会导致大量的连接无法释放,最终导致资源被消耗完。

因此对后端系统和后端服务进行实时心跳监控也是有必要的。

512df3694ee038856929fb2f85319c26.png

不论是对于ESB集群还是后端业务系统的监控,实际上都包括两个方面的监控,一个我们叫技术联通性监控,一个叫业务联通性监控。

技术连通性即是否出现conneciton timeout访问超时,是就返回异常。而对于业务联通性,则是调用真实的某个业务服务接口,如果出现read time out则返回业务连通失败错误。

对服务运行进行实时心跳监控

其次,我们还需要对服务运行进行实时心跳监控,即时刻监控服务运行的并发量,数据量,运行时长等几个关键数据指标。

在前面已经谈到过以上几个指标本身存在勾稽关系,比如发现服务运行平均时长增加,那么很可能是服务并发量增加或调用数据量增加导致。其次,如果发现服务调用的消息报文数据量猛增,那么很可能导致服务运行时长增加。

因此需要对以上几个关键指标进行实时监控,时刻监控是否发生了峰值突变情况。

d46c693d22ef3373032a5754e05ee981.png

当发现了峰值或突变的时候,我们就需要进行预警,并分析发生大并发或大数据量调用的原因并及时采取相应的流量管控措施,以确保整个ESB平台的稳定性。

通过监控大屏可视化实时监控

c7a3311f351430eac50945311af20924.png

监控大屏更多的是展示基于服务集成层面的总览数据,同时对关键的异常告警信息,关键指标心跳,关键指标排名信息进行展示。这些都应该在Level1级层面的视图或报表。

我们举一个简单场景,一个企业实施了ESB总线后,集成了20个业务系统,上100个服务接口,每天大概产生100万条服务调用示例记录,高峰时期的分钟级并发在1万次左右。

总线实际上和硬件类网关很类似,当所有的服务调用全部都有经过总线的时候,我们就更加关心总线上实际的实时并发量,数据流量大小数据。而且这两个数据最好是要实现准实时的监控。以分钟级为例,我们需要监控分钟级的服务调用次数,分钟级的服务调用传输数据量。

监控着两个指标是否出现突然的峰值调用,如果没有一般来说总线运行本身也不好出现问题。如果出现了各种异常大并发,大数据量调用,则一定会体现到我们的监控时序图上面。这两个数据实际上是适合在大屏上面实时心跳检测并显示的。

对于大屏可视化展示,我们可以理解为总览,即更多的是当前ESB总线服务,集成的业务系统的总体健康情况。因此在大屏上我们可以考虑对当天的一些统计数据进行统计展示。

这些统计数据包括了服务调用总次数,平均时长,总数据量,平均数据量,分钟级最大并发,接入总系统数,接入总服务数,总异常数,总告警次数等。对于异常告警往往是一个比较重要的展示内容,特别是异常信息本身还分为了系统级的异常和业务级的异常,对于告警本身又分为严重,一般,轻微等各种级别的告警。这些都需要在大屏进行一个统计的展示。

如果是做集团到省两级ESB总线实施,在大屏上我们就可以考虑来实现结合地图的可视化效果展示。这个前面有文章说过,可以通过连线,端点节点大小,颜色等来体现服务调用流量,状态等信息。

916561e24a2c8800f5c18db1c52584c9.png

即使是单级ESB总线,在大屏展示的时候我们也需要考虑是否能够展示一个集成架构视图,能够展示出当前总线集成的多个业务系统,类似Bus总线的展示方式,可以通过该图将集成的关键系统全部标注出来。同时对于集成的系统上本身可以显示更多的关键信息。

如果集成的业务系统用一个方框进行展示,那么在方框里面可以考虑展示。

  1. 方框的颜色用于展示当前提供服务的本身的异常和告警情况
  2. 方框内可以显示提供服务数和消费服务数
  3. 方框内可以显示服务当天的服务提供总次数,峰值并发量

最后,大屏本身也可以展示一些列表数据,但是从大屏可视化效果来说,列表数据不适合展示太多。可以考虑的列表数据展示主要包括了服务运行次数,服务调用异常,服务调用耗时或数据量的Top10排名信息显示等。

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

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

相关文章

计算机操作系统实验银行家算法,实验六 银行家算法(下)

实验六 银行家算法(下)一、实验说明实验说明:本次实验主要是对银行家算法进行进一步的实践学习,掌握银行家算法的整体流程,理解程序测试时每一步的当前状态,能对当前的资源分配进行预判断。二、实验要求1、获取源代码2、看懂大致框…

什么原因导致芯片短路_华为为什么突然大量用起了联发科芯片,或是这三个产品策略原因...

经常关注数码圈的都知道,近几年来,随着华为自研能力的提升,华为几乎很少采购第三方芯片,近几年来的绝大多数华为手机,几乎都是用的自研芯片麒麟系列。并没有像其它国产品牌那样用联发科或者高通的芯片。不过今年却大不…

如何运行vue项目(维护他人的项目)

假如你是个小白,在公司接手他人的项目,这个时候,该怎么将这个项目跑通? 前提: 首先,这个教程主要针对vue小白,并且不知道安装node.js环境的。言归正传,下面开始教程:在维…

进程操作

2019独角兽企业重金招聘Python工程师标准>>> 一、创建一个进程 进程是系统中最基本的执行单位。Linux系统允许任何一个用户进程创建一个子进程,创建之后,子进程存在于系统之中并独立于父进程。 关于父进程与子进程这两个概念,除了…

计算机硬件发展的特点有哪些,简述计算机的发展历程及各代计算机的特点。

满意答案Karen0491推荐于 2017.11.25采纳率:40% 等级:6已帮助:608人世界上第一台计算机是1946年问世的,根据计算机的性能和软硬件技术,将计算机发展划分成以下几个阶段:①第一阶段:电子管计算…

电饼锅的样式图片价格_进口珐琅铸铁锅专场,精致小厨娘们来康康!

两个月前,小灰兔我写了《10个高颜值居家好物,让你在朋友圈万众瞩目!》一文,曾有小伙伴私信说这张图简直就是梦想中厨房的亚子强烈同意!!!有多少女孩子,看到颜值炒鸡高的锅路都走不动…

在UITouch事件中画圆圈-iOS8 Swift基础教程

这篇教程主要内容展示如何利用Core Graphics Framework画圆圈,当用户点击屏幕时随机生成不同大小的圆,这篇教程在Xcode6和iOS8下编译通过。 打开Xcode,新建项目选择Single View Application,Product Name填写iOS8SwiftDrawingCirclesTutorial,Organization Name和Organization …

浏览器兼容性问题

转载于:https://www.cnblogs.com/python-machine/p/9406084.html

有人在远程使用计算机是什么意思,如何远程控制计算机,计算机远程控制有什么用途...

对于每个人来说,计算机都是至关重要的家用电器. 因为使用计算机可以使我们的业余生活丰富多彩. 随着Internet的普及,越来越多的用户开始学习自己使用计算机. 但是,操作中仍然存在很多问题,只要每个人都学会了远程控制,…

图学java基础篇之IO

java io体系 如图可以看出,java的io按照包来划分的话可以分为三大块:io、nio、aio,但是从使用角度来看,这三块其实揉杂在一起的,下边我们先来概述下这三块: io:主要包含字符流和字节流,我们常用…

boot界面上下键调节键不能动_为什么电脑一开机就自动进入BIOS界面

电脑故障的问题表现形式很多,比如说为什么电脑蓝屏,为什么电脑一开机就自动进入BIOS界面等。这些问题往往另很多网友不知所措。今天小编就针对电脑一开机就自动进入BIOS界面的问题,教下大家具体的解决方法。1、你的BIOS电池没有电了。解决方法…

句子相似度--余弦相似度算法的实现

1、余弦相似度余弦距离,也称为余弦相似度,是用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小的度量。余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,这就叫"余弦相似性"。 上图两…

红帽436——HA高可用集群之概念篇

一、集群概念:集群:提高性能,降低成本,提高可扩展性,增强可靠性,任务调度室集群中的核心技术。集群作用:保证业务不断 集群三种网络:业务网络,集群网络,存储网络 二、集群三种类型:…

按季度分类汇总_2019年纯碱行业相关上市公司季报 与半年报情况汇总

2019年纯碱行业相关上市公司季报与半年报情况汇总经百川盈孚统计,目前纯碱行业相关上市公司共计11家(包含三家ST股),已经全部公布2019年一季度报告。2019年上半年度报告仅五家公司公布,其中包含:大连大化、山东海化、华昌化工、湖…

sapmto生产模式配置及操作详解_硬岩制砂线怎么设计?300t/h的生产流程与设备配置详解...

点击上方“蓝字”关注我们说到硬岩,花岗岩、辉绿岩都不陌生,关于花岗岩的生产线配置小编曾介绍过,感兴趣的可直接点阅:《硬质岩破碎很发愁?从原料到成品,看花岗岩的破碎制砂生产线配置》《年产300万t花岗岩…

公交卡软件测试思路,中国移动NFC专用SIM卡测试过程介绍

近期,通讯运营商在NFC的应用领域迈出了一大步,消费者在北京乘坐地铁、公交以及其他支持市政一卡通消费的场所均可进行手机支付。接下来就从办卡开始,为大家详细介绍一下中国移动NFC手机钱包的实测过程。办理手机NFC支付业务想要刷手机消费除了…

青年教师大讲堂 计算机,浙海大青年教师大讲堂之船机学院“知识改变命运”...

原标题:浙海大青年教师大讲堂之船机学院“知识改变命运”10月28日上午,由校团委主办,船舶与机电工程学院团委承办的青年博士教师大讲堂系列活动之“知识改变命运”在长峙校区杨存国一号报告厅举行。本次讲座由船舶与机电工程学院青年博士石学…

深入浅出分布式文件系统MogileFS集群

一,简介 MogileFS是一款开源的分布式文件存储系统,由LiveJournal旗下的Danga Interactive公司开发。Danga团队开发了包括 Memcached、MogileFS、Perlbal 等多个知名的开源项目。目前MogileFS的日益成熟使用此解决方法的公司越来越多,例如日…

计算机的控制面板打不开,控制面板打不开,教您控制面板打不开怎么办

最近有些不少的小伙伴向小编反映说,控制面板突然出现了打不开的情况,那么遇到这种情况该怎么办呢?其实控制面板打不开很有可能是因为系统文件损坏造成的。今天,小编就来把打不开控制面板的解决方法分享给你们。其实控制面板是我们…

【算法题】Multiples of 3 and 5

Multiples of 3 and 5 原题 题意如下: 找出N以内的3和5的倍数的和。 思路 1、刚看到觉得好弱智,直接遍历一遍不就OK了吗?但是第2和第3个测试用例报了TLE,超时。 2、然后想不出来了,搜了一下,发现有一个类似…