发明内容
为了克服现有技术中的上述不足,本发明的目的在于提供一种慢查询信息检索方法、装置、服务器及可读存储介质,无需开启慢查询记录参数,能够大幅度提高慢查询信息的检索效率,便于及时排查系统问题,同时能够避免直接连接数据库造成的安全隐患。
为了实现上述目的,本发明实施例采用的技术方案如下:
第一方面,本发明实施例提供一种慢查询信息检索方法,应用于服务器,所述服务器中配置有慢查询调度策略和搜索服务器,所述方法包括:
基于慢查询调度策略获取所有Monogdb实例的慢查询信息;
将所有Monogdb实例的慢查询信息转存到搜索服务器中,其中,所述慢查询信息包括IP地址、端口、数据库名称、慢查询类型、慢查询发生时间、慢查询运行时间、慢查询语句以及慢查询信息生成时间;
在接收到用户终端发送的慢查询信息检索请求时,从所述慢查询信息检索请求获得检索筛选条件;
基于所述检索筛选条件从所述搜索服务器中检索对应的慢查询信息,并将检索到的慢查询信息发送给所述用户终端进行显示。
可选地,在所述将所有Monogdb实例的慢查询信息转存到搜索服务器中的步骤之后,所述方法还包括:
对所述搜索服务器中的慢查询信息进行统计分析,生成统计分析报告后发送给目标终端,其中,所述统计分析报告中包括于慢查询信息的统计数量和统计时间信息。
可选地,所述将所有Monogdb实例的慢查询信息转存到搜索服务器中的步骤之后,所述方法还包括:
每隔一预设时间段,删除所述搜索服务器中的慢查询信息。
可选地,在所述基于慢查询调度策略获取所有Monogdb实例的慢查询信息的步骤之前,所述方法还包括:
针对当前每个Monogdb实例,检测该Monogdb实例是否开启慢查询配置;
若否,则使用预设命令开启该Monogdb实例的慢查询配置。
可选地,所述基于慢查询调度策略获取所有Monogdb实例的慢查询信息的步骤,包括:
从所述慢查询调度策略中获取当前配置的慢查询频率;
基于所述慢查询频率获取所有Monogdb实例的慢查询信息。
可选地,所述基于所述慢查询频率获取所有Monogdb实例的慢查询信息的步骤,包括:
将所有Monogdb实例添加至循环列表;
分别连接每个Monogdb实例,并在连接成功后获取每个Monogdb实例的慢查询信息。
可选地,所述基于所述检索筛选条件从所述搜索服务器中检索对应的慢查询信息,并将检索到的慢查询信息发送给所述用户终端进行显示的步骤,包括:
基于所述检索筛选条件从所述搜索服务器中检索对应的慢查询信息;
将检索到的慢查询信息封装为JSON格式数据;
将所述JSON格式数据返回所述用户终端进行显示。
第二方面,本发明实施例还提供一种慢查询信息检索装置,应用于服务器,所述服务器中配置有慢查询调度策略和搜索服务器,所述装置包括:
获取模块,用于基于慢查询调度策略获取所有Monogdb实例的慢查询信息;
转存模块,用于将所有Monogdb实例的慢查询信息转存到搜索服务器中,其中,所述慢查询信息包括IP地址、端口、数据库名称、慢查询类型、慢查询发生时间、慢查询运行时间、慢查询语句以及慢查询信息生成时间;
获得模块,用于在接收到用户终端发送的慢查询信息检索请求时,从所述慢查询信息检索请求获得检索筛选条件;
检索模块,用于基于所述检索筛选条件从所述搜索服务器中检索对应的慢查询信息,并将检索到的慢查询信息发送给所述用户终端进行显示。
第三方面,本发明实施例还提供一种服务器,所述服务器包括:
存储器;
处理器;以及
上述的慢查询信息检索装置,所述慢查询信息检索装置存储于所述存储器中并包括由所述处理器执行的软件功能模块。
第四方面,本发明实施例还提供一种可读存储介质,所述可读存储介质中存储有计算机程序,所述计算机程序被执行时实现上述的慢查询信息检索方法。
相对于现有技术而言,本发明具有以下有益效果:
本发明实施例提供一种慢查询信息检索方法、装置、服务器及可读存储介质,首先,基于慢查询调度策略获取所有Monogdb实例的慢查询信息,并将所有Monogdb实例的慢查询信息转存到搜索服务器中,接着,在接收到用户终端发送的慢查询信息检索请求时,从所述慢查询信息检索请求获得检索筛选条件,而后基于所述检索筛选条件从所述搜索服务器中检索对应的慢查询信息,并将检索到的慢查询信息发送给所述用户终端进行显示。采用本发明提供的技术方案,在检索慢查询信息时,无需开启慢查询记录参数,能够大幅度提高慢查询信息的检索效率,便于及时排查系统问题,同时能够避免直接连接数据库造成的安全隐患。
具体实施方式
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
请参阅图1,为本发明实施例提供的用于实现慢查询信息检索方法的服务器100的结构示意框图。本实施例中,所述服务器100包括慢查询信息检索装置200、存储器110以及处理器120。在本发明实施例中,慢查询信息检索装置200包括至少一个可以软件或固件(Firmware)的形式存储于所述存储器110中或固化在所述服务器100的操作系统(Operating System,OS)中的软件功能模块。所述处理器120用于执行所述存储器110中存储的可执行软件模块,例如,所述慢查询信息检索装置200所包括的软件功能模块及计算机程序等。本实施例中,所述慢查询信息检索装置200也可以集成于所述操作系统中,作为所述操作系统的一部分。具体地,所述慢查询信息检索装置200可以包括:
获取模块210,用于基于慢查询调度策略获取所有Monogdb实例的慢查询信息。
转存模块220,用于将所有Monogdb实例的慢查询信息转存到搜索服务器中,其中,所述慢查询信息包括IP地址、端口、数据库名称、慢查询类型、慢查询发生时间、慢查询运行时间、慢查询语句以及慢查询信息生成时间。
获得模块230,用于在接收到用户终端发送的慢查询信息检索请求时,从所述慢查询信息检索请求获得检索筛选条件。
检索模块240,用于基于所述检索筛选条件从所述搜索服务器中检索对应的慢查询信息,并将检索到的慢查询信息发送给所述用户终端进行显示。
请参阅图2,为本发明实施例提供的慢查询信息检索方法的一种流程示意图,所述方法由图1中所示的慢查询信息检索系统执行。所应说明的是,本发明实施例提供的慢查询信息检索方法不以图2及以下所述的具体顺序为限制。所述方法的具体流程如下:
步骤S210,基于慢查询调度策略获取所有Monogdb实例的慢查询信息。本实施例中,该步骤S210可以由上述获取模块210执行。
本实施例中,在所述步骤S210之前,服务器100需要确保所有的Monogdb实例都开启了慢查询的配置,只有在开启了慢查询的配置后,Monogdb实例才能进行慢查询操作,因此可以额针对当前每个Monogdb实例,检测该Monogdb实例是否开启慢查询配置,若否,则使用预设命令开启该Monogdb实例的慢查询配置。该预设命令可以使用如下示例命令开启,示例命令定义为记录所有查询时间大于100毫秒的查询:
db.setProfilingLevel(1,100)。
本实施例中,当所有的Monogdb实例都开启了慢查询的配置后,所述服务器100可从所述慢查询调度策略中获取当前配置的慢查询频率,并基于所述慢查询频率获取所有Monogdb实例的慢查询信息。其中,所述慢查询调度策略可以使用Django-celery任务调度函数实现,该Django-celery任务调度函数主要是用来利用django-celery对获取所有Monogdb实例的慢查询信息进行定时的调度。例如,可以暂定为,每天凌晨运行一次获取所有Monogdb实例的慢查询信息的指令,保证Monogdb实例中的慢查询记录不会超过一天,从而确保服务器100的存储性能。
步骤S220,将所有Monogdb实例的慢查询信息转存到搜索服务器中,本实施例中,该步骤S220可以由上述转存模块220执行。
本实施例中,在获取到所有Monogdb实例的慢查询信息之后,需要使用慢查询记录转储函数转存所有Monogdb实例的慢查询信息,在实施过程中,首先可将所有Monogdb实例添加至循环列表,然后分别连接每个Monogdb实例,并在连接成功后获取每个Monogdb实例的慢查询信息。
在对所述步骤S220进行进一步阐述之前,首先对搜索服务器ElasticSearch进行说明。
搜索服务器ElasticSearch是一个基于Lucene的搜索服务器,提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。实际实施过程中,建立一个网站或应用程序,并要添加搜索功能,但是想要完成搜索工作的创建是非常困难的,二搜索服务器ElasticSearch提供了一种搜索解决方案,其运行速度快,能够简单地使用JSON通过HTTP来索引数据,并且可实时搜索,始终可用。
更为具体地,作为一种实施方式,所述慢查询记录转储函数转储慢查询信息具体可以通过如下方式实现:
首先,将所有Mongodb实例放入一个列表,进入循环;
接着,利用pymongo连接每个Mongodb实例;
接着,通过db.system.profile.find语句,获取到该Mongodb实例的所有慢查询信息;
接着,通过Python的elasticsearch包连接到Elasticsearch,把上一步获取到的慢查询信息保存进搜索服务器Elasticsearch;
通过上述步骤,可以依次将Mongodb实例的所有慢查询信息转存到所述搜索服务器中,直至循环结束。
可选地,所述搜索服务器Elasticsearch存储的慢查询信息可包括IP地址、端口、数据库名称、慢查询类型、慢查询发生时间、慢查询运行时间、慢查询语句以及慢查询信息生成时间。下面对所述搜索服务器Elasticsearch保存的数据格式定义进行说明:
【ip】字符串类型,用来存放Mongodb实例的IP地址。
【port】数字类型,用来存放Mongodb实例的端口。
【db_name】字符串类型,用来存放检索的数据库名称。
【command_type】字符串类型用来存放慢查询类型。
【query_time】日期类型,用来存放慢查询发生时间。
【execute_time】数字类型,用来存放慢查询运行时间,单位可以为毫秒。
【query】字符串类型,用来存放慢查询信息生成时间,也即具体慢查询的语句。
【create_time】日期类型,用来存放慢查询信息生成时间,也即插入这条慢查询记录的时间。
由此,通过上述高性能搜索引擎Elasticsearch来保存所有Mongodb实例的慢查询记录,在检索慢查询信息时,无需开启慢查询记录参数,能够大幅度提高慢查询信息的检索效率,便于及时排查系统问题。
可选地,请参阅图3,在该步骤S220之后,所述方法还可以包括如下步骤:
步骤S221,对所述搜索服务器中的慢查询信息进行统计分析,生成统计分析报告后发送给目标终端。
本实施例中,所述统计分析报告中包括于慢查询信息的统计数量和统计时间信息。所述服务器100可以使用慢查询自动报告函数对所述搜索服务器中的慢查询信息进行统计分析,该慢查询自动报告函数主要是用来检查保存在搜索服务器Elasticsearch中的慢查询信息,对于慢查询个数以及时间进行统计分析,并且可以自动利用Python的smtplib包向目标终端发送统计分析报告,例如可向目标终端发送报告邮件。由此,通过全自动收集以及分析报告邮件的发送,不需要任何的人工干预,以便于用户可以每天了解到前一天的所有Mongodb实例的慢查询统计状态,进而免去了人工巡查的过程,减少用户的工作量。
可选地,请参阅图4,在该步骤S220之后,所述方法还可以包括如下步骤:
步骤S222,每隔一预设时间段,删除所述搜索服务器中的慢查询信息。
本实施例中,服务器100可以通过pymongo连接monogdb,执行如下语句,用来清空所述搜索服务器中的Mongodb实例中的慢查询记录:
db.setProfilingLevel(0);db.system.profile.drop();db.setProfilingLevel(1,100)
通过上述方式,可以定时删除所述搜索服务器中的慢查询信息,保证所述服务器100的存储性能。
依旧参阅图2,步骤S230,在接收到用户终端发送的慢查询信息检索请求时,从所述慢查询信息检索请求获得检索筛选条件。本实施例中,该步骤S230可以由上述获得模块230执行。
本实施例中,用户终端可通过访问所述服务器100提供的WEB页面查看前端显示页面,所述服务器100可利用django框架,构建对于用户来展现的前端HTML页面,该页面主要是用来分页展示搜索服务器Elasticsearch中记录的慢查询信息。
在实际实施时,当出现性能问题需要去检查慢查询信息的时候,用户可向用户终端的前端HTML输入对应的检索筛选条件,并通过通过该用户终端向所述服务器100发送慢查询信息检索请求,服务器100在接收到用户终端发送的慢查询信息检索请求时,从所述慢查询信息检索请求获得检索筛选条件,例如IP、端口、数据库名称、慢查询类型、慢查询发生时间、慢查询运行时间等等,在此不作具体限制。
采用上述方法,通过web页面访问,避免了用户直接连接生产环境Mongodb数据库造成的安全隐患。
步骤S240,基于所述检索筛选条件从所述搜索服务器中检索对应的慢查询信息,并将检索到的慢查询信息发送给所述用户终端进行显示。本实施例中,该步骤S240可以由上述检索模块240执行。
本实施例中,所述服务器100可基于所述检索筛选条件从所述搜索服务器中检索对应的慢查询信息,并将检索到的慢查询信息封装为JSON格式数据,而后将所述JSON格式数据返回所述用户终端进行显示。
作为一种实施方式,所述服务器100可利用页面数据检索功能函数从所述搜索服务器中检索对应的慢查询信息,该页面数据检索功能函数主要是用来实现检索功能,对于前端HTML页面用户所选择的所述检索筛选条件,利用ajax post传递到后端,再利用Python的elasticsearch包连接并获取后端存储的慢查询信息,把检索到的出对应的慢查询信息通过Python的JSON模块封装成JSON的格式,返回到前端HTML页面展示出来。
本实施例提供的慢查询信息检索方法,主程序使用Python Django进行开发,利用django-celery定时触发获取所有实例的慢查询信息,转储到专门用作存储慢查询的搜索服务器Elasticsearch,然后定时清理系统保存的慢查询记录,最后通过前端WEB页面来展示出所有的慢查询信息,并且提供按照条件检索功能,只需要访问对应的WEB页面,所有的慢查询信息记录一目了然,所有记录永久保存,不需要人工连接Mongodb数据库,这样对于数据库安全性隔离,也多了一层保障。
进一步地,本发明较佳实施例还提供一种可读存储介质,所述可读存储介质中存储有计算机程序,所述计算机程序运行时实现上述的慢查询信息检索方法。
综上所述,本发明实施例提供一种慢查询信息检索方法、装置、服务器及可读存储介质,首先,基于慢查询调度策略获取所有Monogdb实例的慢查询信息,并将所有Monogdb实例的慢查询信息转存到搜索服务器中,接着,在接收到用户终端发送的慢查询信息检索请求时,从所述慢查询信息检索请求获得检索筛选条件,而后基于所述检索筛选条件从所述搜索服务器中检索对应的慢查询信息,并将检索到的慢查询信息发送给所述用户终端进行显示。采用本发明提供的技术方案,在检索慢查询信息时,无需开启慢查询记录参数,能够大幅度提高慢查询信息的检索效率,便于及时排查系统问题,同时能够避免直接连接数据库造成的安全隐患。
应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
可以替换的,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等
需要说明的是,在本文中,术语"包括"、"包含"或者其任何其它变体意在涵盖非排它性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句"包括一个……"限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其它的具体形式实现本发明。