监控数据输出方法及装置与流程

文档序号:15614882发布日期:2018-10-09 21:07阅读:215来源:国知局

本申请涉及计算机技术领域,特别涉及一种监控数据输出方法及装置。



背景技术:

随着计算机网络技术的发展,计算机业务越来越复杂和丰富,为了保证计算机系统中各项业务的正常运行,计算机系统的稳定性和安全性变得尤为重要。根据技术人员以往的经验发现,对计算机系统中业务相关的应用进行监控,对保证计算机系统的稳定性和安全性有较大的帮助。在此情况下,提出一种监控数据输出的方法已成为本领域技术人员亟待解决的问题。



技术实现要素:

为了解决上述问题,本申请提供一种监控数据输出方法及装置。

具体地,本申请是通过如下技术方案实现的:

根据本申请实施例的第一方面,提供一种监控数据输出方法,所述方法包括:

获取目标应用的运行数据;

将所述运行数据存储至预设的存储介质中;

当接收到监控数据访问请求时,从所述预设的存储介质中获取所述监控数据访问请求所请求的运行数据,其中,所述监控数据访问请求用于请求访问所述目标应用的运行数据;

输出所述监控数据访问请求所请求的运行数据。

本申请实施例中,所述获取目标应用的运行数据,包括:

利用预先配置在目标应用中的监控功能模块,获取所述目标应用的运行数据,其中,所述监控功能模块为基于java的指标度量工具编写的监控代码。

本申请实施例中,所述将所述运行数据存储至预设的存储介质中,包括:

将所述运行数据存储至配置有分布式时序数据库的服务器中。

本申请实施例中,所述输出所述监控数据访问请求所请求的运行数据,包括:

以图表形式展示所述监控数据访问请求所请求的运行数据。

本申请实施例中,所述以图表形式展示所述监控数据访问请求所请求的运行数据,包括:

使用可视化工具,将所述监控数据访问请求所请求的运行数据以图表形式进行展示。

根据本申请实施例的第二方面,提供一种监控数据输出装置,所述装置包括:

第一获取模块,用于获取目标应用的运行数据;

存储模块,用于将所述第一获取模块获取到的运行数据存储至预设的存储介质中;

第二获取模块,用于在接收到监控数据访问请求的情况下,从所述预设的存储介质中获取所述监控数据访问请求所请求的运行数据,其中,所述监控数据访问请求用于请求访问所述目标应用的运行数据;

输出模块,用于输出所述第二获取模块获取到的运行数据。

本申请实施例中,所述第一获取模块,包括:

运行数据获取子模块,用于利用预先配置在目标应用中的监控功能模块,获取所述目标应用的运行数据,其中,所述监控功能模块为基于java的指标度量工具编写的监控代码。

本申请实施例中,所述存储模块,包括:

运行数据存储子模块,用于将所述第一获取模块获取到的运行数据存储至配置有分布式时序数据库的服务器中。

本申请实施例中,所述输出模块,包括:

运行数据输出子模块,用于以图表形式展示所述第二获取模块获取到的运行数据。

本申请实施例中,所述运行数据输出子模块,包括:

运行数据输出单元,用于使用可视化工具,将所述第二获取模块获取到的运行数据以图表形式进行展示。

根据本申请实施例的第三方面,提供一种计算机存储介质,所述存储介质中存储有程序指令,所述程序指令包括:

获取目标应用的运行数据;

将所述运行数据存储至预设的存储介质中;

当接收到监控数据访问请求时,从所述预设的存储介质中获取所述监控数据访问请求所请求的运行数据,其中,所述监控数据访问请求用于请求访问所述目标应用的运行数据;

输出所述监控数据访问请求所请求的运行数据。

本申请实施例中,在获取需要监控的应用的运行数据之后,会将该运行数据存储于预设的存储介质中,并在接收到监控数据访问请求时,输出给技术人员,以便技术人员可以根据应用的运行数据,来调整和维护计算机系统运行情况,从而保证计算机系统的稳定性和安全性。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。

图1a是本申请根据一示例性实施例示出的一种监控数据输出方法的流程图;

图1b是本申请根据一示例性实施例示出的图1a所示方法的应用场景图;

图2a是本申请根据一示例性实施例示出的另一种监控数据输出方法的流程图;

图2b是本申请根据一示例性实施例示出的图2a所示方法的一种网络结构图;

图3是本申请根据一示例性实施例示出的一种监控数据输出装置的框图;

图4是本申请根据一示例性实施例示出的另一种监控数据输出装置的框图;

图5是本申请根据一示例性实施例示出的另一种监控数据输出装置的框图;

图6是本申请根据一示例性实施例示出的另一种监控数据输出装置的框图;

图7是本申请根据一示例性实施例示出的另一种监控数据输出装置的框图;

图8是本申请根据一示例性实施例示出的一种用于监控数据输出装置的一结构示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

随着计算机网络技术的发展,计算机业务越来越复杂和丰富,为了保证计算机系统中各项业务的正常运行,计算机系统的稳定性和安全性变得尤为重要。根据技术人员以往的经验发现,对计算机系统中业务相关的应用进行监控,对保证计算机系统的稳定性和安全性有较大的帮助。在此情况下,提出一种监控数据输出的方法已成为本领域技术人员亟待解决的问题。为了解决上述问题,本申请提供了一种监控数据输出方法及装置。

下面首先对本申请提供的一种监控数据输出方法进行介绍。

如图1a所示,图1a是本申请根据一示例性实施例示出的一种监控数据输出方法的流程图,该方法可以包括以下步骤:

在步骤101中,获取目标应用的运行数据。

本申请实施例中,应用指的应用程序,目标应用指的是需要监控的应用。

在步骤102中,将目标应用的运行数据存储至预设的存储介质中。

需要说明的是,本申请提供的方法适用于服务器,本申请实施例中,预设的存储介质可以为持久化存储介质,其中,该持久化存储介质可以包括:该服务器的硬盘、或者其他服务器,本申请对此不作限定。

本申请实施例中,当持久化存储介质为其他服务器时,可以间隔一定时长,例如3分钟,将应用的运行数据汇总后发送给持久化存储介质,以减少数据传输所产生的开销。

在步骤103中,当接收到监控数据访问请求时,从预设的存储介质中获取该监控数据访问请求所请求的运行数据;其中,该监控数据访问请求用于请求访问目标应用的运行数据。

在步骤104中,输出该监控数据访问请求所请求的运行数据。

本申请一示例性应用场景中,如图1b所示,该应用场景中包括:服务器110及服务器120,其中,本申请实施例提供的监控数据输出方法应用于服务器110,服务器110中运行有应用a、应用b及应用c,应用a、应用b及应用c的业务代码中预先配置有监控代码,服务器110通过配置在应用a、应用b及应用c的业务代码中的监控代码来获取应用a、应用b及应用c的运行数据,之后每隔一段时间汇总运行数据,将汇总的运行数据发送给服务器120,服务器120将运行数据存储至本地的持久化存储介质中,当接收到监控数据访问请求时,服务器110从服务器120中获取应用的运行数据,并输出。

由上述实施例可见,该实施例中,在获取需要监控的应用的运行数据之后,会将该运行数据存储于预设的存储介质中,并在接收到监控数据访问请求时,输出给技术人员,以便技术人员可以根据应用的运行数据,来调整和维护计算机系统运行情况,从而保证计算机系统的稳定性和安全性。

如图2a所示,图2a是本申请根据一示例性实施例示出的另一种监控数据输出方法的流程图,本申请实施例中,可以提供将应用的运行状态按照时间聚合展示的方式,可视化地展示给用户,此时,该方法可以包括以下步骤:

在步骤201中,利用预先配置在目标应用中的监控功能模块,获取该目标应用的运行数据,其中,该监控功能模块为基于java的指标度量工具编写的监控代码。

本申请实施例中,监控功能模块指的用于监控应用运行的监控代码,对于目标应用,会预先将监控代码植入该目标应用的代码中,当目标应用运行时,监控代码实时抓取目标应用的运行数据。

本申请实施例中,可以采用指标度量工具metrics编写监控代码,以尽量做到将目标应用的业务代码与监控代码分离,例如目标应用为订单服务应用,当需要实时展示获取每天的订单数量时,可以编写以下监控代码:

metrics是一个给java服务的各项指标提供度量工具的包,在java代码中嵌入metrics代码,可以对业务代码的各项指标进行监控,此外,metrics能够很好地与ganlia及graphite结合,方便地提供图形化接口。

metrics支持以下五种度量类型:gauges、counters、meters、histograms和timers,其中,gauges用于统计瞬时状态的数据信息,counters维护一个计数器,可以通过inc()和dec()方法对计数器做修改,meters用于度量某个时间段的平均处理次数,histograms用于统计数据的分布情况,最大值、最小值、平均值、中位数及百分比,timers用于统计某一块代码段的执行时间以及其分布情况。

例如,如果需要收集每天的订单量,则在相应的业务代码中植入监控代码metrics.counterbyday(“ordercount”).inc();

如果需要收集1分钟、5分钟,15分钟内的平均访问量,则可以相应的业务代码中植入metrics.meter(“request”).mark();

如果需要输出发生某事件的数据,并且以直方图形式输出,则在相应的业务代码中植入metrics.histogram(“payamount”).update(payamount)。

本申请实施例中,采用metrics编写监控代码时,还可以在监控代码中加入注解,例如,如果监控一个方法的执行耗时,则可以在该方法对应的监控代码中添加注解@timing(“some_method”),监控某方法的执行次数可以添加注解@couting(“some_method”)。

在步骤202中,将目标应用的运行数据存储至配置有分布式时序数据库的服务器中。

本申请实施例中,可以采用分布式时序数据库influxdb,将目标应用的运行数据存储至influxdb中。

influxdb是一个开源分布式时序、事件和指标数据库,使用go语言编写,无需外部依赖,具有以下特性:timeseries(时间序列),即可以使用与时间有关的相关函数(如最大,最小,求和等);metrics(度量),即可以实时对大量数据进行计算;eevents(事件),即可以支持任意的事件数据。此外,提供类sql查询语句以及httpapi,拥有web操作界面,部署管理简单方便,支持高性能写,支持数据保留策略。

本申请实施例中,influxdb提供了http查询接口以及类sql的查询语法,grafanawebui可以很方便地通过http协议从influxdb中获取数据,其中,grafana是一款时序数据展现工具,它提供极为丰富的图表展现形式,支持接入influxdb数据,提供创建模板简化配置。

在步骤203中,当接收到监控数据访问请求时,从配置有分布式时序数据库的服务器中获取该监控数据访问请求所请求的运行数据;其中,该监控数据访问请求用于请求访问目标应用的运行数据。

在步骤204中,以图表形式展示该监控数据访问请求所请求的运行数据。

本申请实施例中,可以使用可视化工具,如grafana,将监控数据访问请求所请求的运行数据以图表形式进行展示。

本申请实施例中,grafana可以从influxdb中获取目标应用的运行数据,之后将获取到的运行数据以图表的形式展示。

本申请一示例性网络结构图中,如图2b所示,应用a、应用b和应用c为需要监控的应用,应用a、应用b和应用c的业务代码中均配置了metrics监控代码,metrics监控代码运行时,获取各应用的运行数据,每隔一段时长(例如3分钟)汇总获取到的运行数据,将汇总的运行数据通过http协议发动给influxdb,influxdb将接收到的应用的运行数据存储。当用户通过浏览器访问应用a、应用b或者应用c的运行数据时,grafana从influxdb获取相应的应用的运行数据,通过grafanawebui将运行数据展示给用户,此外,grafanawebui还可以从grafanasever中获取配置信息,以配置仪表盘,实时展示结果。

由上述实施例可见,该实施例中,可以通过采用指标度量工具(例如metrics)编写监控代码,可以实现较低侵入被监控的应用;通过采用时序数据库(例如influxdb)存储监控数据,可以实现数据的按照时间聚合展示;通过采用可视化工具(例如grafana)展示监控数据,从而实现多维度地展示被监控的应用的状态变化。

应当注意,尽管在附图中以特定顺序描述了本申请方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。

与前述监控数据输出方法的实施例对应,本申请还提供了监控数据输出装置的实施例。

如图3所示,图3是本申请根据一示例性实施例示出的一种监控数据输出装置的框图,所述装置可以包括:

第一获取模块310,用于获取目标应用的运行数据;

本申请实施例中,应用指的应用程序,目标应用指的是需要监控的应用。

存储模块320,用于将所述第一获取模块310获取到的运行数据存储至预设的存储介质中;

需要说明的是,本申请提供的方法适用于服务器,本申请实施例中,预设的存储介质可以为持久化存储介质,其中,该持久化存储介质可以包括:该服务器的硬盘、或者其他服务器,本申请对此不作限定。

本申请实施例中,当持久化存储介质为其他服务器时,可以间隔一定时长,例如3分钟,将应用的运行数据汇总后发送给持久化存储介质,以减少数据传输所产生的开销。

第二获取模块330,用于在接收到监控数据访问请求的情况下,从所述预设的存储介质中获取所述监控数据访问请求所请求的运行数据,其中,所述监控数据访问请求用于请求访问所述目标应用的运行数据;

输出模块340,用于输出所述第二获取模块330获取到的运行数据。

由上述实施例可见,该实施例中,在获取需要监控的应用的运行数据之后,会将该运行数据存储于预设的存储介质中,并在接收到监控数据访问请求时,输出给技术人员,以便技术人员可以根据应用的运行数据,来调整和维护计算机系统运行情况,从而保证计算机系统的稳定性和安全性。

如图4所示,图4是本申请根据一示例性实施例示出的另一种监控数据输出装置的框图,该实施例可以在上述任一装置实施例的基础上,所述第一获取模块310,可以包括:

运行数据获取子模块311,用于利用预先配置在目标应用中的监控功能模块,获取所述目标应用的运行数据,其中,所述监控功能模块为基于java的指标度量工具编写的监控代码。

本申请实施例中,监控功能模块指的用于监控应用运行的监控代码,对于目标应用,会预先将监控代码植入该目标应用的代码中,当目标应用运行时,监控代码实时抓取目标应用的运行数据。

本申请实施例中,可以采用指标度量工具metrics编写监控代码,以尽量做到将目标应用的业务代码与监控代码分离,例如目标应用为订单服务应用,当需要实时展示获取每天的订单数量时,可以编写以下监控代码:

metrics是一个给java服务的各项指标提供度量工具的包,在java代码中嵌入metrics代码,可以对业务代码的各项指标进行监控,此外,metrics能够很好地与ganlia及graphite结合,方便地提供图形化接口。

metrics支持以下五种度量类型:gauges、counters、meters、histograms和timers,其中,gauges用于统计瞬时状态的数据信息,counters维护一个计数器,可以通过inc()和dec()方法对计数器做修改,meters用于度量某个时间段的平均处理次数,histograms用于统计数据的分布情况,最大值、最小值、平均值、中位数及百分比,timers用于统计某一块代码段的执行时间以及其分布情况。

例如,如果需要收集每天的订单量,则在相应的业务代码中植入监控代码metrics.counterbyday(“ordercount”).inc();

如果需要收集1分钟、5分钟,15分钟内的平均访问量,则可以相应的业务代码中植入metrics.meter(“request”).mark();

如果需要输出发生某事件的数据,并且以直方图形式输出,则在相应的业务代码中植入metrics.histogram(“payamount”).update(payamount)。

本申请实施例中,采用metrics编写监控代码时,还可以在监控代码中加入注解,例如,如果监控一个方法的执行耗时,则可以在该方法对应的监控代码中添加注解@timing(“some_method”),监控某方法的执行次数可以添加注解@couting(“some_method”)。

如图5所示,图5是本申请根据一示例性实施例示出的另一种监控数据输出装置的框图,该实施例可以在上述任一装置实施例的基础上,所述存储模块320,可以包括:

运行数据存储子模块321,用于将所述第一获取模块310获取到的运行数据存储至配置有分布式时序数据库的服务器中。

本申请实施例中,可以采用分布式时序数据库influxdb,将目标应用的运行数据存储至influxdb中。

influxdb是一个开源分布式时序、事件和指标数据库,使用go语言编写,无需外部依赖,具有以下特性:timeseries(时间序列),即可以使用与时间有关的相关函数(如最大,最小,求和等);metrics(度量),即可以实时对大量数据进行计算;eevents(事件),即可以支持任意的事件数据。此外,提供类sql查询语句以及httpapi,拥有web操作界面,部署管理简单方便,支持高性能写,支持数据保留策略。

本申请实施例中,influxdb提供了http查询接口以及类sql的查询语法,grafanawebui可以很方便地通过http协议从influxdb中获取数据,其中,grafana是一款时序数据展现工具,它提供极为丰富的图表展现形式,支持接入influxdb数据,提供创建模板简化配置。

如图6所示,图6是本申请根据一示例性实施例示出的另一种监控数据输出装置的框图,该实施例可以在上述任一装置实施例的基础上,所述输出模块340,可以包括:

运行数据输出子模块341,用于以图表形式展示所述第二获取模块330获取到的运行数据。

如图7所示,图7是本申请根据一示例性实施例示出的另一种监控数据输出装置的框图,该实施例可以在图6所示实施例的基础上,所述运行数据输出子模块341,可以包括:

运行数据输出单元3411,用于使用可视化工具,将所述第二获取模块330获取到的运行数据以图表形式进行展示。

本申请实施例中,可以使用可视化工具,如grafana,将监控数据访问请求所请求的运行数据以图表形式进行展示。

本申请实施例中,grafana可以从influxdb中获取目标应用的运行数据,之后将获取到的运行数据以图表的形式展示。

由此可见,本申请技术方案可以通过采用指标度量工具(例如metrics)编写监控代码,可以实现较低侵入被监控的应用;通过采用时序数据库(例如influxdb)存储监控数据,可以实现数据的按照时间聚合展示;通过采用可视化工具(例如grafana)展示监控数据,从而实现多维度地展示被监控的应用的状态变化。

上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

本申请还提供了一种计算机存储介质,所述存储介质中存储有程序指令,所述程序指令包括:获取目标应用的运行数据;将所述运行数据存储至预设的存储介质中;当接收到监控数据访问请求时,从所述预设的存储介质中获取所述监控数据访问请求所请求的运行数据,其中,所述监控数据访问请求用于请求访问所述目标应用的运行数据;输出所述监控数据访问请求所请求的运行数据。

本申请可采用在一个或多个其中包含有程序代码的存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。计算机可用存储介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括但不限于:相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。

如图8所示,图8是本申请实施例根据一示例性实施例示出的一种用于监控数据输出装置800的一结构示意图。例如,装置800可以被提供为一服务器。参照图8,装置800包括处理组件822,其进一步包括一个或多个处理器,以及由存储器832所代表的存储器资源,用于存储可由处理部件822的执行的指令,例如应用程序。存储器832中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件822被配置为执行指令,以执行本申请实施例提供的监控数据输出方法,该方法包括:获取目标应用的运行数据;将所述运行数据存储至预设的存储介质中;当接收到监控数据访问请求时,从所述预设的存储介质中获取所述监控数据访问请求所请求的运行数据,其中,所述监控数据访问请求用于请求访问所述目标应用的运行数据;输出所述监控数据访问请求所请求的运行数据。

装置800还可以包括一个电源组件826被配置为执行装置800的电源管理,一个有线或无线网络接口850被配置为将装置800连接到网络,和一个输入输出(i/o)接口858。装置800可以操作基于存储在存储器832的操作系统,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm或类似。

在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器832,上述指令可由装置800的处理组件822执行以完成本申请实施例提供的上述监控数据输出方法。例如,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。

本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。

应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1