掌桥专利:专业的专利平台
掌桥专利
首页

应用程序可用性的监控方法、装置、电子设备和介质

文献发布时间:2023-06-19 10:27:30


应用程序可用性的监控方法、装置、电子设备和介质

技术领域

本公开涉及云平台技术领域,特别是涉及一种应用程序可用性的监控方法、装置、电子设备和介质。

背景技术

随着云计算的迅猛发展,越来越多的应用程序逐步从部署在传统服务器上的节点迁移至云平台上。云平台上的应用程序是运行在应用程序容器中的,为了实现对应用程序可用性的监控,需要在应用程序容器的启动和销毁时,通过执行应用程序容器中的可用性监控脚本进行可用性监控信息的注册和解注册。

但是,相关技术中需要在应用程序容器中执行可用性监控脚本,而可用性监控脚本的部署依赖于应用程序与云平台提供的标准基础镜像之间的深度绑定,如需升级可用性监控脚本,将需要重新打包应用程序镜像并重新进行部署,使得应用程序可用性的监控灵活性不足,且不易于维护和管理。

发明内容

有鉴于此,为了提供一种灵活自动化的应用程序可用性的监控方案,至少部分地避免由于可用性监控脚本需要提前通过应用程序容器放置到应用程序的容器中,导致应用程序与标准基础镜像之间的深度绑定关系,如需升级可用性监控脚本,将需要重新打包应用程序镜像并重新进行部署,使得可用性监控脚本不易于维护和管理的技术问题,实现应用程序与标准基础镜像之间的深度绑定关系的解绑,可用性监控脚本的易于维护和管理。本公开提供了一种应用程序可用性的监控方法、装置、电子设备和介质。

为了实现上述目标,本公开的一个方面提供了一种可用性的监控方法,可以包括:响应于上述应用程序的启动请求,启动辅助容器和应用程序容器,其中,上述应用程序运行在上述应用程序容器中,上述辅助容器与上述应用程序容器具有共生关系以共享地址空间,以及在上述应用程序容器和上述辅助容器启动成功的情况下,通过上述辅助容器,获得第一监控结果,其中,上述第一监控结果用于表征上述应用程序运行在上述应用程序容器中的可用性。

根据本公开的实施例,上述方法还可以包括:在上述应用程序启动时,通过上述辅助容器向监控中心进行可用性监控信息的注册。

根据本公开的实施例,上述通过上述辅助容器,获得第一监控结果可以包括:通过上述辅助容器,启动可用性监控程序,其中,上述可用性监控程序运行于上述辅助容器中,通过上述可用性监控程序,向上述应用程序发送获取请求,其中,上述获取请求用于指示获取上述应用程序探测到的可用性信息,接收上述应用程序发送的可用性探测信息,其中,上述可用性探测信息是上述应用程序探测到的可用性信息,以及基于上述可用性探测信息,获得第一监控结果。

根据本公开的实施例,上述基于上述可用性探测信息,获得第一监控结果可以包括:通过上述可用性监控程序,统一解析上述可用性探测信息,以获得可用性解析结果,其中,上述可用性解析结果包括错误码,以及基于上述可用性解析结果,获得第一监控结果。

根据本公开的实施例,上述通过上述可用性监控程序,向上述应用程序发送获取请求可以包括:通过上述可用性监控程序,与上述应用程序提供的可用性接口服务建立连接,以及通过上述可用性接口,向上述应用程序发送获取请求。

根据本公开的实施例,上述接收上述应用程序发送的可用性探测信息可以包括:通过上述可用性接口,接收上述应用程序发送的可用性探测信息。

根据本公开的实施例,上述将上述第一监控结果上报至上述监控中心可以包括:在上述第一监控结果表明上述应用程序不可用的情况下,通过运行于上述辅助容器中的上述可用性监控程序,将上述第一监控结果上报至上述监控中心。

根据本公开的实施例,上述将上述第一监控结果上报至上述监控中心可以包括以下至少之一:基于预设上报时间,将上述第一监控结果上报至上述监控中心,基于预设上报优先级,将上述第一监控结果上报至上述监控中心,基于预设上报数量,将上述第一监控结果上报至上述监控中心。

根据本公开的实施例,上述方法还可以包括:若上述应用程序容器启动失败,上述辅助容器启动成功,则通过上述辅助容器,则向上述监控中心上报第二监控结果,其中,上述第二监控结果用于表征上述应用程序未启动成功,以及重新启动上述应用程序容器和上述辅助容器。

为了实现上述目标,本公开的另一个方面提供了一种应用程序可用性的监控装置,可以包括:容器启动模块,用于响应于上述应用程序的启动请求,启动辅助容器和应用程序容器,其中,上述应用程序运行在上述应用程序容器中,上述辅助容器与上述应用程序容器具有共生关系以共享地址空间,以及第一监控结果获得模块,用于在上述应用程序容器和上述辅助容器启动成功的情况下,通过上述辅助容器,获得第一监控结果,其中,上述第一监控结果用于表征上述应用程序运行在上述应用程序容器中的可用性。

根据本公开的实施例,上述装置还可以包括:监控信息注册模块,用于在上述应用程序启动时,通过上述辅助容器向监控中心进行可用性监控信息的注册。

根据本公开的实施例,上述第一监控结果获得模块可以包括:可用性监控程序启动子模块,用于通过上述辅助容器,启动可用性监控程序,其中,上述可用性监控程序运行于上述辅助容器中,获取请求发送子模块,用于通过上述可用性监控程序,向上述应用程序发送获取请求,其中,上述获取请求用于指示获取上述应用程序探测到的可用性信息,可用性探测信息接收子模块,用于接收上述应用程序发送的可用性探测信息,其中,上述可用性探测信息是上述应用程序探测到的可用性信息,以及第一监控结果获得子模块,用于基于上述可用性探测信息,获得第一监控结果。

根据本公开的实施例,上述第一监控结果获得子模块可以包括:可用性探测信息解析单元,用于通过上述可用性监控程序,统一解析上述可用性探测信息,以获得可用性解析结果,其中,上述可用性解析结果包括错误码,以及第一监控结果获得单元,用于基于上述可用性解析结果,获得第一监控结果。

根据本公开的实施例,上述获取请求发送子模块可以包括:可用性接口连接单元,用于通过上述可用性监控程序,与上述应用程序提供的可用性接口服务建立连接,以及获取请求发送单元,用于通过上述可用性接口,向上述应用程序发送获取请求。

根据本公开的实施例,上述可用性探测信息接收子模块可以用于:通过上述可用性接口,接收上述应用程序发送的可用性探测信息。

根据本公开的实施例,上述装置还可以包括:第一监控结果上报模块,用于在上述第一监控结果表明上述应用程序不可用的情况下,通过运行于上述辅助容器中的上述可用性监控程序,将上述第一监控结果上报至上述监控中心。

根据本公开的实施例,上述将上述第一监控结果上报至上述监控中心可以包括以下至少之一:基于预设上报时间,将上述第一监控结果上报至上述监控中心,基于预设上报优先级,将上述第一监控结果上报至上述监控中心,基于预设上报数量,将上述第一监控结果上报至上述监控中心。

根据本公开的实施例,上述装置还可以包括:第二监控结果上报模块,用于若上述应用程序容器启动失败,上述辅助容器启动成功,则通过上述辅助容器,则向上述监控中心上报第二监控结果,其中,上述第二监控结果用于表征上述应用程序未启动成功,以及容器重新启动模块,用于重新启动上述应用程序容器和上述辅助容器。

为了实现上述目标,本公开的另一方面提供了一种电子设备,可以包括:一个或多个处理器,存储器,用于存储一个或多个程序,其中,当上述一个或多个程序被上述一个或多个处理器执行时,使得上述一个或多个处理器实现如上所述的可用性监控方法。

为了实现上述目标,本公开的另一方面提供了一种计算机可读存储介质,可以存储有计算机可执行指令,上述指令在被执行时用于实现如上所述的可用性监控方法。

为了实现上述目标,本公开的另一方面提供了一种计算机程序,上述计算机程序可以包括计算机可执行指令,上述指令在被执行时用于实现如上所述的可用性监控方法。

与相关技术提供的解决方案相比,本公开提供的应用程序可用性监控的解决方案,响应于应用程序的启动请求,不仅要启动应用程序容器,还要启动与该应用程序容器共享存储资源和网络资源的辅助容器,两者并行执行且协同工作,在二者都启动成功的情况下,通过该辅助容器,获得应用程序可用性的监控结果。

通过本公开实施例提供的应用程序的可用性监控方法,不再需要在应用程序容器中执行可用性监控脚本,规避了应用程序与云平台提供的标准基础镜像之间需要深度绑定导致维护和管理不方便的技术问题,而是通过为应用程序容器部署的一个伴生容器,即辅助容器,来获得应用程序可用性的监控结果,使得对应用程序的可用性进行监控的方法,既不用更改应用程序容器,又可以扩展并增强应用程序容器的功能,以实现可以克服相关技术中存在的上述技术问题,达到对应用程序的可用性进行监控的灵活性以及智能性。

附图说明

通过以下参照附图对本公开实施例的描述,本公开的上述以及其他目的、特征和优点将更为清楚,在附图中:

图1示意性示出了适用于本公开实施例的可以应用应用程序可用性的监控方法和装置的系统架构;

图2示意性示出了根据本公开实施例的应用程序可用性的监控方法的流程图;

图3示意性示出了根据本公开另一实施例的应用程序可用性的监控方法的流程图;

图4示意性示出了根据本公开另一实施例的应用程序可用性监控方法的流程图;

图5示意性示出了根据本公开另一实施例的应用程序可用性的监控方法的流程图;

图6示意性示出了根据本公开另一实施例的应用程序可用性的监控方法的流程图;

图7示意性示出了根据本公开实施例的应用程序可用性的监控装置的框图;

图8示意性示出了根据本公开另一实施例的应用程序可用性的监控装置的框图;

图9示意性示出了根据本公开另一实施例的应用程序可用性的监控装置的框图;

图10示意性示出了根据本公开另一实施例的应用程序可用性的监控装置的框图;

图11示意性示出了根据本公开实施例的适于实现上文描述的应用程序可用性的监控方法的计算机可读存储介质产品的示意图;以及

图12示意性示出了根据本公开实施例的适于实现上文描述的应用程序可用性的监控方法的电子设备的框图。

在附图中,相同或对应的标号表示相同或对应的部分。

应该注意的是,附图并未按比例绘制,并且出于说明目的,在整个附图中类似结构或功能的元素通常用类似的附图标记来表示。

具体实施方式

以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。

在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了上述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。

在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。

在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。

附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程应用程序可用性监控装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。本公开的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本公开的技术可以采取存储有指令的计算机可读存储介质上的计算机程序产品的形式,该计算机程序产品可供指令执行系统使用或者结合指令执行系统使用。

针对应用程序的可用性进行监控的解决方案,通常体现在应用程序容器启动时向监控中心进行容器节点的注册,在应用运行过程中应用程序定时向监控中心发送可用性监控信息,在应用程序容器销毁时向监控中心进行容器节点的解注册。为了实现对应用程序可用性的监控,在具体实施时,可以在应用程序容器的启动和销毁时,通过执行应用程序容器中的可用性监控脚本进行可用性监控信息的注册和解注册。但是,该可用性监控脚本需要提前通过应用程序容器放置到应用程序的容器中,且需要继承云平台提供的标准基础镜像,这样将造成应用程序与标准基础镜像之间的深度绑定关系,如需升级可用性监控脚本,将需要重新打包应用程序镜像并重新进行部署,使得应用程序可用性的监控灵活性不足,且不易于维护和管理。有鉴于此,如何提供一种灵活自动化可用性监控的方案,是本领域亟需解决的技术问题。

本公开提供了一种应用程序可用性的监控方法,包括容器的启动阶段和监控信息的获取阶段。在容器的启动阶段,响应于应用程序的启动请求,启动辅助容器和应用程序容器,该应用程序运行在应用程序容器中,辅助容器与应用程序容器具有共生关系以共享地址空间。在应用程序容器和辅助容器均启动成功的情况下,就进入监控信息的获取阶段,具体地,在应用程序运行于应用程序容器的过程中,通过辅助容器,获得用于表征应用程序运行在应用程序容器中的可用性的第一监控结果。

通过本公开提供的应用程序可用性的监控方法,不仅要启动应用程序容器,还要启动与该应用程序容器具有共生关系以共享地址空间的辅助容器,两者并行执行且协同工作,在二者都启动成功的情况下,通过该辅助容器,获得应用程序可用性的监控结果,不再需要在应用程序容器中执行可用性监控脚本,规避了应用程序与云平台提供的标准基础镜像之间需要深度绑定导致维护和管理不方便的技术问题,而是通过为应用程序容器部署的一个伴生容器,即辅助容器,来获得应用程序可用性的监控结果,使得对应用程序的可用性进行监控的方法,既不用更改应用程序容器,又可以扩展并增强应用程序容器的功能,以实现可以克服相关技术中存在的上述技术问题,达到对应用程序的可用性进行监控的灵活性以及智能性。

需要说明的是,本公开提供的应用程序可用性的监控方法和应用程序可用性的监控装置可用于金融领域中,也可用于除金融领域之外的任意领域中。因此,对本公开所提供的应用程序可用性的监控方法和应用程序可用性的监控装置的应用领域不做限定。

图1示意性示出了适用于本公开实施例的可以应用应用程序可用性的监控方法和装置的系统架构100。需要注意的是,图1所示仅为可应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。

在本公开的上下文中,应用程序可用性的监控方法和装置应用于通过Kubernetes实现的云平台环境。Kubernetes(简称K8s)是一个开源(遵循Apache2.0协议)的容器集群管理系统,用于自动化实现容器化应用程序的自动部署、扩展和管理,使得管理云平台中多个主机上的应用容器化,目标是让部属容器化的应用简单并且高效,提供了应用部署、规划、更新、维护的一种机制。K8s提供了容器编排,资源调度,弹性伸缩,部署管理和服务发现等一系列功能,使容器化应用的部署工作更加简单和高效。

如图1所示,应用程序可用性的监控方法和装置的系统架构100可以包括Pod 110以及在Pod 110中具有共生关系以共享地址空间的辅助容器120和应用程序容器130。

Pod 110是可以在K8s集群中运行部署应用或服务的最小单元,是Kubernetes中的最小编排单位,可以支持多容器。一个Pod代表着集群中运行的一个进程。Pod应用程序的基本构建块,一个Pod可以由一个或多个容器组成。一个Pod一般对应于一个应用程序。Kubernetes管理Pod而不是容器,并且Pod封装容器,在一个Pod中同时运行多个容器,即一个Pod中也可以同时封装几个需要紧密耦合互相协作的容器,它们之间共享网络和存储资源。Pod将这些容器的资源作为一个实体来统一管理。

辅助容器120是为应用程序容器130部署的一个伴生容器,Sidecar接管进出应用容器的所有流量,在Kubernetes的Pod中,在原有的应用容器旁边部署一个Sidecar容器,可以理解为两个容器共享存储、共享网络等资源。可以广义的将这个注入了Sidecar容器的Pod理解为一台主机,两个容器共享主机资源。Sidecar容器是与吊舱中的主容器一起运行的容器。Sidecar模式在不更改他的情况下,扩展并增强了当前容器的功能。

应用程序容器130就是如何将应用程序整合到容器中去,并且能够在容器中实际运行,可以为Sidecar容器定义任意数量的容器,并且主容器可以成功与之协同工作,所有容器将并行执行,并且仅当两种类型的容器都成功运行时,整个功能才起作用,在大多数情况下,Sidecar容器既简单又小巧,比主容器消耗更少的资源。此外,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。

需要说明的是,本公开提供的应用程序可用性的监控方法一般可以由辅助容器120执行。相应地,本公开提供的应用程序可用性的监控装置一般可以设置于辅助容器120中。本公开提供的应用程序可用性的监控方法也可以由不同于辅助容器120且能够与辅助容器120和/或应用程序容器110对应的其他辅助容器执行。相应地,本公开提供的应用程序可用性的监控装置也可以设置于不同于辅助容器120且能够与辅助容器120和/或应用程序容器110对应的其他辅助容器中。

相关技术对云平台上部署的应用程序可用性的监控方法,其实现过程可以描述为:通过Kubernetes提供容器生命周期的PostStart和PreStop机制,同时每个应用程序均需自己编写定时发送可用性监控的代码实现,在容器启动和容器销毁的时候,执行容器中的脚本进行可用性监控信息的注册和解注册,而该脚本需提前通过应用容器继承标准的基础镜像的方式放置到应用程序的容器中,导致应用程序与云平台提供的标准基础镜像之间的深度绑定关系,如需升级可用性监控脚本将需要重新打包应用程序镜像并重新进行部署,造成大量的重复工作量,不易于维护和管理。同时每个应用程序均需自己编写定时发送可用性监控的代码实现,造成大量的重复工作量。

需要说明的是,PostStart和PreStop是lifecycle的两种回调函数,lifecycle用于管理容器在运行前和关闭前的一些动作。PostStart回调容器创建成功后,运行前的任务,用于资源部署、环境准备。PreStop回调容器被终止前的任务,用于优雅关闭应用程序、通知其他系统。

下面参考本公开的若干代表性实施方式,详细阐释本公开提供的应用程序可用性的监控方法和监控装置的原理和精神。

图2示意性示出了根据本公开实施例的应用程序可用性的监控方法的流程图。如图2所示,该应用程序可用性的监控方法200可以包括操作S210以及操作S220。

在操作S210,响应于应用程序的启动请求,启动辅助容器和应用程序容器。

根据本公开的实施例,应用程序可以是原本部署在传统服务器的节点上的,已迁移到云平台的容器节点上的任何应用,例如,可以是通过Web访问的应用程序,即Web应用程序,本公开对此不做限定。

根据本公开的实施例,应用程序容器与辅助容器具有共生关系,是一主一辅的关系,具有相同的生命周期,二者共享地址空间,包括但不限于存储空间、网络空间。具体实施时,应用程序容器作为主容器,用于为应用程序提供运行环境。为每个应用程序容器部署的一个伴生容器,即辅助容器,为应用程序容器提供辅助功能,用于为应用程序的运行提供监控环境,该辅助容器接管进出应用程序容器的所有流量,辅助容器与应用程序容器共享存储资源和网络资源,能够极大程度解耦应用,并且支持异构组件,降低技术壁垒。具体实施时,可以在Kubernetes的Pod中,在原有的应用程序容器旁边部署一个辅助容器,也可以广义的将这个注入了辅助容器的Pod理解为一台主机,两个容器共享主机资源。可选地,该辅助容器可以为基于Sidecar模式部署的辅助容器,Sidecar模式在不更改主容器的情况下,扩展并增强了当前主容器的功能。

需要说明的是,应用程序容器不仅可以与辅助容器并行执行,还可以与辅助容器协同工作,仅当主容器与辅助容器这两种类型的容器都成功运行时,整个功能才起作用,在大多数情况下,辅助容器既简单又小巧,比应用程序容器消耗更少的主机资源。

Pod中共享的环境包括Linux的命名空间(namespace)和其他可能的隔绝环境。Pod中可以共享的资源包括网络资源和存储资源。

具体实施网络资源时,每个Pod都会被分配一个唯一的IP地址。Pod中的所有容器共享网络空间,包括IP地址和端口。Pod内部的容器可以使用localhost互相通信。需要明白的是同一个Pod下的容器是通过l

具体实施存储资源时,可以为Pod指定多个共享的存储卷(Volume)。Pod中的所有容器都可以访问共享的Volume。Volume也可以用来持久化Pod中的存储资源,以防容器重启后文件丢失。可选地,存储资源可以是Volume,其为K8s集群中的存储卷,该存储卷的生命周期和作用范围是一个Pod。K8s支持非常多的存储卷类型,本领域技术人员可以根据实际需要自行选择合适的存储卷类型,本公开对比不做限定。

在操作S220,在应用程序容器和辅助容器启动成功的情况下,通过辅助容器,获得第一监控结果。在本公开中,第一监控结果用于表征应用程序运行在应用程序容器中时的可用性。

根据本公开的实施例,通过辅助容器,获得第一监控结果,使得应用程序可用性的监控与应用程序本身解耦。应用程序可用性可以用来衡量服务级别协议的正常运行时间,其获得方法包括但不限于监控和测量的应用程序是否在线并且可用。

根据本公开的实施例,可用性的监控可以包括应用程序容器本身的资源使用情况,包括但不限于CPU、内存、网络和磁盘。

通过本公开的实施例提供的应用程序可用性的监控方法,响应于应用程序的启动请求,启动与应用程序容器共享存储资源和网络资源的辅助容器和应用程序容器,并在二者都启动成功的情况下,通过辅助容器,获得第一监控结果。本公开对应用程序可用性的监控不再通过应用程序运行的应用程序容器来实现,而是通过不同于应用程序容器的辅助容器,获得应用程序可用性的第一监控结果,避免通过可用性监控脚本实现对应用程序可用性的监控,可以克服相关技术中存在的上述技术问题,达到对应用程序可用性的灵活自动化的监控。

图3示意性示出了根据本公开另一实施例的应用程序可用性的监控方法的流程图。如图3所示,该应用程序可用性监控方法300除可以包括前述操作S210及操作S220之外,还可以包括操作S310,在应用程序启动时,通过辅助容器向监控中心进行可用性监控信息的注册。

根据本公开的实施例,在应用程序启动时,通过辅助容器向监控中心进行可用性监控的注册,而不是通过应用程序容器向监控中心进行可用性监控的注册,不仅可以实现应用程序的可用性监控的自动注册,还可以实现应用程序可用性的监控的注册与应用程序所运行的应用程序容器本身之间的解耦,使得应用程序可用性的监控不依赖于应用程序容器本身,易于维护和管理。

作为一种可选的实施例,通过辅助容器,获得第一监控结果可以包括:通过辅助容器,启动可用性监控程序,以及通过可用性监控程序,获得第一监控结果。

根据本公开的实施例,可用性监控程序运行于辅助容器中,并与应用程序一起启动,该可用性监控程序以Sidecar方式运行代理,可以为每个应用程序服务一对一的配对,以进行可用性监控代理。

本公开的实施例,通过运行于辅助容器中的可用性监控程序实现应用程序可用性的自动监控,与应用程序本身解耦,避免通过应用程序容器中基于标准基础镜像的方式提前放置的可用性监控脚本进行可用性监控新型的注册和解注册,无需应用程序编写代码实现,易于维护和管理。

作为一种可选的实施例,通过可用性监控程序,获得第一监控结果可以包括:通过可用性监控程序,向应用程序发送获取请求,接收应用程序发送的可用性探测信息,以及基于可用性探测信息,获得第一监控结果。

根据本公开的实施例,获取请求用于指示获取应用程序探测到的可用性信息,可用性探测信息是应用程序探测到的可用性信息。

具体实施时,可用性监控程序可以定时的启动发送请求任务,向应用程序服务提供的可用性接口请求应用可用性信息,这样应用程序只需暴露统一的接口,并实现自己应用服务相关的可用性信息探测即可。由于辅助容器和应用程序容器运行在同一个Pod中,共享相同的网络空间,因此可用性监控程序可以与应用程序服务通信,就像在同一个容器或主机中运行的一样。

根据本公开的实施例,可用性接口可以是应用程序(Application ProgrammingInterface,API)接口,是一些预先定义的接口(如函数、HTTP接口),或指软件系统不同组成部分衔接的约定,用来提供应用程序与开发人员基于某软件或硬件得以访问的一组例程,而又无需访问源码,或理解内部工作机制的细节。

通过本公开的实施例,通过向应用程序服务提供的可用性接口请求应用可用性信息,可以避免通过应用程序容器获取自身的可用性信息时,需要编写定时发送可用性监控的代码实现的技术问题,实现监控信息的自动获取,效率高,实现方便。

作为一种可选的实施例,基于可用性探测信息,获得第一监控结果可以包括:通过可用性监控程序,统一解析可用性探测信息,以获得可用性解析结果,其中,可用性解析结果包括错误码;以及基于可用性解析结果,获得第一监控结果。

可以理解的是,应用程序在应用程序容器中运行时,不可避免的会出现各种各样的错误,用于表征在使用软、硬件的时候,软、硬件不能正常操作的一种现象。由于错误的类型很多,为了对错误进行区分,系统设定了错误代码(error code),软、硬件在运行中如果发生错误,将通过它内部的原有的设定判断、识别而通过错误代码的显示方式给操作者,操作者通过错误代码识别,快速找到软、硬件不能正常操作的具体原因。例如,Web错误码404表示文件或资源未找到。根据获取到的应用程序可用性信息,可用性监控程序统一解析应用程序的可用性信息,判断应用是否有可用性错误问题。

本公开实施例通过运行在辅助容器中的可用性监控程序,可以统一解析应用程序自身探测到并发送给辅助容器的可用性探测信息,以生成监控结果,避免不同应用程序需要单独解析,导致效率低下的技术问题,并因此实现不同的应用程序使用统一的解析方法的技术效果。

作为一种可选的实施例,通过可用性监控程序,向应用程序发送获取请求可以包括:通过可用性监控程序,与应用程序提供的可用性接口服务建立连接;以及通过可用性接口,向应用程序发送获取请求。

作为一种可选的实施例,接收应用程序发送的可用性探测信息可以包括:通过可用性接口,接收应用程序发送的可用性探测信息。

通过本公开的实施例,通过应用程序自身暴露的统一的接口,在辅助容器和应用程序之间建立通信渠道,使得应用程序通过该渠道可以实现可用性探测信息的发送,辅助容器通过该渠道可以实现可用性探测信息的接收,避免通过部署在应用程序容器中的可用性监控脚本获取探测信息的问题,使得监控信息的获取方式具有较高的灵活性。

图4示意性示出了根据本公开另一实施例的应用程序可用性的监控方法的流程图。如图4所示,该应用程序可用性监控方法400除了可以包括前述操作S210、操作S220以及操作S310之外,还可以包括操作S410,在第一监控结果表明应用程序不可用的情况下,通过运行于辅助容器中的可用性监控程序,将第一监控结果上报至监控中心。

根据本公开的实施例,监控中心提供了资源的实时监控、告警及通知服务。由于可用性监控程序运行在辅助容器中,与应用程序服务解构,监控中心地址等相关可用性监控配置可由系统统一配置和处理,无需每个应用程序单独配置,对于应用程序来说是透明的。具体实施时,在获得第一监控结果之后,由辅助容器中的可用性监控程序将第一监控结果上报给监控中心,而不再通过应用程序容器上报自身的监控结果。

通过本公开的实施例,通过运行于辅助容器中的可用性监控程序,可以实现监控信息的自动上报。

根据本公开的实施例,第一监控结果可以表明应用程序是可用的是,也可以表明应用程序是不可用的。在本公开中,只有在应用程序不可用的情况下,才会向监控中心上报应用程序的监控结果,而在应用程序可用的情况下,将不向监控中心上报应用程序的监控结果。

通过本公开实施例提供的可用性监控程序,根据监控结果选择性的向监控中心上报监控结果,既可以实现应用程序不可用的监控,又可以节省平台资源。

作为一种可选的实施例,将第一监控结果上报至监控中心可以包括以下至少之一:基于预设上报时间,将第一监控结果上报至监控中心;基于预设上报优先级,将第一监控结果上报至监控中心;基于预设上报数量,将第一监控结果上报至监控中心。

根据本公开的实施例,可以将全部监控结果上报至监控中心,也可以将部分监控结果上报至监控中心。可以基于一定的上报策略从全部监控结果中筛选出部分监控结果以向监控中心上报,而上报策略可以包括但不限于预设上报时间、预设上报优先级以及预设上报数量。

具体实施时,预设上报时间可以以不同的时间单位预先设定,时间单位包括但不限于小时、日、周、月、年。

具体实施时,预设上报优先级用于表征每个错误码的严重级别,严重级别越高,则对应的上报优先级越高,具有相对优先的上报顺序。因此可以将不同的错误码和上报优先级之间预先设定好匹配关系,这样在获得错误码之后,就可以基于错误码确定上报优先级。

具体实施时,预设上报数量可以依据本领域技术人员的经验预先设定,也可以根据历史上报记录预先设定,还可以根据平台资源的占用情况设定,本公开对此不做限定。

通过本公开实施例提供的可用性监控程序,预先设定不同维度的上报策略,既可以在实现监控结果的按序上报,又可以有效地节约对资源的占用,提高监控效率,兼顾灵活性和经济性。

图5示意性示出了根据本公开另一实施例的应用程序可用性的监控方法的流程图。如图5所示,该应用程序可用性监控方法500除了可以包括前述操作S210以及操作S220之外,还可以包括操作S510以及操作S520。

在操作S510,若应用程序容器启动失败,辅助容器启动成功,则通过辅助容器,则向监控中心上报第二监控结果,其中,第二监控结果用于表征应用程序未启动成功。

根据本公开的实施例,虽然应用程序容器和辅助容器是同时启动的,但是可能存在应用程序容器启动失败,而辅助程序启动成功的情况。此时,应用程序是无法正常启动的,也无法实现可用性探测新型的获取,因此,为了快速、及时地反馈应用程序不可用的信息,本公开的实施例中可以直接通过辅助容器,向监控中心上报用于表征应用程序不可用的监控结果。

在操作S520,重新启动应用程序容器和辅助容器。

根据本公开的实施例,在将应用程序不可用的第二监控结果上报至监控中心之后,还可以重新启动应用程序容器,以实现应用程序的重启,应用服务的恢复,在重启成功之后,按照前述的通过辅助容器实现的可用性的自动监控,并将监控结果自动上报至监控中心,提高应用程序的可用性,避免应用程序容器无法启动导致的服务中断。

图6示意性示出了根据本公开另一实施例的应用程序可用性的监控方法的流程图。如图6所示,该应用程序可用性监控方法600可以包括操作S610~操作S640。

在操作S610,可用性监控程序作为Sidecar辅助容器与应用程序容器一起启动。在二者都启动成功的情况下,执行操作S620。需要说明的是,可用性监控程序运行在Sidecar辅助容器中,与应用程序一起同时启动。可用性监控程序以Sidecar方式运行代理,可以为每个应用程序服务一对一的配对进行可用性监控代理。

在操作S620,定时向应用程序可用性接口发送请求。该请求用于获取应用程序自身探测得到的应用程序的可用性信息。应用程序只需暴露统一的接口,并实现自己应用服务相关的可用性信息探测即可。因为Sidecar辅助容器和应用程序服务容器运行在同一个Pod中,共享相同的网络空间,因此可用性监控程序可以与应用程序服务通信,就像在同一个容器或主机中运行的一样。

在操作S630,解析可用性信息。根据获取到的应用程序可用性信息,可用性监控程序统一解析应用程序的可用性信息,判断应用是否有可用性错误问题。

在操作S640,向监控中心上报可用性监控结果。由于可用性监控程序与应用程序服务解构,监控中心地址等相关可用性监控配置可由系统统一配置处理,因此无需每个应用程序单独配置。

通过本公开的实施例,通过Sidecar辅助容器启动可用性监控处理程序,与应用程序本身解耦,易于维护和管理,同时,通过Sidecar辅助容器的可用性监控处理程序,定时向监控中心上报可用性监控,无需应用自己编写代码实现。

图7示意性示出了根据本公开实施例的应用程序可用性的监控装置的框图。如图7所示,该应用程序可用性监控装置700可以包括容器启动模块710以及第一监控结果获得模块720。

容器启动模块710,用于响应于应用程序的启动请求,启动辅助容器和应用程序容器。在本公开中,应用程序运行在应用程序容器中,辅助容器与应用程序容器共享存储资源和网络资源。可选地,容器启动模块710例如可以用于执行图2描述的操作S210,在此不再赘述。

第一监控结果获得模块720,用于在应用程序容器和辅助容器启动成功的情况下,通过辅助容器,获得第一监控结果。在本公开中,第一监控结果用于表征应用程序运行在应用程序容器中的可用性。可选地,第一监控结果获得模块720例如可以用于执行图2描述的操作S220,在此不再赘述。

图8示意性示出了根据本公开另一实施例的应用程序可用性的监控装置的框图。如图8所示,该应用程序可用性监控装置800除了可以包括前述容器启动模块710以及第一监控结果获得模块720之外,还可以包括监控信息注册模块810。

监控信息注册模块810,用于在应用程序启动时,通过辅助容器向监控中心进行可用性监控信息的注册。可选地,监控信息注册模块810例如可以用于执行图3描述的操作S310,在此不再赘述。

作为一种可选的实施例,第一监控结果获得模块可以包括:可用性监控程序启动子模块,用于通过辅助容器,启动可用性监控程序,其中,可用性监控程序运行于辅助容器中;获取请求发送子模块,用于通过可用性监控程序,向应用程序发送获取请求,其中,获取请求用于指示获取应用程序探测到的可用性信息;可用性探测信息接收子模块,用于接收应用程序发送的可用性探测信息,其中,可用性探测信息是应用程序探测到的可用性信息;以及第一监控结果获得子模块,用于基于可用性探测信息,获得第一监控结果。

作为一种可选的实施例,第一监控结果获得子模块可以包括:可用性探测信息解析单元,用于通过可用性监控程序,统一解析可用性探测信息,以获得可用性解析结果,其中,可用性解析结果包括错误码;以及第一监控结果获得单元,用于基于可用性解析结果,获得第一监控结果。

作为一种可选的实施例,获取请求发送子模块可以包括:可用性接口连接单元,用于通过可用性监控程序,与应用程序提供的可用性接口服务建立连接;以及获取请求发送单元,用于通过可用性接口,向应用程序发送获取请求。

作为一种可选的实施例,可用性探测信息接收子模块可以用于:通过可用性接口,接收应用程序发送的可用性探测信息。

图9示意性示出了根据本公开另一实施例的应用程序可用性的监控装置的框图。如图9所示,该应用程序可用性监控装置900除了可以包括前述容器启动模块710、第一监控结果获得模块720以及监控信息注册模块810之外,还可以包括第一监控结果上报模块910,用于在第一监控结果表明应用程序不可用的情况下,通过运行于辅助容器中的可用性监控程序,将第一监控结果上报至监控中心。可选地,第一监控结果上报模块910例如可以用于执行图4描述的操作S410,在此不再赘述。

作为一种可选的实施例,将第一监控结果上报至监控中心可以包括以下至少之一:基于预设上报时间,将第一监控结果上报至监控中心;基于预设上报优先级,将第一监控结果上报至监控中心;基于预设上报数量,将第一监控结果上报至监控中心。

图10示意性示出了根据本公开另一实施例的应用程序可用性的监控装置的框图。如图10所示,该应用程序可用性监控装置1000除了可以包括前述容器启动模块710以及第一监控结果获得模块720之外,还可以包括第二监控结果上报模块1010以及容器重新启动模块1020。

第二监控结果上报模块1010,用于若应用程序容器启动失败,辅助容器启动成功,则通过辅助容器,则向监控中心上报第二监控结果。在本公开中,第二监控结果用于表征应用程序未启动成功。可选地,第二监控结果上报模块1010例如可以用于执行图5描述的操作S510,在此不再赘述。

容器重新启动模块1020,用于重新启动应用程序容器和辅助容器。可选地,容器重新启动模块1020例如可以用于执行图5描述的操作S520,在此不再赘述。

需要说明的是,应用程序可用性的监控装置部分实施例中各模块的实施方式、解决的技术问题、实现的功能、以及达到的技术效果分别与应用程序可用性的监控方法部分实施例中各对应的步骤的实施方式、解决的技术问题、实现的功能、以及达到的技术效果相同或类似,在此不再赘述。

根据本公开的实施例的模块、子模块、单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FNGA)、可编程逻辑阵列(NLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。

例如,容器启动模块、第一监控结果获得模块、监控信息注册模块、可用性监控程序启动子模块、获取请求发送子模块、可用性探测信息接收子模块、第一监控结果获得子模块、可用性探测信息解析单元、第一监控结果获得单元、可用性接口连接单元、获取请求发送单元、第一监控结果上报模块、第二监控结果上报模块以及容器重新启动模块可以合并在一个模块中实现、或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合、并在一个模块中实现。根据本公开的实施例,容器启动模块、第一监控结果获得模块、监控信息注册模块、可用性监控程序启动子模块、获取请求发送子模块、可用性探测信息接收子模块、第一监控结果获得子模块、可用性探测信息解析单元、第一监控结果获得单元、可用性接口连接单元、获取请求发送单元、第一监控结果上报模块、第二监控结果上报模块以及容器重新启动模块中的至少一个可以至少被部分地实现为硬件电路、例如现场可编程门阵列(FNGA)、可编程逻辑阵列(NLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC)、或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现、或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,容器启动模块、第一监控结果获得模块、监控信息注册模块、可用性监控程序启动子模块、获取请求发送子模块、可用性探测信息接收子模块、第一监控结果获得子模块、可用性探测信息解析单元、第一监控结果获得单元、可用性接口连接单元、获取请求发送单元、第一监控结果上报模块、第二监控结果上报模块以及容器重新启动模块中的至少一个可以至少被部分地实现为计算机程序模块、当该计算机程序模块被运行时、可以执行相应的功能。

图11示意性示出了根据本公开实施例的适于实现上文描述的应用程序可用性的监控方法的计算机可读存储介质产品的示意图。

在一些可能的实施方式中、本发明的各个方面还可以实现为一种程序产品的形式、其包括程序代码、当程序产品在设备上运行时、程序代码用于使设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施例的应用程序可用性监控方法中的前述各项操作(或步骤)。例如,电子设备可以执行如图2中所示的操作S210以及操作S220,如图3中所示的操作S310,如图4中所示的操作S410,以及如图5中所示的操作S510以及操作S520。

程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、系统或器件、或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(ENROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。

如图11所示,描述了根据本发明的实施方式的应用程序可用性的监控的程序产品1100、其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码、并可以在设备、例如个人电脑上运行。然而、本发明的程序产品不限于此、在本文件中、可读存储介质可以是任何包含或存储程序的有形介质、该程序可以被指令执行系统、系统或者器件使用或者与其结合使用。

可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号、其中承载了可读程序代码。这种传播的数据信号可以采用多种形式、包括——但不限于——电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质、该可读介质可以发送、传播或者传输用于由指令执行系统、系统或者器件使用或者与其结合使用的程序。可读介质上包含的程序代码可以用任何适当的介质传输、包括——但不限于——无线、有线、光缆、RF等等、或者上述的任意合适的组合。

可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码、程序设计语言包括面向对象的程序设计语言—诸如Java、C++等、还包括常规的过程式程序设计语言-诸如“C”、语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中、远程计算设备可以通过任意种类的网络—一包括局域网(LAA)或广域网(WAA)一连接到用户计算设备、或者、可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。

图12示意性示出了根据本公开实施例的适于实现上文描述的应用程序可用性的监控方法的电子设备的框图。图12示出的电子设备仅仅是一个示例、不应对本公开实施例的功能和使用范围带来任何限制。

如图12所示、根据本公开实施例的电子设备1200包括处理器1201、其可以根据存储在只读存储器(ROM)1202中的程序或者从存储部分1208加载到随机访问存储器(RAM)1203中的程序而执行各种适当的动作和处理。处理器1201例如可以包括通用微处理器(例如CNU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如、专用集成电路(ASIC))、等等。处理器1201还可以包括用于缓存用途的板载存储器。处理器1201可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。

在RAM 1203中、存储有电子设备1200操作所需的各种程序和数据。处理器1201、ROM 1202以及RAM 1203通过总线1204彼此相连。处理器1201通过执行ROM 1202和/或RAM1203中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意、所述程序也可以存储在除ROM 1202和RAM 1203以外的一个或多个存储器中。处理器1201也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例如图2中所示的操作S210以及操作S220,如图3中所示的操作S310,如图4中所示的操作S410,以及如图5中所示的操作S510以及操作S520。

根据本公开的实施例、电子设备1200还可以包括输入/输出(I/O)接口1205、输入/输出(I/O)接口1205也连接至总线1204。系统1200还可以包括连接至I/O接口1205的以下部件中的一项或多项:包括键盘、鼠标等的输入部分1206;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1207;包括硬盘等的存储部分1208;以及包括诸如LAA卡、调制解调器等的网络接口卡的通信部分1209。通信部分1209经由诸如因特网的网络执行通信处理。驱动器1210也根据需要连接至I/O接口1205。可拆卸介质1211、诸如磁盘、光盘、磁光盘、半导体存储器等等、根据需要安装在驱动器1210上、以便于从其上读出的计算机程序根据需要被安装入存储部分1208。

根据本公开的实施例、根据本公开实施例的方法流程可以被实现为计算机软件程序。例如、本公开的实施例包括一种计算机程序产品、其包括承载在计算机可读存储介质上的计算机程序、该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中、该计算机程序可以通过通信部分1209从网络上被下载和安装、和/或从可拆卸介质1211被安装。在该计算机程序被处理器1201执行时、执行本公开实施例的系统中限定的上述功能。根据本公开的实施例、上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。

本公开还提供了一种计算机可读存储介质、该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在、而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序、当上述一个或者多个程序被执行时、实现根据本公开实施例的文件入库方法、包括如图2中所示的操作S210以及操作S220,如图3中所示的操作S310,如图4中所示的操作S410,以及如图5中所示的操作S510以及操作S520。

根据本公开的实施例、计算机可读存储介质可以是非易失性的计算机可读存储介质、例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(ENROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中、计算机可读存储介质可以是任何包含或存储程序的有形介质、该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如、根据本公开的实施例、计算机可读存储介质可以包括上文描述的ROM 1202和/或RAM 1203和/或ROM 1202和RAM1203以外的一个或多个存储器。

附图中的流程图和框图、图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上、流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分、上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意、在有些作为替换的实现中、方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如、两个接连地表示的方框实际上可以基本并行地执行、它们有时也可以按相反的顺序执行、这依所涉及的功能而定。也要注意的是、框图或流程图中的每个方框、以及框图或流程图中的方框的组合、可以用执行规定的功能或操作的专用的基于硬件的系统来实现、或者可以用专用硬件与计算机指令的组合来实现。

本领域技术人员可以理解、本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合、即使这样的组合或结合没有明确记载于本公开中。特别地、在不脱离本公开精神和教导的情况下、本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。

以上对本公开的实施例进行了描述。但是、这些实施例仅仅是为了说明的目标、而并非为了限制本公开的范围。尽管在以上分别描述了各实施例、但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围、本领域技术人员可以做出多种替代和修改、这些替代和修改都应落在本公开的范围之内。

相关技术
  • 应用程序可用性的监控方法、装置、电子设备和介质
  • 应用程序监控方法、装置、存储介质和电子设备
技术分类

06120112554096