一种函数内存占用监控方法、装置及电子设备与流程

文档序号:26360776发布日期:2021-08-20 20:37阅读:95来源:国知局
一种函数内存占用监控方法、装置及电子设备与流程

本发明涉及计算机资源监控技术领域,具体涉及一种函数内存占用监控方法、装置及电子设备。



背景技术:

时序数据库承载着对于物联网和未来应用监控市场的未来,作为业内排名第一的时序数据库influxdb,其在国内和国际都拥有了大量的用户。

pprof是golang提供的强大的代码性能分析工具,能够非常方便的监控代码运行性能。性能分析可以采用命令行方式,同时也提供直观的http可视化方式。现有技术中,对于应用程序的内存占用监控通常采用基于pprof的全局内存占用监控,该方案存在以下缺点:1、监控粒度太大。2、不能持续监控。



技术实现要素:

本发明的一个目的是提供一种函数资源占用监控方法,解决现有的全局资源占用监控方案存在的监粒度太大、不能持续监控的问题,提高资源占用监控的效率。

为了达到上述目的,本发明的实施例提供了一种函数资源占用监控方法,包括:查询应用程序的资源占用信息;收所述应用程序返回的所述资源占用信息;抽取指定函数的资源占用数据,并将所述函数的资源占用数据写入数据库,其中,所述数据库接收资源占用查询请求并返回查询结果。

进一步地,所述资源包括内存和/或cpu。

进一步地,所述资源占用查询请求由可视化工具发起,所述可视化工具还展现所述查询结果。

进一步地,在发起查询请求之前,所述方法还包括:配置所述可视化工具的参数。其中,所述参数包括:数据库的地址、通讯协议、可视化工具显示的内容。

进一步地,所述可视化工具根据预设置的配置来定时发送查询请求,或者,所述可视化工具根据用户的操作来发送查询请求。

进一步地,抽取指定函数的资源占用数据后,所述方法还包括:将所述资源占用数据的格式转换为与所述数据库相对应的存储格式。

进一步地,所述方法应用于分析工具中,所述分析工具为pprof。

进一步地,所述可视化工具为grafana,所述数据库为时序数据库,具体地,所述时序数据库为influxdb。

本发明实施例还提供了一种函数资源占用监控装置,包括:查询模块,用于查询应用程序的资源占用信息;接收模块,用于接收所述应用程序返回的所述资源占用信息;抽取模块,用于抽取指定函数的资源占用数据;写入模块,用于将所述函数的资源占用数据写入时序数据库,其中,所述数据库接收资源占用查询请求并返回查询结果。

进一步地,所述装置还包括:发起模块,用于向数据库发送查询请求,其中,所述数据库根据所述查询请求返回查询结果;展现模块,用于展现所述查询结果。

进一步地,所述资源包括内存和/或cpu。

进一步地,所述资源占用查询请求由可视化工具发起,所述可视化工具还展现所述查询结果。

进一步地,所述装置还包括配置模块,用于配置发起模块的参数。其中,所述参数包括:数据库的地址、通讯协议、展现模块显示的内容。

进一步地,所述发起模块根据预设置的配置来定时发送查询请求,或者,所述发起模块根据用户的操作来发送查询请求。

进一步地,所述装置还包括转换模块,用于在抽取指定函数的资源占用数据后,将所述资源占用数据的格式转换为与所述数据库相对应的存储格式。

进一步地,所述装置位于分析工具中,所述分析工具为pprof。

进一步地,所述可视化工具为grafana,所述数据库为时序数据库,具体地,所述时序数据库为influxdb。

本发明实施例还提供了一种电子设备,所述设备包括:

存储装置;

一个或多个处理器;

其中,存储装置用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现前述的函数资源占用监控方法。

本发明实施例还提供了一种计算机程序产品,包括计算机程序指令,当所述指令由处理器执行时,用于实现前述的函数资源占用监控方法。

本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序被执行时,实现前述的函数资源占用监控方法。

本发明的有益效果是:本发明利用分析工具并通过对于指定函数的资源占用跟踪分析将分析结果写入时序数据库,并通过结合可视化工具的图形展示,实现了函数级别的内存占用可视化持续分析,突破了之前的方案只能做应用程序级别资源占用情况分析的弊端。在得到关注的函数集合之后,可以进一步持续跟踪这些函数使用资源的变化,从而实现了持续的监控。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例一的方法流程图。

图2为本发明实施例二的方法流程图。

图3为本发明实施例三的方法流程图。

图4为本发明实施例四的方法流程图。

图5为本发明实施例五的装置的框图。

图6为本发明实施例六的系统的框图。

图7为本发明实施例七的系统的框图。

图8为本发明实施例八的系统的框图。

具体实施方式

为了便于本领域普通技术人员理解和实施本发明,下面结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一

参阅图1,本发明实施例一提供一种函数资源占用监控方法,包括:

查询应用程序的资源占用信息。

接收所述应用程序返回的所述资源占用信息。

抽取指定函数的资源占用数据,并将所述函数的资源占用数据写入数据库,其中,所述数据库接收资源占用查询请求并返回查询结果。

实施例一的函数资源占用监控方法可用于诸如pprof之类的分析工具中,其中,所述资源包括内存和/或cpu。

实施例二

参阅图2,本发明实施例二提供一种函数资源占用监控方法,包括:

查询应用程序的资源占用信息,其中,所述资源包括内存和/或cpu。

接收所述应用程序返回的所述资源占用信息。

抽取指定函数的资源占用数据。

将所述资源占用数据的格式转换为与所述数据库相对应的存储格式。

将所述函数的资源占用数据写入数据库。

所述数据库接收可视化工具发起的资源占用查询请求并返回查询结果,所述可视化工具根据预设置的配置来定时发送查询请求,或者,所述可视化工具根据用户的操作来发送查询请求。

所述可视化工具展现所述查询结果。

实施例三

参阅图3,本发明实施例三提供一种函数资源占用监控方法,包括:

查询应用程序的资源占用信息,其中,所述资源包括内存和/或cpu。

接收所述应用程序返回的所述资源占用信息。

抽取指定函数的资源占用数据。

将所述资源占用数据的格式转换为与所述数据库相对应的存储格式。

将所述函数的资源占用数据写入数据库。

配置可视化工具的参数,其中,所述参数包括:数据库的地址、通讯协议、可视化工具显示的内容。

所述数据库接收可视化工具发起的资源占用查询请求并返回查询结果,所述可视化工具根据预设置的配置来定时发送查询请求,或者,所述可视化工具根据用户的操作来发送查询请求。

所述可视化工具展现所述查询结果。

实施例四

参阅图4,本发明实施例四提供了一种函数资源占用监控方法,所述资源以内存为例进行说明。所述方法包括以下步骤:

步骤s401、pprof分析工具通过http接口查询查询go应用程序的堆(heap)内存占用信息。

步骤s402、ppfof分析工具接收所述go应用程序返回的heap内存占用信息。

步骤s403、抽取指定函数的资源占用数据,并将所述资源占用数据的格式转换为与所述数据库相对应的存储格式。

具体地,通过top命令过滤得到使用者关注的函数集合,该集合在后续应用中,可配置为步骤s203中的指定函数。

步骤404、将所述函数的资源占用数据写入数据库,所述数据库可以是时序数据库,所述时序数据库可以是influxdb。

步骤s405、使用者(大多数时候是开发者)打开可视化工具,如grafana,并做好相应的配置。所述配置包括:数据源(数据库的地址、通讯协议),dashboard的请求内容等。

grafana是一个跨平台的开源的度量分析和可视化工具,可以通过将采集的数据查询然后可视化的展示,并及时通知。它主要有以下六大特点:

1、展示方式:快速灵活的客户端图表,面板插件有许多不同方式的可视化指标和日志,官方库中具有丰富的仪表盘插件,比如热图、折线图、图表等多种展示方式;

2、数据源:graphite,influxdb,opentsdb,prometheus,elasticsearch,cloudwatch和kairosdb等;

3、通知提醒:以可视方式定义最重要指标的警报规则,grafana将不断计算并发送通知,在数据达到阈值时通过slack、pagerduty等获得通知;

4、混合展示:在同一图表中混合使用不同的数据源,可以基于每个查询指定数据源,甚至自定义数据源;

5、注释:使用来自不同数据源的丰富事件注释图表,将鼠标悬停在事件上会显示完整的事件元数据和标记;

6、过滤器:ad-hoc过滤器允许动态创建新的键/值过滤器,这些过滤器会自动应用于使用该数据源的所有查询。

步骤406、grafana向数据库发送请求,并从数据库获取返回的结果。可选地,使用者也可以通过设置自动更新来查看最新的数据。

步骤s407、结果通过grafana的dashboard展现给使用者。

实施例五

参阅图5,本发明实施例五提供了一种函数资源占用监控装置500,所述装置包括:

查询模块501,用于查询应用程序的资源占用信息,其中,所述资源包括内存和/或cpu。

接收模块502,用于接收所述应用程序返回的所述资源占用信息。

抽取模块503,用于抽取指定函数的资源占用数据。

写入模块504,用于将所述函数的资源占用数据写入数据库,其中,所述数据库接收资源占用查询请求并返回查询结果。

实施例六

参阅图6,本发明实施例六提供了一种函数资源占用监控装置600,所述装置包括:

查询模块601,用于查询应用程序的资源占用信息,其中,所述资源包括内存和/或cpu。

接收模块602,用于接收所述应用程序返回的所述资源占用信息。

抽取模块603,用于抽取指定函数的资源占用数据。

写入模块604,用于将所述函数的资源占用数据写入数据库。

发起模块605,用于向数据库发送查询请求,其中,所述数据库根据所述查询请求返回查询结果。

展现模块606,用于展现所述查询结果。

实施例七

参阅图7,本发明实施例七提供了一种函数资源占用监控装置700,所述装置包括:

查询模块701,用于查询应用程序的资源占用信息,其中,所述资源包括内存和/或cpu。

接收模块702,用于接收所述应用程序返回的所述资源占用信息。

抽取模块703,用于抽取指定函数的资源占用数据。

转换模块704,用于在抽取指定函数的资源占用数据后,将所述资源占用数据的格式转换为与所述数据库相对应的存储格式。

写入模块705,用于将所述函数的资源占用数据写入数据库。

配置模块706,用于配置发起模块的参数。其中,所述参数包括:所述数据库的地址、通讯协议、展现模块显示的内容。

发起模块707,用于向数据库发送查询请求,其中,所述数据库根据所述查询请求返回查询结果。

展现模块708,用于展现所述查询结果。

优选地,所述发起模块根据预设置的配置来定时发送查询请求,或者,所述发起模块根据用户的操作来发送查询请求。

实施例八

参阅图8,本发明实施例八提供了一种函数资源占用监控系统800,所述系统包括分析工具801和可视化工具802。

分析工具801查询应用程序的资源占用信息;接收所述应用程序403返回的所述资源占用信息;抽取指定函数的资源占用数据;将所述函数的资源占用数据写入数据库404。

所述可视化工具402向所述数据库发送查询请求,接收所述数据库返回的查询结果,并为使用者405展现所述查询结果。

所属领域的技术人员可以清楚的了解到,为了描述的方便和简洁,上述描述的装置、模块和单元的具体工作过程,可以参考前述方法实施例的对应过程,在此不再赘述。

另外,本发明实施例还公开了一种电子设备,其包括存储装置和一个或多个处理器,存储装置用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如实施例一至四的方法。

本发明实施例还公开了一种计算机程序产品,包括计算机程序指令,当指令由处理器执行时,用于实现如实施例一至四的方法。

本发明实施例还公开了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序被执行时,实现如实施例一至四的方法。

附图中的流程图和框图显示了根据本发明的多个实施例的方法、装置和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图和框图中的每个方框可以代表一个模块、程序段或代码的一部分,包含一个或多个用于实现逻辑功能的计算机可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。也要注意的是,框图和流程图中的每个方框或方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或者操作区分开来,而不一定要求或者暗示这些实体或者操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明,上述实施例仅是为说明所作的举例,而并非对实施方式的限定。对于本领域技术人员来说,在上述说明的基础上,还可以做出其它不同形式的变化或变动,而这些变化或变动将是显而易见的,处于本发明的保护范围之中。

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