[0001]
本申请涉及但不限于微服务系统技术,尤指一种实现运维监控的方法及装置。
背景技术:[0002]
为了应对越来越多对业务并发量、延迟等非功能性的需求,采用单机部署,依赖通过垂直扩展来应对,不但成本高,而且已经逐渐显得越来越捉襟见肘;而采用分布式的方式,将系统的模块拆分后部署在不同的主机上,通过水平扩展的方式来应对这些非功能性需求,逐渐成为了业界的主流,从而进一步诞生了微服务架构理论,微服务系统发展也更加的迅猛。
[0003]
微服务架构是一项在云中部署应用和服务的新技术。微服务是以专注于单一责任与功能的小型功能区块为基础,利用模块化的方式组合出复杂的大型应用程序,各功能区块使用与语言无关的应用程序接口(api,application programming interface)集相互通信。在微服务的运行生态圈中,如图1所示,微服务系统需要对其各层的资源进行监控,包括:硬件、基础设施即服务(iaas,infrastructure-as-a-service)、容器即服务(caas,container-as-a-service)、平台即服务(paas,platform-as-a-service)和微服务自身。
[0004]
虽然微服务系统能很好的解决业务对并发量、延迟等非功能性的需求,但是,微服务系统自身运维却越来越艰难。特别地,在各种虚拟化技术引入后,微服务系统能否正常运行,更是受到了硬件、虚拟机、容器等多种资源的影响。同时,业务还需要系统有极高的可用性,如服务等级协议(sla,service-level agreement)达到99.99等,因此,如何能将微服务系统的运维做好,就显得更加的重要。
[0005]
在通信领域系统的开发中,信息技术(it,information technology)化越来越明显,各大主流设备商的电信管理运营系统采用微服务架构已经成为了主流,比如:linux基金会下,由业界主流运营商和设备商共同参与的管理和编排(mano,management and orchestration)系统即开放网络自动化平台(onap,open network automation platform),从一开始就采用微服务架构,onap操作管理器(onap operations manager)为onap中的自运维系统。
[0006]
3gpp正式确认的5g核心网将基于服务的网络架构(sba,service-based architecture)作为统一基础架构,包括六大部分:控制面服务、用户面服务、服务框架、数据服务、服务管理与编排、其他部分。其中,控制面服务和用户面服务都是由多个服务构成的微服务系统,如何能对其控制面服务和用户面服务的多个服务进行自运维将很大程度上影响整个系统的稳定。
[0007]
相关技术中,业界主流的微服务部署平台是一个开源的,用于管理云平台中多个主机上的容器化的应用。相关技术中的监控运维方案需要针对不同的运维目标种类进行相应的开发后才能进行监控运维,也就是说,如果新增加运维目标种类,需要程序员进行特定的开发,等待较长的开发周期后,才能使用开发出来的运维目标上线运维。特别地,随着虚拟化技术的不断高速发展,硬件功能软件化的趋势也越来越明显,而在大型的微服务系统
中,一个微服务会包含不同的业务指标,从某种角度来看就是一个新的运维目标种类,这样对于运维系统而言,目标种类的增加更为频繁,这样,开发周期过长的问题就更加突出了。
技术实现要素:[0008]
本申请提供一种实现运维监控的方法及装置,能够简单实现运维,缩短开发周期。
[0009]
本申请提供了一种实现运维监控的方法,包括:
[0010]
获取被监控对象实例的接入参数;
[0011]
根据被监控对象实例的信息获取被监控对象实例的运维对象模型信息;
[0012]
根据获得的运维对象模型信息和接入参数,针对运维需求对被监控对象实例进行监控。
[0013]
在一种示例性实例中,所述获取被监控对象实例的运维对象模型信息,包括:
[0014]
根据所述被监控对象实例的元信息,获取与所述被监控对象实例的元信息相同的所述运维对象模型信息。
[0015]
在一种示例性实例中,所述运维对象模型信息是对按照运维需求生成的运维对象模型编译后得到的;其中,运维对象模型包括若干个与运维需求对应的运维对象子模型。
[0016]
在一种示例性实例中,所述运维对象子模型包括以下之一或任意组合:
[0017]
元信息子模型,用于对被监控对象的基本信息进行描述;
[0018]
接入子模型,用于描述接入被监控对象对应的运维对象实例时所使用的地址和协议;
[0019]
结构子模型,用于描述被监控对象的组成结构;
[0020]
性能子模型,用于描述被监控对象的性能指标;
[0021]
告警子模型,用于描述被监控对象和其结构子模型中所描述的各个部件产生的告警相关信息;
[0022]
事件子模型,用于描述被监控对象和其结构子模型中所描述的各个部件产生的事件信息,以及事件和告警规则的关系;
[0023]
日志子模型,用于描述被监控对象和其结构子模型中所描述的各个部件产生的日志信息,以及抽取规则。
[0024]
在一种示例性实例中,所述针对运维需求对被监控对象实例进行监控包括:运维对象实例接入;
[0025]
所述针对运维需求对被监控对象实例进行监控,还包括以下之一或任意组合:
[0026]
运维对象实例性能采集、运维对象告警处理、运维对象实例事件处理、运维对象实例日志采集。
[0027]
本申请还提供了一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令用于执行上述任一项所述的实现运维监控的方法。
[0028]
本神情又提供了一种实现运维监控的装置,包括处理器、存储器;其中,存储器上存储有可在处理器上运行的计算机程序:用于执行上述任一项所述的实现运维监控的方法的步骤。
[0029]
本申请再提供了一种实现运维监控的装置,包括:第一获取模块、第二获取模块和处理模块;其中,
[0030]
第一获取模块,用于获取被监控对象实例的接入参数;
[0031]
第二获取模块,用于根据被监控对象实例的信息获取被监控对象实例的运维对象模型信息;
[0032]
处理模块,用于根据获得的运维对象模型信息和接入参数,针对运维需求对被监控对象实例进行监控。
[0033]
在一种示例性实例中,所述维对象模型信息是对按照运维需求生成的运维对象模型编译后得到的,运维对象模型包括若干个与运维需求对应的运维对象子模型。
[0034]
在一种示例性实例中,所述运维对象子模型包括以下之一或任意组合:
[0035]
元信息子模型,用于对被监控对象的基本信息进行描述;
[0036]
接入子模型,用于描述接入被监控对象对应的运维对象实例时所使用的地址和协议;
[0037]
结构子模型,用于描述被监控对象的组成结构;
[0038]
性能子模型,用于描述被监控对象的性能指标;
[0039]
告警子模型,用于描述被监控对象和其结构子模型中所描述的各个部件产生的告警相关信息;
[0040]
事件子模型,用于描述被监控对象和其结构子模型中所描述的各个部件产生的事件信息,以及事件和告警规则的关系;
[0041]
日志子模型,用于描述被监控对象和其结构子模型中所描述的各个部件产生的日志信息,以及抽取规则。
[0042]
在一种示例性实例中,处理模块中的针对运维需求对被监控对象实例进行监控包括但不限于以下之一或任意组合:
[0043]
运维对象实例接入、运维对象实例性能采集、运维对象告警处理、运维对象实例事件处理、运维对象实例日志采集。
[0044]
本申请提供的实现运维监控的方法,采用模型驱动的方式,通过模型设计器和代码自动生成技术,实现了快速接入新增目标运维对象到维护工作台中。在整个过程中,直接由运维人员操作完成,不再需要程序员进行特定的开发,从而快速实现了对微服务依赖的各层资源对象的监控。
[0045]
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
[0046]
附图用来提供对本申请技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本申请的技术方案,并不构成对本申请技术方案的限制。
[0047]
图1为本申请实现运维监控的方法的流程图;
[0048]
图2为本申请实现运维监控的方法的流程图;
[0049]
图3为本申请设计器ui界面实施例的示意图;
[0050]
图4为本申请运维对象模型示意图;
[0051]
图5为本申请运维对象模型、运维对象模型包括的各子模型与工作台中组件的关
系示意图;
[0052]
图6为本申请第一实施例中主机模型的示意图;
[0053]
图7为本申请第二实施例中消息中间件模型的示意图;
[0054]
图8为本申请第三实施例中微服务模型的示意图;
[0055]
图9为本申请第四实施例中微服务模型的示意图;
[0056]
图10为本申请实现运维监控的装置的组成结构示意图。
具体实施方式
[0057]
在本申请一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
[0058]
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
[0059]
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0060]
为使本申请的目的、技术方案和优点更加清楚明白,下文中将结合附图对本申请的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
[0061]
图2为本申请实现运维监控的方法的流程图,如图2所示,包括:
[0062]
步骤200:获取被监控对象实例的接入参数。
[0063]
在一种示例性实例中,可以通过工作台提供的界面录入被监控对象实例即被监控的运维对象实例的接入参数。
[0064]
在一种示例性实例中,被监控对象实例的接入参数可以包括:
[0065]
比如:新主机实例的ip地址和监听端口;再如:消息中间件实例的ip地址和监听端口;又如:用户登录控制微服务的服务名;等等。
[0066]
步骤201:根据被监控对象实例的信息获取被监控对象实例的运维对象模型信息。
[0067]
在一种示例性实例中,本步骤可以包括:
[0068]
根据被监控对象实例的元信息如类型、名称等,获取与被监控对象实例的元信息相同的运维对象模型的运维对象模型信息。
[0069]
在一种示例性实例中,本步骤之前还包括:
[0070]
按照运维需求生成运维对象模型并编译为运维对象模型信息,其中,运维对象模型包括若干个与运维需求对应的运维对象子模型。
[0071]
从运维的角度来看,主要关注运维对象的性能的指标、产生的告警、内部发生的事
件、日志运行所产生的日志等,而运维对象从组成结构上看可以看作是由部件所构成,性能指标、告警、事件和日志都与这些部件相关,因此,本申请发明人认为,对于自运维系统来说,也就是要处理一个个运维对象的性能指标、告警、事件和日志,并管理运维对象实例和构成运维对象实例的部件。在一种示例性实例中,运维对象子模型包括但不限于以下之一或任意组合:
[0072]
元信息子模型、接入子模型、结构子模型、性能子模型、告警子模型、事件子模型、日志子模型。
[0073]
在一种示例性实例中,元信息子模型,用于对运维对象即被监控对象的基本信息进行描述,比如:如果被监控的运维对象是服务器,那么,在元信息子模型中会描述服务器的主机型号、生产厂家、日期等信息;再如:如果被监控的运维对象是微服务,那么,在元信息子模型中会描述微服务名、开发人员、功能等信息。在一种示例性实例中,这些描述信息可以保存在扩展信息字段中。
[0074]
在一种示例性实例中,接入子模型,用于描述接入被监控的运维对象即被监控对象对应的运维对象实例时所使用的地址和协议。在一种示例性实例中,在协议部分,会根据不同的协议要求录入相关参数和协议特定的定义文件。
[0075]
在一种示例性实例中,结构子模型,用于描述被监控的运维对象即被监控对象的组成结构,比如:如果被监控的运维对象是服务器,那么,会描述服务器中包括的cpu、内存、磁盘、网卡等信息;再如:如果被监控的运维对象是微服务,那么,会描述构成微服务的进程信息。运维对象的性能指标、告警、事件和日志等信息都会关联到运维对象的结构组件上。
[0076]
在一种示例性实例中,性能子模型,用于描述运维对象即被监控对象的性能指标,比如:如果被监控的运维对象是服务器,其监控指标可以包括如:cpu利用率、内存空闲率、磁盘io饱和度等。这些性能指标会关联到运维对象如服务器和运维对象的结构子模型中描述的各个部件上。
[0077]
在一种示例性实例中,告警子模型,用于描述运维对象即被监控对象和其结构子模型中所描述的各个部件可能产生的告警、及告警码、触发原因、解决手段等告警相关信息。
[0078]
在一种示例性实例中,事件子模型,用于描述运维对象即被监控对象和其结构子模型中所描述的各个部件可能产生的事件信息,以及事件和告警规则的关系。这些关系会使用特定的脚本语言(比如可以事先由运维人员设置)来描述,这样,在后续执行时,会通过执行这些脚本语言获取到特定的信息。
[0079]
在一种示例性实例中,日志子模型,用于描述运维对象即被监控对象和其结构子模型中所描述的各个部件可能产生的日志信息,以及抽取规则。这样,可以从日志中获取到指标数据和告警信息,这些分析规则和转换规可以采用脚本语言来描述,这样,在后续执行时,可以通过执行这些脚本语言来完成相关的处理。
[0080]
在一种示例性实例中,按照运维需求生成运维对象模型并编译为运维对象模型信息,包括:
[0081]
首先,获取表示目标运维对象的组件、组成目标运维对象的部件,以及需要监控的功能组件并关联功能组件和部件;
[0082]
然后,获取组件、部件和功能组件的属性信息,以生成运维对象模型;
[0083]
最后,对运维对象模型进行解析,生成运维对象模型信息。
[0084]
在一种示例性实例中,如图3所示,预先在设计器前端为运维人员提供ui操作界面。获取表示目标运维对象的组件、组成目标运维对象的部件,以及需要监控的功能组件并关联功能组件和部件,可以包括:
[0085]
获取运维人员在设计器界面的组件选择区域选择的代表目标运维对象(即图3中的监控目标)的组件如服务器、中间件、微服务等,并在设计器的属性编辑区域输入目标运维对象的元信息;
[0086]
获取运维人员在设计器界面的组件选择区域选择的部件如服务器的cpu、内存等,并且将选择出的部件拖拉到模型设计区域,成为目标运维对象的一个组成部件,重复执行拖拉动作,直至将组件的所有部件都放置在模型设计区域;
[0087]
获取运维人员根据运维需求从设计器的组件选择区域选择的功能组件如告警规则,性能计数器、事件、日志等,获取运维人员将功能组件拖拉到模型设计区域并关联到部件上,获取运维人员的重复执行拖拉动作,直至将需要的功能组件放置在模型设计区域并与部件关联。
[0088]
在一种示例性实例中,获取组件、部件和功能组件的属性信息,以生成运维对象模型,可以包括:
[0089]
获取运维人员在模型设计区域中选中的某个功能组件,获取运维人员在属性编辑区域对功能组件进行的配置,获取运维人员重复执行对功能组件的配置,直至完成所有功能组件的配置得到运维对象模型,如图4所示;如图3所示,当获取运维人员点击“保存”按钮的指令,对运维对象模型进行校验后存储在设计器的业务服务器中。这里,校验主要包括但不限于如:对运维对象模型中填写的属性值的合法性进行校验,比如对于属性要求是数字型的属性值,如果填入字符串,那么校验就会报错。
[0090]
在运维对象模型中描述了运维对象相关方面的信息,并保存在结构化的文件中,比如:xml,json文件。当运维人员点击“编译”按钮时,这些文件将会被作为模型编译器的输入,从而生成如工作台界面的ui插件,代码组件包和配置文件等信息。在一种示例性实例中,生成的运维对象模型信息包括但不限于如:工作台前端代码、工作台后端组件包、相关的配置文件等。
[0091]
在一种示例性实例中,如图5所示,对运维对象模型进行解析,生成运维对象模型信息,可以包括:
[0092]
元信息子模型的信息被转换到工作台的统一业务层的资产模块中,并且提供查询的接口;接入子模型的信息被转换到工作台的统一业务层的接入模块和抽象接入层中,以提供接入运维对象实例的能力;结构子模型的信息被转换到工作台的统一业务层的资源模块中,并且提供查询的接口;性能子模型的相关性能指标信息转换到工作台的统一业务层的性能模块中,生成的相关性能指标的采集、分析、存储、查询等业务逻辑的代码会以插件的方式加入到统一业务层的性能模块中;告警子模型的告警规则信息被转换到工作台的统一业务层的性能模块中,生成的告警采集、分析、存储、查询等业务逻辑的代码会以插件的方式加入到统一业务层的告警模块中;事件子模型的事件规则等信息被转换到工作台的统一业务层的事件模块中,生成的事件采集、分析、存储、查询等业务逻辑的代码会以插件的方式加入到统一业务层的事件模块中;日志子模型中相关日志采集策略信息转换到工作台
的统一业务层的日志模块中,生成的相关日志指标的采集、分析、存储、查询等业务逻辑的代码会以插件的方式加入到统一业务层的事件模块中。并且,各个子模型中,也会生成工作台ui的界面插件,以使得在运维的过程中,运维人员可以通过ui界面获取相关的信息。
[0093]
步骤202:根据获得的运维对象模型信息和接入参数,针对运维需求对被监控对象实例进行监控。
[0094]
在一种示例性实例中,针对运维需求对被监控对象实例进行监控至少包括:运维对象实例接入;针对运维需求对被监控对象实例进行监控,还包括但不限于以下之一或任意组合:
[0095]
运维对象实例性能采集、运维对象告警处理、运维对象实例事件处理、运维对象实例日志采集等。
[0096]
在一种示例性实例中,运维对象实例接入包括:
[0097]
根据获得的运维对象模型信息中的工作台界面的ui插件,在工作台中展现该运维对象类型的接入界面,并获取运维人员通过该接入界面录入该被监控对象实例的接入参数和安全信息;当获取工作台中的“接入”按钮被点击后,将连接指令下发到工作台的基础服务层;工作台的基础服务层根据运维对象模型生成校验代码,对接入参数进行校验,将相关参数(接入相关信息,如:目标的ip地址、端口,用于鉴权的用户名和密码等)发送到工作台的抽象接入层;
[0098]
工作台的抽象接入层根据运维对象模型生成的转换代码,对接入参数进行转换,并根据运维对象模型生成编排代码,编排接入流程;抽象接入层根据编排后的接入流程,调用接入协议层相关代码,与被监控对象实例进行交互;如果抽象接入层编排的接入流程顺利完成,则实现了运维对象实例的接入,结束本流程,否则,抽象接入层将失败的原因通过基础服务层,返回到工作台的界面,由运维人员决定下一步的操作。
[0099]
在一种示例性实例中,如果运维对象模型信息中包括有运维对象实例性能采集的功能组件,运维对象实例性能采集包括:
[0100]
当运维对象实例被接入,工作台的基础服务中的性能采集模块接收到相应的通知消息,性能采集模块根据通知消息的内容,找到运维对象模型中性能子模型的代码和配置;基础服务中的性能采集模块根据运维对象模型信息生成性能监控任务的配置,在基础服务中的性能采集模块创建相关的性能采集任务,并设定任务的执行周期,编排性能数据采集的流程;
[0101]
当性能采集任务被触发如定时触发时,通过基础服务中的资源模块获取需要被采集的运维对象实例的信息;性能模块根据资源实例的数据并发启动多个运维对象实例的性能数据采集流程;在每一个性能采集的流程中,会将采集操作指令和相关参数发送到工作台的抽象接入层中;抽象接入层将对下发的参数进行转换,并且编排采集步骤;抽象接入层根据参数和采集步骤,调用协议接入层的代码,将其转换会具体的协议请求发送到运维对象实例;
[0102]
获取运维对象实例返回的性能指标后,这些性能指标将被返回给基础服务中的性能采集模块进行保存;而工作台的展示界面可以通过基础服务中的性能模块的接口,在界面上通过如图表等方式展示这些采集到的数据。
[0103]
在一种示例性实例中,如果运维对象模型信息中包括有运维对象告警处理的功能
组件,运维对象告警处理包括:
[0104]
当运维对象实例被接入,工作台的基础服务中的告警模块接收到相应通知,根据运维对象模型信息生成告警配置代码,通过抽象接入层和协议接入层,在运维对象实例上设置告警上报的目的地址;这样,当运维对象实例发生告警后,相关告警会主动上报到工作台的协议接入层;
[0105]
在工作台的协议接入层对其告警信息转换后,抽象接入层会调用根据运维对象模型信息生成的监听器,将告警传递给抽象接入层;在抽象接入层接收到告警后,根据运维对象模型信息生成的告警处理步骤,对告警进行如去重、抑制、过滤等处理,之后再调用基础服务层的告警模块根据运维对象模型生成的监听器代码,将告警上报得到基础服务层的告警模块;基础服务层的告警模块根据由运维对象模型信息生成的告警流水线对告警进行如关联性分析、根因分析等,并将处理后的结果保存在告警模块中;
[0106]
工作台中基础服务层的告警模块在对上报告警流程处理完成后,会调用推送接口,将告警发送到工作台的展示界面中展示,并通知运维人员进行相关的处理操作。
[0107]
在一种示例性实例中,如果运维对象模型信息中包括有运维对象实例事件处理,运维对象实例事件处理包括:
[0108]
当运维对象实例被接入,工作台的基础服务中的事件模块接收到相应通知,根据运维对象模型信息生成事件配置代码,通过抽象接入层和协议接入层,在运维对象实例上设置事件上报的目的地址;这样,当运维对象实例在运行中产生事件,会主动将事件上报到工作台的协议接入层;
[0109]
在工作台的协议接入层对其事件信息转换后,调用抽象接入层根据运维对象模型信息生成的监听器,将事件传递给抽象接入层;在抽象接入层接收到事件后,根据运维对象模型信息生成的事件处理步骤,判断事件是否需要转换成告警,如果需要转换成告警,在协议接入层调用基础服务层根据运维对象模型信息生成的监听器,将告警上报到基础服务层的告警模块,基础服务层的告警模块根据由运维对象模型信息生成的告警流水线对告警进行如关联性分析、根因分析等,并将处理后的结果保存在告警模块中;如果不需要转换成告警,在协议接入层调用基础服务层根据运维对象模型信息生成的监听器,将事件上报到基础服务层的事件模块,并保存在事件模块中;
[0110]
基础服务层的事件模块调用推送接口,将事件发送到工作台的展示界面中展示,并通知运维人员进行相关的处理操作。
[0111]
在一种示例性实例中,如果运维对象模型信息中包括有运维对象实例日志采集,运维对象实例日志采集包括:
[0112]
当运维对象实例被接入,工作台的基础服务中的日志采集模块会接收到相应的通知消息,日志采集模块根据通知消息的内容,找到运维对象模型中的日志子模型代码和配置;基础服务中的日志采集模块根据运维对象模型信息生成日志采集任务的配置,在基础服务中的日志采集模块创建相关的日志采集任务,并设定任务的执行周期,编排日志数据采集的流程;
[0113]
当日志采集任务被触发如周期性触发时,通过基础服务中的资源模块获取需要被采集的资源实例的信息;日志模块将根据资源实例的数据并发启动多个运维对象实例的日志数据采集流程;在每一个日志采集的流程中,会将采集操作指令和相关参数发送到工作
台的抽象接入层中;抽象接入层将对下发的参数进行转换,并编排采集步骤;抽象接入层根据参数和采集步骤,调用协议接入层的代码,将其转换为具体的协议请求发送到运维对象实例;
[0114]
获取运维对象实例返回的日志后,这些指标将被返回给基础服务中的日志采集模块进行保存;而工作台的展示界面可以通过基础服务中的日志模块的接口,在界面上展示这些采集到的日志。
[0115]
本申请提供的实现运维监控的方法,采用模型驱动的方式,通过模型设计器和代码自动生成技术,实现了快速接入新增目标运维对象到维护工作台中。在整个过程中,直接由运维人员操作完成,不再需要程序员进行特定的开发,从而快速实现了对微服务依赖的各层资源对象的监控。
[0116]
在一种示例性实例中,对于不同的运维对象实例,各个子系统对其处理方式和流程都大致都是相同的,因此,通过本申请建立运维对象模型,将差异性封装到运维对象模型中,这样,运维人员只要设计不同的运维对象模型,就能实现对不同运维对象实例进行运维。
[0117]
特别地,在一种示例性实例中,对于微服务的运维,通过本申请对微服务本身和依赖的资源进行建模,快速的实现了接入其关注的告警、性能等指标,从而实现了将运维对象实例快速接入到运维工作平台中。
[0118]
本发明实施例还提供一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令用于执行上述任一项所述的实现运维监控的方法。
[0119]
本发明实施例还提供一种实现运维监控的装置,包括处理器、存储器;其中,存储器上存储有可在处理器上运行的计算机程序:用于执行上述任一项所述的实现运维监控的方法的步骤。
[0120]
下面结合实施例对本申请实现运维监控的方法进行详细描述。
[0121]
第一实施例,以某企业微服务系统需要硬件扩容,新增加一批相同型号的主机用于部署扩容后的程序实例,并需要对这些主机运行时的cpu、内存、磁盘和网络的运行指标进行监控以及早发现问题的隐患为例。
[0122]
新主机的构成和相关的硬件配置都会有所不同,微服务系统中的相关微服务组件运行到其上后,运维必然要求对其进行监控维护。按照本申请提供的实现运维监控的方法,在模型设计阶段,运维人员只需使用设计器实现对新主机模型的设计,第一实施例中,如图6所示,作为运维对象模型的主机模块包括接入子模型、结构子模型和性能子模型,主机模型。
[0123]
当设计器获得运维人员点击保存按钮的动作,保存主机模型,当设计器获得运维人员点击编译按钮的动作,主机模型被下发到模型编译器进行编译,完成编译后,将生成的新主机的接入代码、结构代码、性能处理代码,以及ui相关界面发送到工作台以激活生效;
[0124]
如果获取到运维人员在工作台界面上录入运维任务的新主机实例的ip地址和监听端口,工作台中基础服务的性能模块得到有新的主机被接入的通知信息,根据新接入主机的类型,查询到新接入主机的运维对象模型即图6所示的主机模型;
[0125]
基础服务的性能模块根据获取的模型代码和新主机实例的接入信息,创建了性能指标的采集任务;性能指标的采集任务周期性地被执行,从新主机实例中获取到cpu、内存、
磁盘和网络的相关指标并保存;
[0126]
运维人员通过工作台ui界面显示的、通过性能指标数据绘制的曲线图,可以查看新主机性能的变化趋势,从而为及早发现问题提供了保障。
[0127]
第二实施例,在微服务架构中,为了完成各种不同的业务逻辑往往需要使用各种中间件,而每种中间件的监控方式各有区别。本实施例以某运营商的网管系统采用微服务架构,并需要引入新的消息队列中间件,并对该中间件产生的告警通过snmp trap进行上报,以使运维人员在控制台上对其进行监控为例。
[0128]
按照本申请提供的实现运维监控的方法,在模型设计阶段,运维人员只需使用设计器实现对新消息中间件的设计,第二实施例中,如图7所示,作为运维对象模型的新的消息队列模型包括接入子模型、子结构模型和告警子模型。
[0129]
当设计器获得运维人员点击保存按钮的动作,保存消息队列模型,当设计器获得运维人员点击编译按钮的动作,新消息队列模型被下发到模型编译器进行编译,编译完成后,将生成的新消息中间件的接入代码、结构代码、告警处理代码,以及ui相关界面发送到工作台以激活生效;
[0130]
如果获取到运维人员在工作台界面上录入消息中间件实例的ip地址和监听端口,工作台中基础服务的接入模块完成对新的消息中间件实例的接入后,基础服务的的告警模块会接收到相关通知消息,以使基础服务层的告警模块根据通知消息中的信息,查询到当前运维对象模型信息即该新消息队列模型信息,并通过分析新消息队列模型信息获得其告警上报的协议是snmp,基础服务层的告警模块通过抽象接入层和协议层,使用snmp的set指令向新的中间件服务器发送配置指令,配置snmp trap的上报地址给工作台;
[0131]
当新的消息中间件的告警被上报到工作台后,经过协议层编解码处理后,将被上传到抽象接入层;抽象接入层对告警进行去重、抑制、过滤等处理后,调用基础服务层的告警模块根据运维对象模型信息即新消息队列模型信息生成的监听器代码,将告警上报到基础服务层的告警模块;
[0132]
基础服务层的告警模块根据由运维对象模型信息即新消息队列模型信息生成的告警流水线对告警进行如关联性分析、根因分析,并将处理后的结果保存在告警模块中;基础服务层的告警模块会将这些告警推送到根据新消息中间件模型信息生成的界面以展示给运维人员。
[0133]
第三实施例,对于电商系统的稳定运行,监控当前系统中登录用户的数目是保证系统稳定运行的一个很重要的指标,当发现登录用户数超过一定限制后,需要及时通知到运维人员。第三实施例以某电商网站需要对当前登录到系统中用户数进行监控,以防止系统出现超载的情况为例。按照本申请提供的实现运维监控的方法,在模型设计阶段,运维人员只需使用设计器,修改已有的用户登录控制模块的微服务模型,增加登录用户数的性能指标,微服务模型如图8所示。
[0134]
当设计器获得运维人员点击保存按钮的动作,保存微服务模型,当设计器获得运维人员点击编译按钮的动作,微服务模型被下发到模型编译器进行编译,编译完成后,将生成针对当前微服务的接入代码、结构代码、性能处理代码,以及ui相关界面并发送到工作台以激活生效;
[0135]
如果获取到运维人员在工作台界面上录入用户登录控制微服务的服务名,工作台
中基础服务的性能模块会得到新的微服务被接入的通知信息,基础服务的性能模块可以根据通知消息的微服务名查询到微服务模型;基础服务的性能模块根据获取到的模型代码和微服务名信息,创建性能指标的采集任务;
[0136]
性能指标的采集任务周期性地被执行,从微服务的接口获取该微服务的登录用户数;基础服务中的性能模块对采集到的登录用户数进行累加并保存。这样,运维人员通过工作台ui界面显示的、通过登录用户数所绘制的曲线图,可以查看登录用户数的变化趋势,从而为及早发现问题提供了保障。
[0137]
第四实施例,通过日志挖掘的方式来分析系统,发现业务中隐藏的规律,是电商经常采用的手段,而且,分析师经常会需要从不同的维度分析,以分析不同的业务产生的日志。本实施例以某电商采用微服务架构,需要对订单系统的数据进行全方面的数据挖掘分析为例,这样需要收集订单子系统中各个微服务的产生的日志。按照本申请提供的实现运维监控的方法,在模型设计阶段,运维人员只需使用设计器,修改已有的订单系统中相关的微服务模型,增加日志子模型信息,微服务模型如图9所示。
[0138]
当设计器获得运维人员点击保存按钮的动作,保存微服务模型,当设计器获得运维人员点击编译按钮的动作,微服务模型被下发到模型编译器进行编译,编译完成后,将生成针对当前微服务的接入代码、结构代码、日志处理代码,以及ui相关界面并发送到工作台以激活生效;
[0139]
如果获取到运维人员在工作台界面上录入用户登录控制微服务的服务名,工作台中基础服务的日志模块会得到新的微服务被接入的通知信息,基础服务的日志模块根据新的微服务名查询到微服务模型;
[0140]
工作台中基础服务的日志模块根据获取到的模型代码和微服务名信息创建日志的采集任务;日志指标的采集任务周期性地被执行,以从微服务的接口获取此微服务的日志;基础服务中的日志指模块将采集到日志存放到指定的存储空间。这样,运维人员可以利用工作台对采集的日志进行分析,或者将日志导入到第三方系统中进行分析。
[0141]
图10为本申请实现运维监控的装置的组成结构示意图,如图10所示,至少包括:第一获取模块、第二获取模块和处理模块;其中,
[0142]
第一获取模块,用于获取被监控对象实例的接入参数;
[0143]
第二获取模块,用于根据被监控对象实例的信息获取被监控对象实例的运维对象模型信息;
[0144]
处理模块,用于根据获得的运维对象模型信息和接入参数,针对运维需求对被监控对象实例进行监控。
[0145]
在一种示例性实例中,针对运维需求对被监控对象实例进行监控包括但不限于以下之一或任意组合:
[0146]
运维对象实例接入、运维对象实例性能采集、运维对象告警处理、运维对象实例事件处理、运维对象实例日志采集等。
[0147]
在一种示例性实例中,运维对象模型是按照运维需求生成的并被编译为运维对象模型信息,运维对象模型包括若干个与运维需求对应的运维对象子模型。
[0148]
在一种示例性实例中,运维对象子模型包括但不限于以下之一或任意组合:
[0149]
元信息子模型、接入子模型、结构子模型、性能子模型、告警子模型、事件子模型、
日志子模型。
[0150]
在一种示例性实例中,元信息子模型,用于对运维对象的基本信息进行描述。
[0151]
在一种示例性实例中,接入子模型,用于描述接入被监控的运维对象对应的运维对象实例时所使用的地址和协议。
[0152]
在一种示例性实例中,结构子模型,用于描述被监控的运维对象的组成结构。
[0153]
在一种示例性实例中,性能子模型,用于描述运维对象的性能指标。
[0154]
在一种示例性实例中,告警子模型,用于描述运维对象和其结构子模型中所描述的各个部件可能产生的告警、及告警码、触发原因、解决手段等信息。
[0155]
在一种示例性实例中,事件子模型,用于描述运维对象和其结构子模型中所描述的各个部件可能产生的事件信息,以及事件和告警规则的关系。
[0156]
在一种示例性实例中,日志子模型,用于描述运维对象和其结构子模型中所描述的各个部件可能产生的日志信息,以及抽取规则。
[0157]
以上所述,仅为本发明的较佳实例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。