对于ESB服务总线本身的服务状态探测属于APM应用性能监控的一部分内容,在这里不谈完整的APM,包括服务链监控等,而只是谈下对于ESB服务总线如何探测本身服务的可用性。

首先谈下探测的时效性,是否要做到完全实时,实际上只要我们做到定时探测,而每次探测的时间能够足够短,那么本身就是一种准实时的服务检测。在探测功能实现的过程中,可以做来灵活的配置探测时间间隔,比如每10秒,30秒或者每分钟探测并调用一次服务接口。

其次再看下探测的范围,对于服务探测范围包括了集成平台本身提供的代理服务,也包括了源端业务系统提供的业务服务。首先应该是探测代理服务,如果代理服务正常那么业务服务一定是正常的;如果代理服务不正常,也不能说就是ESB总线有问题,这个时候应该进一步探测业务服务,以区分出来究竟是ESB总线的问题还是源端业务系统的问题。

最后说下探测的方式,在前面我曾经谈到过,可以直接访问ESB总线或源业务系统发布的WSDL地址,如果WSDL地址能够正常访问到,就说明业务系统当前状态正常。但是这种方式本身是有问题的,WSDL地址能够访问并不代表业务系统本身的应用中间件部署包,后端的数据库都没有问题。因此最好的方式仍然应该是配置实际检测的服务,同时对于查询,导入等不同的类型都进行配置。同时配置的服务发起对ESB总线和源端业务系统服务的真实调用,对于查询服务本身不会进数据问题不大,而对于导入类服务在输入信息设置的时候可以设置为完整性校验无法通过的数据,这样就不会成功导入并造成目标系统接收到垃圾数据。

在做服务实例的业务关键字监控功能的时候,引入了Solr全文检索引擎来实现全消息报文的业务关键字查询,比如输入完整的采购订单号,可以快速的检索出在消息报文中出现过该订单号的所有服务实例信息。这也为后续做端到端业务监控,服务链监控提供了很好的底层能力。即服务链监控本身就可以依赖于底层的业务关键字查询能力来实现。

在ESB总线上原有功能上,已经实现了两个关键功能,其一是服务定时任务功能,即可以将服务服务配置为定时任务,根据预设的条件自动执行和运行。其二是实现了服务自动化测试功能,即可以对ESB总线部署的服务进行自动化测试,对于数值,日期等都给出默认值进行。可以看到这两个功能点一结合,完全就可以用来做服务定时的自动化探测功能。

可以在定时任务执行处进行服务配置,配置哪些服务需要定时执行,同时对定时执行的任务给出输入默认参数,同时设置服务定时执行的时间间隔。这样基本就完全复用了平台已有的功能能力。

对于服务运行探测出现错误或异常的信息,完全可以在服务日志监控处查询,当然也可以单独做一个服务状态探测状态查询功能,可以按提供系统,时间等条件来查询和分析服务探测的异常情况。另外对于服务运行状态探测,如果出现服务运行异常,最好的方式仍然是要直接发送邮件或短信通知系统管理员,以方便系统管理员第一时间对异常情况进行处理。

如果是一个完整的APM性能监控产品,实际上在做应用性能监控前,最重要的就是应用状态监控,而这里面应该包括应用系统提供的服务状态监控。因此APM产品最好是包括上面谈到的这个功能,即可以在APM中配置需要监控哪个业务系统的哪个服务接口,具体监控的时间周期,调用的初始化输入参数等。这样的话基本上通过配置的方式就可以完成对业务系统提供服务的实时探测和监控。