本申请涉及计算机技术领域,尤其涉及一种基于sql查询的网络业务监控方法、装置、设备及存储介质。
背景技术:
目前,大多部分的企业都根据自身业务需求会开发、运行一套或多套与自身业务需求匹配的业务系统,由于业务需求的不同,开发人员在进行系统开发的时候,需要根据需求采用不同的结构、框架来进行开发,最终开发出来的各个系统对数据处理的方式存在一定的差异,而当需要对这些业务系统进行网络业务量的监控时,就需要开发人员根据业务系统的结构框架的不同来开发监控系统,以实现不同业务系统的网络业务量监控,即每一个业务系统都需要开发一套与其自身匹配的网络业务量监控系统,这无疑会增大开发人员的工作压力。
并且,现有技术中开发人员常常采用zabbix、prometheus等架构来开发网络业务量监控系统,但在实际使用过程中,采用zabbix架构的监控方式进行业务量监控时,存在运营人员很难从大量的数据监控结果中找到异常数据的问题;而采用prometheus架构的监控方式进行数据监控时,需要运营人员不断地改动配置文件才可以实现数据业务的持续监控,而且在监控过程中数据量越多,则需要改动配置文件越多,任务量繁琐,给运营人员带来了很大的工作量。
因此,现有的网络业务监控方式或监控系统的可移植性不高,无法在不同的业务系统中完成网络业务的监控,因此不适用于多系统、大数据中的异常网络业务的排查,且在网络业务量监控的过程中,也无法做到自动化监控以及实时监控。
技术实现要素:
本申请实施例的目的在于提出一种基于sql查询的网络业务监控方法、装置、设备及存储介质,以解决现有的网络业务监控方式或监控系统的可移植性不高,无法在不同的业务系统中完成网络业务的监控以及无法做到实时、自动化监控的问题。
为了解决上述技术问题,本申请实施例提供一种基于sql查询的网络业务监控方法,采用了如下所述的技术方案:
抓取至少一个业务系统上的网络流量;
对网络流量进行解析,获取网络流量中的sql语句;
根据sql语句对目标数据库进行sql操作,得到第一sql操作信息,其中,目标数据库为至少一个业务系统的数据库;
获取目标数据库的日志文件,在目标数据库的日志文件中查询与sql语句对应的第二sql操作信息,其中,第二sql操作信息为业务系统在进行sql语句操作时产生的信息;
将第一sql操作信息和第二sql操作信息进行比对,根据比对结果判断网络业务是否异常;
若比对结果不为空值且比对结果相同,则判定网络业务为正常业务,否则判定网络业务为异常业务。
进一步的,在对网络流量进行解析,获取网络流量中的sql语句之后,还包括:
获取网络流量中tcp网络流量包;
对tcp网络流量包进行解析,得到tcp报文信息,其中tcp报文信息包括目标数据库的ip地址、目标数据库的端口号、本地端口的ip地址、本地端口的端口号和第一时间信息,第一时间信息为tcp报文的抓取时间。
进一步的,在根据sql语句对目标数据库进行sql操作,得到第一sql操作信息之前,还包括:
获取第二时间信息,第二时间信息为sql语句的抓取时间;
判断第一时间信息和第二时间信息是否一致;
若第一时间信息和第二时间信息一致,则将tcp报文信息和sql语句进行组合,形成请求指令;
根据请求指令,请求对目标数据库进行sql操作。
进一步的,在根据请求指令,请求对目标数据库进行sql操作之前,还包括:
接收目标数据库的认证指令;
对目标数据库的ip地址、目标数据库的端口号、本地端口的ip地址、本地端口的端口号进行认证操作;
若认证通过,则根据请求指令对目标数据库进行sql操作。
进一步的,在对网络流量进行解析,获取网络流量中的sql语句之后,还包括:
判断sql语句是否已经存在于缓存中;
若sql语句未存在于缓存中,则将sql语句保存到缓存中,同时保存sql语句的第二时间信息;
若缓存中已包含有sql语句,则更新sql语句的第二时间信息。
进一步的,将第一sql操作信息和第二sql操作信息进行比对,根据比对结果判断网络业务是否异常具体包括:
分别提取第一sql操作信息、第二sql操作信息中的表名和sql字段,其中,第一sql操作信息包括第一表名和第一sql字段,第二sql操作信息包括第二表名和第二sql字段;
分别比对第一表名和第二表名、第一sql字段和第二sql字段,得到比对结果;
根据比对结果,判断网络业务是否异常。
进一步的,在判定网络业务为异常业务之后,还包括:
获取异常业务的sql语句和执行异常业务的sql语句后产生的异常提示语;
将异常业务的sql语句和异常提示语进行组合,得到业务异常提示信息;
将业务异常提示信息进行输出。
为了解决上述技术问题,本申请实施例还提供一种基于sql查询的网络业务监控装置,采用了如下所述的技术方案:
流量抓取模块,用于抓取至少一个业务系统上的网络流量;
流量解析模块,用于对网络流量进行解析,获取网络流量中的sql语句;
sql操作模块,用于根据sql语句对目标数据库进行sql操作,得到第一sql操作信息,其中,目标数据库为至少一个业务系统的数据库;
sql查询模块,用于获取目标数据库的日志文件,在目标数据库的日志文件中查询与sql语句对应的第二sql操作信息,其中,第二sql操作信息为业务系统在进行sql语句操作时产生的信息;
异常判断模块,用于将第一sql操作信息和第二sql操作信息进行比对,根据比对结果判断网络业务是否异常;
判断结果模块,用于若比对结果不为空值且比对结果相同,则判定网络业务为正常业务,否则判定网络业务为异常业务。
为了解决上述技术问题,本申请实施例还提供一种计算机设备,采用了如下所述的技术方案:
抓取至少一个业务系统上的网络流量;对网络流量进行解析,获取网络流量中的sql语句;根据sql语句对目标数据库进行sql操作,得到第一sql操作信息,其中,目标数据库为至少一个业务系统的数据库;获取目标数据库的日志文件,在目标数据库的日志文件中查询与sql语句对应的第二sql操作信息,其中,第二sql操作信息为业务系统在进行sql语句操作时产生的信息;将第一sql操作信息和第二sql操作信息进行比对,根据比对结果判断网络业务是否异常;若比对结果不为空值且比对结果相同,则判定网络业务为正常业务,否则判定网络业务为异常业务。
为了解决上述技术问题,本申请实施例还提供一种计算机可读存储介质,采用了如下所述的技术方案:
抓取至少一个业务系统上的网络流量;对网络流量进行解析,获取网络流量中的sql语句;根据sql语句对目标数据库进行sql操作,得到第一sql操作信息,其中,目标数据库为至少一个业务系统的数据库;获取目标数据库的日志文件,在目标数据库的日志文件中查询与sql语句对应的第二sql操作信息,其中,第二sql操作信息为业务系统在进行sql语句操作时产生的信息;将第一sql操作信息和第二sql操作信息进行比对,根据比对结果判断网络业务是否异常;若比对结果不为空值且比对结果相同,则判定网络业务为正常业务,否则判定网络业务为异常业务。
与现有技术相比,本申请实施例主要有以下有益效果:
本申请公开了一种基于sql查询的网络业务监控方法、装置、设备及存储介质,属于计算机技术领域,所述监控方法通过抓取至少一个业务系统上的网络流量;对网络流量进行解析,获取网络流量中的sql语句;根据sql语句对目标数据库进行sql操作,得到第一sql操作信息,其中,目标数据库为至少一个业务系统的数据库;获取目标数据库的日志文件,在目标数据库的日志文件中查询与sql语句对应的第二sql操作信息,其中,第二sql操作信息为业务系统在进行sql语句操作时产生的信息;将第一sql操作信息和第二sql操作信息进行比对,根据比对结果判断网络业务是否异常;若比对结果不为空值且比对结果相同,则判定网络业务为正常业务,否则判定网络业务为异常业务。与现有技术相比,本申请公开的基于sql查询的网络业务监控方法不需要业务系统再次进行sql语句操作来进行网络业务异常情况的判断,仅需要将监控系统根据sql语句对目标数据库进行sql操作得到第一sql操作信息与查询目标数据库的日志文件得到的第二sql操作信息进行对比,就可以判断网络业务的异常情况,因此可以实现对不同业务系统的网络业务进行自动监控,提高了监控系统的可移植性,有利于企业的系统运营人员快速查找异常的网络业务,极大地提高了大数据量网络业务异常数据排查的效率和准确度。
附图说明
为了更清楚地说明本申请中的方案,下面将对本申请实施例描述中所需要使用的附图作一个简单介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例一种基于sql查询的网络业务监控方法中旁路监控系统的示例性系统架构图;
图2本申请实施例一种基于sql查询的网络业务监控方法的实现流程图;
图3是图2中步骤s202的一种具体实施方式的流程图;
图4是图2中步骤s203的一种具体实施方式的流程图;
图5是图4中步骤s404的一种具体实施方式的流程图;
图6是图2中步骤s202的另一种具体实施方式的流程图;
图7图2中步骤s205的一种具体实施方式的流程图;
图8图2中步骤s206的一种具体实施方式的流程图;
图9根据本申请的一种基于sql查询的网络业务监控装置的一个实施例的结构示意图;
图10是根据本申请的计算机设备的一个实施例的结构示意图。
具体实施方式
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同;本文中在申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请;本申请的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。本申请的说明书和权利要求书或上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
为了使本技术领域的人员更好地理解本申请方案,下面将结合附图,对本申请实施例中的技术方案进行清楚、完整地描述。
实施例一
在本申请提供的实施例中,各个步骤的执行主体可以是旁路监控系统,请参照图1,图1示出了本申请实施例一种基于sql查询的网络业务监控方法中旁路监控系统的示例性系统架构图,旁路监控系统102由流量抓取组件121、监控中心122和缓存123组成,流量抓取组件121抓取在中间件101上传输的网络流量,由监控中心122对抓取到的网络流量进行解析,得到其中的sql语句,由缓存123将解析得到的sql语句进行缓存。进一步的,监控中心122根据得到sql语句对业务系统的数据库进行sql操作,得到第一sql操作结果,并将该第一sql操作结果与业务系统直接进行该sql操作时得到的第二sql操作结果做比对,根据比对结果,判断网络业务的异常情况,实现对网络业务进行自动监控。
需要说明的是,由于旁路监控系统102独立于业务系统之外,因此设置旁路监控系统102可以对不同业务系统的网络业务进行监控,旁路监控系统102可以应用在不同的业务系统中进行监控,提高网络业务监控系统的可移植性。可选地,各步骤的执行主体可以是监控设备中运行的监控系统,上述监控设备可以是终端或服务器。
在本申请提供的实施例中,中间件用于连接不同的业务系统,以实现不同业务系统数据互通和资源共享,减少对整个网络的维护、运行和管理的工作量。在本申请提供的一种具体实施例中,请继续参照图1,中间件101与业务系统1、业务系统2、业务系统3通信连接,业务系统1、业务系统2、业务系统3在运行过程中需产生的数据流量上传到中间件101中进行数据共享。在本申请提供的其他实施例中,中间件101也可以和更多或更少的业务系统连接,在此本申请并不做限定。
请继续参考图2,图2示出了本申请实施例一种基于sql查询的网络业务监控方法的实现流程图,为了便于说明,仅示出与本申请相关的部分。所述基于sql查询的网络业务监控方法包括:
s201,抓取至少一个业务系统上的网络流量。
具体的,由旁路监控系统的流量抓取组件抓取至少一个业务系统上的网络流量,其中,所述至少一个业务系统上的网络流量为在中间件上进行传输的网络流量。需要说明的是,旁路监控系统独立于业务系统之外,通过设置旁路监控系统来对至少一个业务系统上的网络流量进行监控,实现了对不同业务系统的监控,提高网络业务监控系统的可移植性。
在本申请的实施例中,网络流量指的是在网络中传输的数据量,也即用户在访问或下载数据时产生的数据流,网络流量包括http报文格式的数据流量、tcp报文格式的数据流量、udp报文格式的数据流量、ftp格式的数据流量、nfs格式的数据流量等基于传输协议的报文类型的数据流量以及所有非协议类型的数据流量,其中,sql语句属于非协议类型的数据流量中的一种。
s202,对网络流量进行解析,获取网络流量中的sql语句。
具体的,通过旁路监控系统的监控中心对抓取到的网络流量进行解析,获取网络流量中的sql语句。
在本申请实施例中,通过流量解析工具对抓取到的网络流量进行解析。可选的,本申请中的流量解析工具可以是基于lua数据解析脚本,在lua数据解析脚本中设定一个针对网络流量进行解析的tshark命令,对步骤s101中抓取到的网络流量进行解析后,再采用过滤器对解析结果进行过滤,获取其中的sql语句。可选的,所述过滤器可以是sql语句过滤器,通过sql语句过滤器过滤其他格式的信息,得到解析结果中的sql语句。
在本申请实施例中,通过设置过滤器能有效过滤掉sql语句之外的信息,减少旁路监控系统的运行压力,同时有助于提高运维技术人员的维护效率。
s203,根据sql语句对目标数据库进行sql操作,得到第一sql操作信息,其中,目标数据库为至少一个业务系统的数据库。
具体的,旁路监控系统的监控中心根据步骤s202中获取的sql语句对目标数据库进行sql操作,得到第一sql操作信息。
需要说明的是,本申请在进行网络业务监控过程中,通过旁路监控系统的监控中心对目标数据库进行sql操作,得到第一sql操作信息,因此不需要业务系统再次进行sql操作来判断网络业务的异常情况,因此节约了业务系统的运行资源,减轻了业务系统的压力。
并且,由于旁路监控系统独立于业务系统之外,因此设置旁路监控系统可以对不同业务系统的网络业务进行监控,提高网络业务监控系统的可移植性。
s204,获取目标数据库的日志文件,在目标数据库的日志文件中查询与sql语句对应的第二sql操作信息,其中,第二sql操作信息为业务系统在进行sql语句操作时产生的信息;
具体的,旁路监控系统的监控中心通过中间件获取目标数据库的日志文件,并在目标数据库的日志文件中查询与sql语句对应的第二sql操作信息,其中,目标数据库为至少一个业务系统的数据库。
需要说明的是,第二sql操作信息为业务系统在进行所述sql语句操作时产生的信息。
s205,将第一sql操作信息和第二sql操作信息进行比对,根据比对结果判断网络业务是否异常;
具体的,将第一sql操作信息和第二sql操作信息进行比对,即将监控中心根据sql语句对目标数据库进行sql操作得到第一sql操作信息与业务系统在进sql语句操作时产生的第二sql操作信息进行比对,根据比对结果来判断网络业务是否异常。
在本申请一种实施例中,将第一sql操作信息和第二sql操作信息进行比对具体为比对第一sql操作信息中的第一表名和第二sql操作信息中的第二表名,以及比对第一sql操作信息中的第一sql字段和第二sql操作信息中的第二sql字段。
s206,若比对结果不为空值且比对结果相同,则判定网络业务为正常业务,否则判定网络业务为异常业务。
具体的,若比对结果不为空值且比对结果相同,则证明步骤s203中监控中心根据sql语句对目标数据库进行sql操作得到第一sql操作信息与查询到的sql语句对应的第二sql操作信息相同,说明该网络业务在运行过程中未出现异常,即该网络业务为正常业务;若比对结果中出现空值,则说明该网络业务在运行过程中出现数据丢失的情况,即该网络业务为异常业务;若比对结果不相同,则该网络业务在运行过程中出现数据异常的情况,即该网络业务为异常业务。
本申请公开了一种基于sql查询的网络业务监控方法,与现有技术相比,本申请公开的基于sql查询的网络业务监控方法不需要业务系统再次进行sql语句操作来进行网络业务的异常情况的判断,仅通过将旁路监控系统根据sql语句对目标数据库进行sql操作得到第一sql操作信息和查询目标数据库的日志文件得到的第二sql操作信息进行比对,就可以判断网络业务的异常情况,实现了对不同业务系统网络业务的自动监控,提高了网络业务监控系统的可移植性,有利于企业的系统运营人员快速查找异常的网络业务,极大地提高了大数据量网络业务异常数据排查的效率和准确度。
请继续参考图3,图3是图2中步骤s202的一种具体实施方式的流程图,为了便于说明,仅示出与本申请相关的部分。
作为本实施例的一些可选实现方式,在步骤s202对网络流量进行解析,获取网络流量中的sql语句之后,还包括:步骤s301和步骤s302。
s301,获取网络流量中tcp网络流量包;
s302,对tcp网络流量包进行解析,得到tcp报文信息,其中tcp报文信息包括目标数据库的ip地址、目标数据库的端口号、本地端口的ip地址、本地端口的端口号和第一时间信息,第一时间信息为tcp报文的抓取时间。
在本申请提供的一种具体实施例中,在步骤s202对网络流量进行解析,得到解析结果之后还包括:利用tcpdump组件在解析结果中,抓取协议格式为tcp格式的数据,过滤掉其他格式的数据,再将tcp格式的数据进行汇总,得到tcp网络流量包。其中,dump组件可以针对网络流量的协议类型进行实时抓取,例如tcpdump组件。需要额外说明的是,在tcpdump组件抓取tcp格式数据的同时,监控中心记录抓取tcp格式数据的时间,即每一条tcp报文都存在一个对应的抓取时间,该时间为第一时间信息。
在本申请提供的一种具体实施例中,对tcp网络流量包进行解析,得到tcp报文信息具体为在lua数据解析脚本中设定一个针对tcp网络流量包进行解析的tshark命令,得到tcp报文信息。
请继续参考图4,图4是图2中步骤s203的一种具体实施方式的流程图,为了便于说明,仅示出与本申请相关的部分。
作为本实施例的一些可选实现方式,在步骤s203根据sql语句对目标数据库进行sql操作,得到第一sql操作信息之前,还包括:步骤s401、步骤s402、步骤s403和步骤s404。
s401,获取第二时间信息,第二时间信息为sql语句的抓取时间;
s402,判断第一时间信息和第二时间信息是否一致;
s403,若第一时间信息和第二时间信息一致,则将tcp报文信息和sql语句进行组合,形成请求指令;
s404,根据请求指令,请求对目标数据库进行sql操作。
在本申请提供的实施例中,在监控中心根据sql语句对目标数据库进行sql操作之前,还包括获取sql语句的抓取时间,即第二时间信息;判断第一时间信息和第二时间信息是否一致,即判断tcp报文的抓取时间与sql语句的抓取时间是否一致;若第一时间信息和第二时间信息一致,即tcp报文信息与sql语句相互对应,则监控中心将tcp报文信息和sql语句进行组合,形成一个完整的请求指令,并根据该请求指令,请求对目标数据库进行sql操作;若第一时间信息和第二时间信息不一致,则不允许监控中心将tcp报文信息和sql语句进行组合。需要额外说明的是,在对网络流量进行解析,获取网络流量中的sql语句的同时,监控中心记录抓取sql语句的时间,即每一条sql语句都存在一个对应的抓取时间,该时间为第二时间信息。
请继续参考图5,图5是图4中步骤s404的一种具体实施方式的流程图,为了便于说明,仅示出与本申请相关的部分。
作为本实施例的一些可选实现方式,在步骤s404根据请求指令,请求对目标数据库进行sql操作之前,还包括:步骤s501、步骤s502和步骤s503。
s501,接收目标数据库的认证指令;
s502,对目标数据库的ip地址、目标数据库的端口号、本地端口的ip地址、本地端口的端口号进行认证操作;
s503,若认证通过,则根据请求指令对目标数据库进行sql操作。
在本申请实施例中,在监控中心将tcp报文信息和sql语句进行组合,形成请求指令之后,还包括监控中心将请求指令发送到目标数据库,请求对目标数据库进行sql操作;目标数据库在接收到请求指令后,向监控中心发送认证指令,要求监控中心对目标数据库的ip地址、目标数据库的端口号、本地端口的ip地址、本地端口的端口号进行认证;只有在上述认证通过的情况下才能目标数据库进行sql操作;若上述认证未通过,即目标数据库的信息与tcp报文信息不匹配,则监控中心无法对对目标数据库进行sql操作,通过认证操作进一步提高信息的准确性和安全性。
在本申请提供的一种具体实施例中,步骤s202对网络流量进行解析,获取网络流量中的sql语句为selectgoods_namefromgoods_tbwheregoods_status=1,抓取该sql语句的时间为2019年8月12日15时27分30秒,即第二时间信息为2019年8月12日15时27分30秒;在步骤s302对tcp网络流量包进行解析得到tcp报文信息中,目标数据库的ip地址为192.168.1.225,目标数据库的端口号为8080,本地端口的ip地址为192.168.1.155,本地端口的端口号为1069,tcp报文抓取时间为2019年8月12日15时27分30秒,即第一时间信息为2019年8月12日15时27分30秒。
在第一时间信息和第二时间信息一致的情况下,监控中心将tcp报文信息和sql语句进行组合,形成请求指令,请求对目标数据库进行sql操作。需要说明的是。在本申请提供的一种具体实施例中,目标数据库连接信息为http://192.168.1.225:8080/。目标数据库在接收到请求指令后,要求监控中心进行认证,监控中心分别对目标数据库的ip地址192.168.1.225、目标数据库的端口号8080、本地端口的ip地址192.168.1.155、本地端口的端口号1069进行认证;在上述认证通过后,对目标数据库进行selectgoods_namefromgoods_tbwheregoods_status=1的sql操作,即在2019年8月12日15时27分30秒,监控中心对ip地址为192.168.1.225、端口号为8080的目标数据库进行了sql操作,查询条件为商品状态为1的商品的名称。
请继续参考图6,图6是图2中步骤s202的另一种具体实施方式的流程图,为了便于说明,仅示出与本申请相关的部分。
作为本实施例的一些可选实现方式,在步骤s202对网络流量进行解析,获取网络流量中的sql语句之后,还包括:步骤s601、步骤s602和步骤s603。
s601,判断sql语句是否已经存在于缓存中;
s602,若sql语句未存在于缓存中,则将sql语句保存到缓存中,同时保存sql语句的第二时间信息;
s603,若缓存中已包含有sql语句,则更新sql语句的第二时间信息。
具体的,在步骤s202对网络流量进行解析,获取网络流量中的sql语句之后还包括:判断sql语句是否已经存在于缓存中,若sql语句未存在于缓存中,则将该sql语句保存到缓存中,同时保存sql语句的第二时间信息,即保存该sql语句的抓取时间,若sql语句已存在于缓存中,则不需要再次对该sql语句进行重复保存,只需更新sql语句的第二时间信息,即更新该sql语句的抓取时间,通过判断sql语句是否已经存在于缓存中,可以实现对新的sql语句进行保存,同时保存其接收时,对已缓存的sql语句只进行时间信息的更新,可以有效减少了缓存的压力。
需要说明的是,所述缓存用于存储监控中心解析网络流量时产生的信息,例如sql语句、sql语句的抓取时间、tcp报文信息等,供监控中心调用。在本申请提供的实施例中,所述缓存可以是redis等key-value类型的存储系统。
请继续参考图7,图7是图2中步骤s205的一种具体实施方式的流程图,为了便于说明,仅示出与本申请相关的部分。
作为本实施例的一些可选实现方式,步骤s205将第一sql操作信息和第二sql操作信息进行比对,根据比对结果判断网络业务是否异常具体包括:步骤s701、步骤s702和步骤s703。
s701,分别提取第一sql操作信息、第二sql操作信息中的表名和sql字段,其中,第一sql操作信息包括第一表名和第一sql字段,第二sql操作信息包括第二表名和第二sql字段;
s702,分别比对第一表名和第二表名、第一sql字段和第二sql字段,得到比对结果;
s703,根据比对结果,判断网络业务是否异常。
具体的,在第一sql操作信息中提取第一表名和第一sql字段,在第二sql操作信息提取第二表名和第二sql字段,
在本申请提供的一种具体实施例中,比对第一表名和第二表名、第一sql字段和第二sql字段可以采用null算法进行比对,具体比对过程如下:
if(null==a&&null==b){system.out.println(“比对结果为空值”)},
其中,a表示第一sql操作信息中的第一表名或第一sql字段,b表示第二sql操作信息中的第二表名或第二sql字段。需要说明的是,在比对过程中,若a或b中的任意一个值不存在,则输出比对结果为空值。
if(null!=a&&null!=b&&a.equals(b)){system.out.println(“比对结果不为空值,且相同”)},
在比对过程中,若a均b不为空值,且a的值和b的值相同,输出比对结果不为空值,且相同,即比对结果不为空值且比对结果相同。
在本申请提供的另一些种具体实施例中,也可以采用三元算法或其他算法对第一表名和第二表名、第一sql字段和第二sql字段进行比对,本申请对此并不做限定。
在本申请提供的实施例中,根据比对结果,判断网络业务的异常情况具体包括:若比对结果不为空值且比对结果相同,则判定网络业务为正常业务,若对结果为空值或比对结果不相同,则判定网络业务为异常业务,通过上述判定实现网络业务进行自动监控。
请继续参考图8,图8是图2中步骤s206的一种具体实施方式的流程图,为了便于说明,仅示出与本申请相关的部分。
作为本实施例的一些可选实现方式,在步骤s206在判定网络业务为异常业务之后,还包括:
s801,获取异常业务的sql语句和执行异常业务的sql语句后产生的异常提示语;
s802,将异常业务的sql语句和异常提示语进行组合,得到业务异常提示信息;
s803,将业务异常提示信息进行输出。
具体的,在步骤s206在判定网络业务为异常业务之后,获取该异常业务的sql语句和执行异常业务的sql语句后产生的异常提示语,将异常业务的sql语句和异常提示语进行组合,得到业务异常提示信息,将业务异常提示信息进行输出。
在本申请提供的一种具体实施例中,异常网络业务的sql语句为:“select*fromtb_userwhereusername={username}andpassword={pwd}”,执行该异常网络业务的sql语句后得到“业务功能调用失败”的异常提示语,监控中心将该异常业务的sql语句和异常提示语进行组合,得到业务异常提示信息“业务功能调用失败select*fromtb_userwhereusername={username}andpassword={pwd}”,最后将得到业务异常提示信息输出到用户界面,方便用户查看。
本申请公开了一种基于sql查询的网络业务监控方法、装置、设备及存储介质,属于计算机技术领域,所述监控方法通过抓取至少一个业务系统上的网络流量;对网络流量进行解析,获取网络流量中的sql语句;根据sql语句对目标数据库进行sql操作,得到第一sql操作信息,其中,目标数据库为至少一个业务系统的数据库;获取目标数据库的日志文件,在目标数据库的日志文件中查询与sql语句对应的第二sql操作信息,其中,第二sql操作信息为业务系统在进行sql语句操作时产生的信息;将第一sql操作信息和第二sql操作信息进行比对,根据比对结果判断网络业务是否异常;若比对结果不为空值且比对结果相同,则判定网络业务为正常业务,否则判定网络业务为异常业务。与现有技术相比,本申请公开的基于sql查询的网络业务监控方法不需要业务系统再次进行sql语句操作来进行网络业务的异常情况的判断,仅通过比对根据sql语句对目标数据库进行sql操作得到第一sql操作信息和通过查询目标数据库的日志文件得到的第二sql操作信息,就可以判断网络业务的异常情况,因此可以实现对不同业务系统的网络业务进行自动监控,提高了监控系统的可移植性,有利于企业的系统运营人员快速查找异常的网络业务,极大地提高了大数据量网络业务异常数据排查的效率和准确度。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机可读指令来指令相关的硬件来完成,该计算机可读指令可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)等非易失性存储介质,或随机存储记忆体(randomaccessmemory,ram)等。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
实施例二
进一步参考图9,作为对上述图2所示方法的实现,本申请提供了基于sql查询的网络业务监控装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。所述基于sql查询的网络业务监控装置包括:
流量抓取模块901,用于抓取至少一个业务系统上的网络流量;
流量解析模块902,用于对网络流量进行解析,获取网络流量中的sql语句;
sql操作模块903,用于根据sql语句对目标数据库进行sql操作,得到第一sql操作信息,其中,目标数据库为至少一个业务系统的数据库;
sql查询模块904,用于获取目标数据库的日志文件,在目标数据库的日志文件中查询与sql语句对应的第二sql操作信息,其中,第二sql操作信息为业务系统在进行sql语句操作时产生的信息;
异常判断模块905,用于将第一sql操作信息和第二sql操作信息进行比对,根据比对结果判断网络业务是否异常;
判断结果模块906,用于若比对结果不为空值且比对结果相同,则判定网络业务为正常业务,否则判定网络业务为异常业务。
进一步的,该基于sql查询的网络业务监控装置还包括:
tcp信息获取模块907,用于获取网络流量中tcp网络流量包;
tcp信息解析模块908,用于对tcp网络流量包进行解析,得到tcp报文信息,其中tcp报文信息包括目标数据库的ip地址、目标数据库的端口号、本地端口的ip地址、本地端口的端口号和第一时间信息,第一时间信息为tcp报文的抓取时间。
进一步的,该基于sql查询的网络业务监控装置还包括:
sql信息获取模块909,用于获取第二时间信息,第二时间信息为sql语句的抓取时间;
时间信息判断模块910,用于判断第一时间信息和第二时间信息是否一致;
时间信息判断结果模块911,用于若第一时间信息和第二时间信息一致,则将tcp报文信息和sql语句进行组合,形成请求指令;
请求操作模块912,用于根据请求指令,请求对目标数据库进行sql操作。
进一步的,该基于sql查询的网络业务监控装置还包括:
指令认证模块913,用于接收目标数据库的认证指令;
认证操作模块914,用于对目标数据库的ip地址、目标数据库的端口号、本地端口的ip地址、本地端口的端口号进行认证操作;
认证结果模块915,用于若认证通过,则根据请求指令对目标数据库进行sql操作。
进一步的,该基于sql查询的网络业务监控装置还包括:
缓存判断模块916,用于判断sql语句是否已经存在于缓存中;
缓存判断结果模块917,用于若sql语句未存在于缓存中,则将sql语句保存到缓存中,同时保存sql语句的第二时间信息;
更新模块918,用于若缓存中已包含有sql语句,则更新sql语句的第二时间信息。
进一步的,异常判断模块905具体包括:
操作信息提取单元951,用于分别提取第一sql操作信息、第二sql操作信息中的表名和sql字段,其中,第一sql操作信息包括第一表名和第一sql字段,第二sql操作信息包括第二表名和第二sql字段;
比对单元952,用于分别比对第一表名和第二表名、第一sql字段和第二sql字段,得到比对结果;
判断单元953,用于根据比对结果,判断网络业务的异常情况。
进一步的,该基于sql查询的网络业务监控装置还包括:
异常信息获取模块919,用于获取异常业务的sql语句和执行异常业务的sql语句后产生的异常提示语;
异常信息组合模块920,用于将异常业务的sql语句和异常提示语进行组合,得到业务异常提示信息;
异常信息输出模块921,用于将业务异常提示信息进行输出。
本申请公开了一种基于sql查询的网络业务监控装置,包括:流量抓取模块901,用于抓取至少一个业务系统上的网络流量;流量解析模块902,用于对网络流量进行解析,获取网络流量中的sql语句;sql操作模块903,用于根据sql语句对目标数据库进行sql操作,得到第一sql操作信息,其中,目标数据库为至少一个业务系统的数据库;sql查询模块904,用于获取目标数据库的日志文件,在目标数据库的日志文件中查询与sql语句对应的第二sql操作信息,其中,第二sql操作信息为业务系统在进行sql语句操作时产生的信息;异常判断模块905,用于将第一sql操作信息和第二sql操作信息进行比对,根据比对结果判断网络业务是否异常;判断结果模块906,用于若比对结果不为空值且比对结果相同,则判定网络业务为正常业务,否则,判定网络业务为异常业务。与现有技术相比,本申请公开的基于sql查询的网络业务监控装置不需要业务系统再次进行sql语句操作来进行网络业务的异常情况的判断,仅通过比对根据sql语句对目标数据库进行sql操作得到第一sql操作信息和通过查询目标数据库的日志文件得到的第二sql操作信息,就可以判断网络业务的异常情况,因此可以实现对不同业务系统的网络业务进行自动监控,提高了监控系统的可移植性,有利于企业的系统运营人员快速查找异常的网络业务,极大地提高了大数据量网络业务异常数据排查的效率和准确度。
实施例三
为解决上述技术问题,本申请实施例还提供计算机设备。具体请参阅图10,图10为本实施例计算机设备基本结构框图。
所述计算机设备6包括通过系统总线相互通信连接存储器61、处理器62、网络接口63。需要指出的是,图中仅示出了具有组件61-63的计算机设备6,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。其中,本技术领域技术人员可以理解,这里的计算机设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(applicationspecificintegratedcircuit,asic)、可编程门阵列(field-programmablegatearray,fpga)、数字处理器(digitalsignalprocessor,dsp)、嵌入式设备等。
所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机设备可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。
所述存储器61至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器61可以是所述计算机设备6的内部存储单元,例如该计算机设备6的硬盘或内存。在另一些实施例中,所述存储器61也可以是所述计算机设备6的外部存储设备,例如该计算机设备6上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。当然,所述存储器61还可以既包括所述计算机设备6的内部存储单元也包括其外部存储设备。本实施例中,所述存储器61通常用于存储安装于所述计算机设备6的操作系统和各类应用软件,例如基于sql查询的网络业务监控方法的程序代码等。此外,所述存储器61还可以用于暂时地存储已经输出或者将要输出的各类数据。
所述处理器62在一些实施例中可以是中央处理器(centralprocessingunit,cpu)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器62通常用于控制所述计算机设备6的总体操作。本实施例中,所述处理器62用于运行所述存储器61中存储的程序代码或者处理数据,例如运行所述基于sql查询的网络业务监控方法的程序代码。
所述网络接口63可包括无线网络接口或有线网络接口,该网络接口63通常用于在所述计算机设备6与其他电子设备之间建立通信连接。
本申请还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有基于sql查询的网络业务监控方法的程序,所述基于sql查询的网络业务监控方法的程序可被至少一个处理器执行,以使所述至少一个处理器执行如上述的基于sql查询的网络业务监控方法的步骤。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例所述的方法。
显然,以上所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例,附图中给出了本申请的较佳实施例,但并不限制本申请的专利范围。本申请可以以许多不同的形式来实现,相反地,提供这些实施例的目的是使对本申请的公开内容的理解更加透彻全面。尽管参照前述实施例对本申请进行了详细的说明,对于本领域的技术人员来而言,其依然可以对前述各具体实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等效替换。凡是利用本申请说明书及附图内容所做的等效结构,直接或间接运用在其他相关的技术领域,均同理在本申请专利保护范围之内。