一种分布式应用系统下的慢sql实时数据采集方法与流程

文档序号:17889811发布日期:2019-06-13 15:30阅读:327来源:国知局
本发明公开一种分布式应用系统下的慢sql实时数据采集方法,涉及数据采集
技术领域
:。
背景技术
::通信和网络技术的快速发展,推动了在线应用系统呈现几何级的增长。应用系统的服务内容也从原来的单一静态向多元动态交互模式发展,提高了用户体验的交互性和丰富性。然而,当海量用户在体验同一个网上服务的时候,经常会遇到服务器繁忙情况,因此现在往往使用多台服务器为同一种应用提供服务,为应用进行分布式部署。分布式部署在提高应用系统服务能力的同时,也增加了应用系统服务流程的复杂性。分布式环境下的数据库处理效率是影响应用系统服务能力的重要环节。为了保证数据库操作的稳定可用性,及时排除潜在的异常隐患,数据库操作sql语句执行实时监控。本发明提出了一种分布式应用系统下的慢sql实时数据采集方法,预设sql执行时间长短阈值,利用druid数据源接口插件,拦截执行时间超阈值的sql信息(执行语句、执行时间、执行次数、错误次数以及并发数)获取实时获取分布式应用系统中的慢sql执行数据,并将该数据写入kafka消息队列,推送到监控告警邮件系统和hbase数据存储系统,发送告警邮件并存储慢sql执行数据供后续分析和展示。实践表明,本方法提高了系统对数据操作层面监控的效率、增加了sql执行异常隐患排查的可预见性。技术实现要素:本发明针对现有技术的问题,提供一种分布式应用系统下的慢sql实时数据采集方法,提高了系统运维的效率,增加了系统性能优化的抓手,减少了系统中数据库操作隐患问题的发生。本发明提出的具体方案是:一种分布式应用系统下的慢sql实时数据采集方法,在分布式应用系统中部署数据源插件,数据源插件获取数据库实例的连接状态,利用数据源插件的过滤器实时获取sql语句的执行信息并根据预设的sql执行时间阈值筛选大于阈值的sql信息作为慢sql实时数据进行采集,将采集的慢sql实时数据写入kafka集群用以通知告警并进行存储。所述的方法中在分布式应用系统中部署druid数据源插件,druid数据源插件包括数据库访问操作过滤器和数据记录过滤器,数据库访问操作过滤器根据预设的sql执行时间阈值与当前sql执行时间进行比较,获取到大于阈值的sql信息作为慢sql实时数据,发送给数据记录过滤器,数据记录过滤器将慢sql实时数据写入kafka集群。所述的方法中druid数据源插件生成druid数据源实例配置druid连接的数据库参数,将数据库参数注入数据库访问操作过滤器及数据记录过滤器,在数据库访问操作过滤器中根据预设的sql执行时间阈值配置sql语句执行时间限制,执行每一个sql操作时,数据库访问操作过滤器将读取时间限制值与当前sql执行时间进行比较,获取到大于阈值的sql信息作为慢sql实时数据,发送给数据记录过滤器。所述的方法中数据记录过滤器将慢sql实时数据写入kafka集群的topics中,每当topics有数据流到来,kafka将topics中的慢sql实时数据发送到告警系统通知告警和数据存储系统进行存储。所述的方法中数据库访问操作过滤器获取到大于阈值的sql信息作为慢sql实时数据,慢sql实时数据包括执行语句信息、执行时间信息、执行次数信息、错误次数信息以及并发数信息。所述的方法中kafka中告警系统对获取到的慢sql实时数据进行整合,对于执行时间超时,发生错误的sql信息通过发送给运维人员。所述的方法中kafka将慢sql实时数据发送到hbase数据存储系统,hbase数据存储系统将数据写入hbaseadmin创建的列表中,可根据列表查询展示存储的慢sql执行数据。一种分布式应用系统下的慢sql实时数据采集工具,包括数据采集单元、数据中转单元以及告警及数据存储单元,数据采集单元为分布式应用系统中部署的数据源插件,数据源插件获取数据库实例的连接状态,利用数据源插件的过滤器实时获取sql语句的执行信息并根据预设的sql执行时间阈值筛选大于阈值的sql信息作为慢sql实时数据进行采集,数据中转单元将采集的慢sql实时数据写入kafka集群,告警及数据存储单元从kafka集群中获得慢sql实时数据分别用以通知告警及进行存储。本发明的有益之处是:本发明提供一种分布式应用系统下的慢sql实时数据采集方法,针对分布式应用系统下的慢sql执行实时监控,对分布式应用系统环境下的数据库操作,通过增加的过滤器,扩展数据库连接插件,提供了一个sql执行情况数据收集的方法,同时可利用kafka消息队列实时推送到告警系统和数据存储系统,对sql执行慢异常进行实时监控告警,提高了系统异常监控的准确性和效率,也为系统性能优化和系统中数据库操作隐患问题排查提供了依据。附图说明图1分布式应用系统的示意图;图2本发明方法流程示意图。具体实施方式本发明提供一种分布式应用系统下的慢sql实时数据采集方法,在分布式应用系统中部署数据源插件,数据源插件获取数据库实例的连接状态,利用数据源插件的过滤器实时获取sql语句的执行信息并根据预设的sql执行时间阈值筛选大于阈值的sql信息作为慢sql实时数据进行采集,将采集的慢sql实时数据写入kafka集群用以通知告警并进行存储。同时提供与上述方法相对应的一种分布式应用系统下的慢sql实时数据采集工具,包括数据采集单元、数据中转单元以及告警及数据存储单元,数据采集单元为分布式应用系统中部署的数据源插件,数据源插件获取数据库实例的连接状态,利用数据源插件的过滤器实时获取sql语句的执行信息并根据预设的sql执行时间阈值筛选大于阈值的sql信息作为慢sql实时数据进行采集,数据中转单元将采集的慢sql实时数据写入kafka集群,告警及数据存储单元从kafka集群中获得慢sql实时数据分别用以通知告警及进行存储。下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。分布式应用系统往往承载着多种业务,系统的每一次前后台交互往往都涉及数据库操作,在系统不间断的运行过程中,每一秒都会产生sql数据,受多种因素影响,慢sql执行数据可能会随时出现。利用本发明方法或工具,在分布式应用系统中部署druid数据源插件,并生成druid数据源实例配置druid连接的数据库参数,注入数据库访问操作过滤器statfilter及数据记录过滤器sqllogfilter,预设sql执行时间阈值,随后在注入的数据库访问操作过滤器中根据sql执行时间阈值配置sql语句执行时间限制:statfilter.setslowsqlmillis,当执行每一个sql操作时,statfilter过滤器将读取时间限制值与当前sql执行时间进行比较,获取到大于阈值的sql信息,自定义数据记录过滤器sqllogfilter,在sqllogfilter中将statfilter获取的sql信息写入kafka集群的topics中,当分布式应用系统集群启动后,配置druid插件以定时任务方式工作,每当出现数据库操作时,statfilter过滤器开始进行判别,sqllogfilter过滤器记录慢sql执行数据,完成分布式应用系统全量慢sql执行数据的实时抓取和集中记录汇集;在本方法中应用系统作为kafka消息队列中的producer角色,sqllogfilter过滤器接收到慢sql数据通过kafka客户端kafkaproducer发送kafka集群对应的topics中,告警系统和数据存储系统以consumer群组角色订阅kafka集群指定的topics,每当topics有数据流到来,kafka消息推送机制则将topics中的慢sql执行数据发送到告警系统和数据存储系统;本发明针对想要实时高效传输下慢sql信息状况,利用kafka作为高吞吐量的以集群方式运行的发布订阅消息系统,支持每秒数百万级别的消息。在数据中转阶段,采用kafka消息队列作为慢sql数据转发媒介;在异常告警和数据存储阶段,对慢sql实时数据异常情况发送告警邮件和将数据存储到以hbase为架构得数据存储系统中,邮件告警系统作为kafka消息队列中的consumer角色,实时获取到各应用系统产生的慢sql执行数据,对其中应用系统中执行的sql信息,包括执行语句、执行时间、执行次数、错误次数以及并发数等信息进行整合,对于执行时间超时,发生错误的sql信息通过邮件api接口发送给运维人员;数据存储系统以hbase为存储架构,系统获取从kafka集群推送的慢sql执行数据,利用htable接口将数据写入通过hbaseadmin创建的列表中,设置表名、行键、列族三者确定数据存放的位置,分析展示接口根据hbaseadmin设置的表,行键、列族、列名等信息查询存储的慢sql执行数据进行处理。以上所述实施例仅是为充分说明本发明而所举的较佳的实施例,本发明的保护范围不限于此。本
技术领域
:的技术人员在本发明基础上所作的等同替代或变换,均在本发明的保护范围之内。本发明的保护范围以权利要求书为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1