发明内容
本发明的主要目的在于提供一种日志管理方法、系统及计算机可读存储介质,旨在解决现有分布式服务器中运行日志查找不方便的技术问题。
为实现上述目的,本发明提供一种日志管理方法,所述日志管理方法应用于日志管理系统,所述日志管理系统包括日志服务器和业务服务器,所述日志管理方法包括:
所述日志服务器接收所述业务服务器发送的日志存储请求,所述日志存储请求包括业务名称;
根据所述业务名称确定所述日志存储请求的业务类型,并根据所述业务类型将所述日志存储请求分发到对应的日志存储队列中;
从所述日志存储队列中调取所述日志存储请求,并将所述日志存储请求中的日志信息写入到对应的预设日志文件中。
可选地,所述日志管理方法还包括:
每隔预设时间检测所述预设日志文件中的日志信息是否超出预设保留时间范围和/或预定容量;
当所述预设日志文件中的日志信息超出预设保留时间范围和/或预定容量时,则根据所述日志信息的存储时间删除对应的日志信息,以使得所述预设日志文件中的日志信息在预设保留时间范围和/或预定容量内。
可选地,所述日志管理方法还包括:
当接收到日志查询请求时,根据所述日志查询请求确定对应的业务类型;
根据所述业务类型从对应的预设日志文件中调取对应的日志信息。
可选地,所述接收所述业务服务器发送的日志存储请求的步骤之前,包括:
根据所述业务类型在所述日志服务器中预先创建对应的预设日志文件。
可选地,所述日志信息包括日志内容和所述业务服务器的节点名称,所述日志服务器的硬盘为固态硬盘。
此外,为实现上述目的,本发明还提供一种日志管理系统,所述日志管理系统包括日志服务器和业务服务器,所述日志管理系统还包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的日志管理程序,所述日志管理程序被所述处理器执行时实现以下步骤:
所述日志服务器接收所述业务服务器发送的日志存储请求,所述日志存储请求包括业务名称;
根据所述业务名称确定所述日志存储请求的业务类型,并根据所述业务类型将所述日志存储请求分发到对应的日志存储队列中;
从所述日志存储队列中调取所述日志存储请求,并将所述日志存储请求中的日志信息写入到对应的预设日志文件中。
可选地,所述日志管理程序被所述处理器执行时还实现以下步骤:
每隔预设时间检测所述预设日志文件中的日志信息是否超出预设保留时间范围和/或预定容量;
当所述预设日志文件中的日志信息超出预设保留时间范围和/或预定容量时,则根据所述日志信息的存储时间删除对应的日志信息,以使得所述预设日志文件中的日志信息在预设保留时间范围和/或预定容量内。
可选地,所述日志管理程序被所述处理器执行时还实现以下步骤:
当接收到日志查询请求时,根据所述日志查询请求确定对应的业务类型;
根据所述业务类型从对应的预设日志文件中调取对应的日志信息。
可选地,所述日志管理程序被所述处理器执行时还实现以下步骤:
根据所述业务类型在所述日志服务器中预先创建对应的预设日志文件。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有日志管理程序,所述日志管理程序被处理器执行时实现以下步骤:
所述日志服务器接收所述业务服务器发送的日志存储请求,所述日志存储请求包括业务名称;
根据所述业务名称确定所述日志存储请求的业务类型,并根据所述业务类型将所述日志存储请求分发到对应的日志存储队列中;
从所述日志存储队列中调取所述日志存储请求,并将所述日志存储请求中的日志信息写入到对应的预设日志文件中。
本发明提供一种日志管理方法、系统及计算机可读存储介质,所述日志管理方法应用于日志管理系统,所述日志管理系统包括日志服务器和业务服务器,所述日志管理方法包括:所述日志服务器接收所述业务服务器发送的日志存储请求,所述日志存储请求包括业务名称;根据所述业务名称确定所述日志存储请求的业务类型,并根据所述业务类型将所述日志存储请求分发到对应的日志存储队列中;从所述日志存储队列中调取所述日志存储请求,并将所述日志存储请求中的日志信息写入到对应的预设日志文件中。通过上述方式,本发明通过创建一个共享且单独部署的日志收集节点,即日志服务器,来收集各业务服务器中产生的日志,当日志服务器接收到业务服务器发送的日志存储请求时,根据该请求中的业务名称确定该请求的业务类型,然后根据该业务类型将该请求分发到对应的日志存储队列中,进而将该请求中包含的日志信息写入到对应的预设日志文件中,本发明可根据各业务服务器发送的日志存储请求确定对应的业务类型,进而将相同业务类型的日志信息存储到同一日志文件中,可实现对分布式业务服务器中日志的统一收集管理,使得运维开发人员在排查问题时只需在对应的日志文件中进行查找,相比于现有技术中需要依次查看对应业务模块的所有业务服务器节点的日志,本发明更为方便快捷,可节省问题排查的时间,提高处理问题的效率。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在现有技术中,当同类业务模块有多个不同部署的业务服务器节点时,由于它们是同构的且提供相同的业务处理逻辑,当应用系统收到一个相应的业务请求时,通常会根据某种派发策略或随机派发给其中某一业务服务器节点进行处理,换而言之,运维开发人员是难于确定该业务请求将由哪一业务服务器节点来处理的,这种情况下,当发生故障问题时,运维开发人员在排查问题时很难进行定位,可能需要依次查看对应业务模块的所有业务服务器节点的运行日志,才能找到问题所在,从而导致问题排查的时间较长,处理问题的效率较低。
为了解决上述技术问题,本发明提供一种日志管理方法、系统及计算机可读存储介质,所述日志管理方法应用于日志管理系统,所述日志管理系统包括日志服务器和业务服务器,所述日志管理方法包括:所述日志服务器接收所述业务服务器发送的日志存储请求,所述日志存储请求包括业务名称;根据所述业务名称确定所述日志存储请求的业务类型,并根据所述业务类型将所述日志存储请求分发到对应的日志存储队列中;从所述日志存储队列中调取所述日志存储请求,并将所述日志存储请求中的日志信息写入到对应的预设日志文件中。通过上述方式,本发明通过创建一个共享且单独部署的日志收集节点,即日志服务器,来收集各业务服务器中产生的日志,当日志服务器接收到业务服务器发送的日志存储请求时,根据该请求中的业务名称确定该请求的业务类型,然后根据该业务类型将该请求分发到对应的日志存储队列中,进而将该请求中包含的日志信息写入到对应的预设日志文件中,本发明可根据各业务服务器发送的日志存储请求确定对应的业务类型,进而将相同业务类型的日志信息存储到同一日志文件中,可实现对分布式业务服务器中日志的统一收集管理,使得运维开发人员在排查问题时只需在对应的日志文件中进行查找,相比于现有技术中需要依次查看对应业务模块的所有业务服务器节点的日志,本发明更为方便快捷,可节省问题排查的时间,提高处理问题的效率。
请参阅图1,图1为本发明实施例方案涉及的硬件运行环境的终端结构示意图。
本发明实施例终端可以是PC,也可以是智能手机、平板电脑、便携计算机等可移动式终端设备。
如图1所示,该终端可以包括:处理器1001,例如CPU,通信总线1002,用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如Wi-Fi接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及日志管理程序。
在图1所示的终端中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端,与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的日志管理程序,并执行以下操作:
所述日志服务器接收所述业务服务器发送的日志存储请求,所述日志存储请求包括业务名称;
根据所述业务名称确定所述日志存储请求的业务类型,并根据所述业务类型将所述日志存储请求分发到对应的日志存储队列中;
从所述日志存储队列中调取所述日志存储请求,并将所述日志存储请求中的日志信息写入到对应的预设日志文件中。
进一步地,处理器1001可以调用存储器1005中存储的日志管理程序,还执行以下操作:
每隔预设时间检测所述预设日志文件中的日志信息是否超出预设保留时间范围和/或预定容量;
当所述预设日志文件中的日志信息超出预设保留时间范围和/或预定容量时,则根据所述日志信息的存储时间删除对应的日志信息,以使得所述预设日志文件中的日志信息在预设保留时间范围和/或预定容量内。
进一步地,处理器1001可以调用存储器1005中存储的日志管理程序,还执行以下操作:
当接收到日志查询请求时,根据所述日志查询请求确定对应的业务类型;
根据所述业务类型从对应的预设日志文件中调取对应的日志信息。
进一步地,处理器1001可以调用存储器1005中存储的日志管理程序,还执行以下操作:
根据所述业务类型在所述日志服务器中预先创建对应的预设日志文件。
进一步地,所述日志信息包括日志内容和所述业务服务器的节点名称,所述日志服务器的硬盘为固态硬盘。
基于上述硬件结构,提出本发明日志管理方法实施例。
本发明提供一种日志管理方法。
请参阅图2,图2为本发明日志管理方法第一实施例的流程示意图。
在本发明实施例中,该日志管理方法应用于日志管理系统,该日志管理系统包括日志服务器和业务服务器,该日志管理方法包括:
步骤S10,所述日志服务器接收所述业务服务器发送的日志存储请求,所述日志存储请求包括业务名称;
在本发明实施例中,在上述步骤S10之前,该日志管理方法还包括:
根据所述业务类型在所述日志服务器中预先创建对应的预设日志文件。
在本发明实施例中,该日志管理方法应用于日志管理系统,具体的,请参阅图3,图3为本发明实施例方案涉及的日志管理系统架构示意图,该日志管理系统包括日志服务器和业务服务器,其中,业务服务器是指在应用系统中对外提供业务服务的高性能计算机,用于接收来自客户端的业务请求,并对业务请求进行响应和处理,为客户端提供各种不同的业务服务,当业务处理完成后会产生对应的日志;日志服务器是新创建的一个共享且单独部署的日志收集节点,用于接收各业务处理服务器发送的日志存储请求,根据该日志存储请求确定对应的业务类型,进而根据业务类型将该日志存储请求中包含的日志信息写入到对应的预设日志文件中。该日志管理方法用于对分布式的业务服务器中的运行日志进行统一收集管理,可将不同业务服务器中的日志信息按业务类型分别存储到对应的文件中,方便运维开发人员在排查问题时进行查找,对问题所在处进行准确定位,从而节省问题排查的时间,提高处理问题的效率。
需要说明的是,为保障日志管理系统的安全性,可各业务服务器和日志服务器之间可采用局域网连接,比使用广域网更稳定,数据传输实时性更好。具体实施中,也可以在广域网中相连,然后可设置防火墙等安全措施来保证数据的安全性。
在本发明实施例中,可以根据应用系统中存在的业务类型在该日志服务器中预先创建对应的预设日志文件,使得同一业务类型的日志信息存储在同一预设日志文件中。例如,某一电商应用系统中包括订单业务和用户管理业务时,则可在日志服务器中创建日志文件order_daily.log和user_manage_daily.log,分别用于存储订单业务和用户管理业务中的相关日志。
日志服务器可接收业务服务器发送的日志存储请求,其中,日志存储请求包括日志信息和业务名称。为方便说明,本实施例中以某一电商应用系统中的订单业务服务器和用户管理业务服务器为例进行说明,具体的,可参照图4,图4为本发明日志管理方法的一应用场景示意图,如图4所示,该电商应用系统中对订单模块部署了2个业务服务器节点O1和O2,用户管理模块部署了1个业务服务器节点M1。当终端用户A和B分别向服务端发送了一个提交订单的业务请求时,服务端的负载均衡节点按照事前约定的策略,用户A的请求内容被转发到订单模块的业务服务器O1处理,用户B的请求内容则被转发到订单模块的业务服务器O2处理,业务服务器O1和业务服务器O2在处理订单过程中会分别产生了一条或多条相应的日志内容,此时,可通过内网网络(即局域网)实时远程访问日志服务器对外提供的写磁盘日志信息的接口,进而发起日志存储请求,其中,写磁盘日志信息接口的输入参数中除日志内容外,还包括业务名称和业务服务器的节点名称,即该志存储请求包括日志信息(日志信息包括日志内容和业务服务器的节点名称)和业务名称。在该例中,业务名称可以为订单处理,业务服务器的节点名称分别为业务服务器O1、业务服务器O2,当然,在具体实施例中,业务服务器的节点名称也可以替换为业务服务器的地址信息,即该业务服务器的IP地址和/或DNS服务器地址。
再例如,当终端用户A和B分别向服务端发送了一个修改用户昵称的业务请求时,由于用户管理模块只部署了1个业务服务器节点M1,此时,则将用户A和B的请求内容都被转发到用户管理模块的业务服务器节点M1处理,业务服务器M1在处理过程中会分别产生了一条或多条相应的日志内容,此时,可通过内网网络(即局域网)实时远程访问日志服务器对外提供的写磁盘日志信息的接口,进而发起日志存储请求,在该例中,日志存储请求中的业务名称可以为昵称修改,业务服务器的节点名称为业务服务器M1,当然,在具体实施例中,业务服务器的节点名称也可以替换为业务服务器的地址信息,即该业务服务器M1的IP地址和/或DNS服务器地址。
步骤S20,根据所述业务名称确定所述日志存储请求的业务类型,并根据所述业务类型将所述日志存储请求分发到对应的日志存储队列中;
然后,日志服务器会根据该日志存储请求中的业务名称确定该请求的业务类型,例如,订单处理对应订单业务,昵称修改对应用户管理业务,然后根据业务类型将日志存储请求分发到对应的日志存储队列中。
需要说明的是,该日志服务器在内存中为不同的业务类型建立了各自独立的日志存储队列,按照接收到各业务服务器发送的日志存储请求的先后时间顺序将日志存储请求分发到对应的日志存储队列中,其中,建立日志存储队列,即消息队列,是由于消息列队具有低耦合、可靠投递、广播、流量控制、最终一致性等功能,从而通过使用日志存储队列,可以异步处理各日志存储请求,进而缓解系统的压力。
步骤S30,从所述日志存储队列中调取所述日志存储请求,并将所述日志存储请求中的日志信息写入到对应的预设日志文件中。
最后,日志服务器通过预先创建的线程从各个日志存储队列中调取所述日志存储请求中的日志信息写入到对应的预设日志文件中,从而将相同业务类型的日志信息存储到同一日志文件中,可实现对分布式业务服务器中日志的统一收集管理,使得运维开发人员在排查问题时只需在对应的日志文件中进行查找,相比于现有技术中需要依次查看对应业务模块的所有业务服务器节点的日志,本发明更为方便快捷,可节省问题排查的时间,提高处理问题的效率。
其中,日志信息包括日志内容和业务服务器的节点名称,业务服务器的节点名称用于追溯日志内容的详细来源,从而方便运维开发人员通过日志内容确定出问题所在时,可以根据对应的业务服务器的节点名称去查找对应的业务服务器,进而进行维护修理。需要说明的是,日志服务器根据各业务类型分别创建了对应的独立的写磁盘日志线程,它们分别负责不断从各业务类型对应的日志存储队列中(队列为先进先出的数据结构,每次取队列头元素)取出所述日志存储请求,并将该日志存储请求中的日志信息写入对应的预设日志文件中。例如,订单业务类的日志信息均可以存储于预设日志文件order_daily.log中,用户管理业务的日志信息均可以存储于预设日志文件user_manage_daily.log中,需要说明的是,在具体实施例中,预设日志文件还可以根据存储日期设置多个,将同一业务类型的同一天(或每一周等)的日志信息存在在对应的预置日志文件中,或根据各业务类型中的不同业务名称设置多个,将同一业务类型的同一业务名称的日志信息存在在对应的预置日志文件中,然后设定日志文件夹,将同一业务类型的日志文件存储在对应的日志文件夹中,从而更加便于运维开发人员的查找和查看。
还需要说明的是,日志服务器的硬盘为固态硬盘,从而可加快写磁盘的速度,提高日志信息的存储速度。此外,由于内网服务器间的局域网通讯开销相比于各业务服务器写本地磁盘的开销较少,因此本法买那个通过将写日志信息的磁盘操作转嫁到更适合快速写磁盘操作的日志服务器来执行,可达到减轻各业务服务器直接写本地磁盘导致的性能开销的效果。
本发明实施例提供一种日志管理方法,所述日志管理方法应用于日志管理系统,所述日志管理系统包括日志服务器和业务服务器,所述日志管理方法包括:所述日志服务器接收所述业务服务器发送的日志存储请求,所述日志存储请求包括业务名称;根据所述业务名称确定所述日志存储请求的业务类型,并根据所述业务类型将所述日志存储请求分发到对应的日志存储队列中;从所述日志存储队列中调取所述日志存储请求,并将所述日志存储请求中的日志信息写入到对应的预设日志文件中。通过上述方式,本发明通过创建一个共享且单独部署的日志收集节点,即日志服务器,来收集各业务服务器中产生的日志,当日志服务器接收到业务服务器发送的日志存储请求时,根据该请求中的业务名称确定该请求的业务类型,然后根据该业务类型将该请求分发到对应的日志存储队列中,进而将该请求中包含的日志信息写入到对应的预设日志文件中,本发明可根据各业务服务器发送的日志存储请求确定对应的业务类型,进而将相同业务类型的日志信息存储到同一日志文件中,可实现对分布式业务服务器中日志的统一收集管理,使得运维开发人员在排查问题时只需在对应的日志文件中进行查找,相比于现有技术中需要依次查看对应业务模块的所有业务服务器节点的日志,本发明更为方便快捷,可节省问题排查的时间,提高处理问题的效率。
进一步的,请参阅图5,图5为本发明日志管理方法第二实施例的流程示意图。
基于图2所示的第一实施例,在步骤S30之后,该日志管理方法还包括:
步骤S40,每隔预设时间检测所述预设日志文件中的日志信息是否超出预设保留时间范围和/或预定容量;
步骤S50,当所述预设日志文件中的日志信息超出预设保留时间范围和/或预定容量时,则根据所述日志信息的存储时间删除对应的日志信息,以使得所述预设日志文件中的日志信息在预设保留时间范围和/或预定容量内。
在本发明实施例中,由于日志服务器中固态硬盘的存储量是有限的,为避免部分无用的日志占用内存,影响固态硬盘的写入速度,本发明实施例中每隔预设时间会清除其中部分日志,从而扩大存储空间,提高固态硬盘的写入速度。具体的,日志服务器每隔预设时间检测预设日志文件中的日志信息是否超出预设保留时间范围和/或预定容量时,当预设日志文件中的日志信息超出预设保留时间范围和/或预定容量时,则根据日志信息的存储时间删除对应的日志信息,以使得预设日志文件中的日志信息在预设保留时间范围和/或预定容量内。其中,预设保留时间范围和预定容量可以为系统预设的,也可以为用户手动设置的。
根据日志信息的存储时间删除对应的日志信息,是指当预设日志文件中存在超出预设保留时间范围(例如3个月)的日志信息,但日志信息的存储量未超出预定容量时,则删除该部分超出预设保留时间范围的日志信息;或者,当预设日志文件中的日志信息的存储量超出预定容量,但不存在超出预设保留时间范围的日志信息时,则根据日志信息的存储时间,依次删除其中存储时间最早的日志信息,直至预设日志文件中的日志信息的存储量在预定容量内;或者,当预设日志文件中存在超出预设保留时间范围的日志信息,且日志信息的存储量超出预定容量时,可以优先删除该部分超出预设保留时间范围的日志信息,在检测剩余日志信息的存储量是否超出预定容量,若是,则继续根据日志信息的存储时间,依次删除其中存储时间最早的日志信息,直至预设日志文件中的日志信息的存储量在预定容量内。
进一步的,请参阅图6,图6为本发明日志管理方法第三实施例的流程示意图。
基于图3所示的第一实施例,在步骤S30之后,该日志管理方法还包括:
步骤S60,当接收到日志查询请求时,根据所述日志查询请求确定对应的业务类型;
步骤S70,根据所述业务类型从对应的预设日志文件中调取对应的日志信息。
在本发明实施例中,当运维开发人员接收到终端用户的投诉时,可以通过智能终端(如PC、便携式计算机等)向该日志服务器发送日志查询请求,日志服务器会根据该日志查询请求确定对应的业务类型,根据所述业务类型从对应的预设日志文件中调取对应的日志信息,并可将日志信息发送至对应的智能终端,以供运维开发人员进行查看分析。需要说明的是,在具体实施例中,运维开发人员还可以通过该日志服务器中相关的应用中触发日志查询请求,进而日志服务器根据该日志查询指令跳转到对应的预设日志文件,使得用户查看该预设日志文件内的相关日志信息。
在本发明实施例中,该日志信息包括日志内容和业务服务器的节点名称,例如O1、O2或M1,当然,在具体实施例中,业务服务器的节点名称也可以替换为业务服务器的地址信息,即该业务服务器的IP地址和/或DNS服务器地址。业务服务器的节点名称用于追溯日志内容的详细来源,从而方便运维开发人员通过日志内容确定出问题所在时,可以根据对应的业务服务器的节点名称去查找对应的业务服务器,进而进行维护修理。例如,当终端用户A投诉其提交的订单处理失败时,服务端的运维开发人员只需在对应的日志文件order_daily.log中查找相关的日志信息,并进行分析即可,无需依次查看各个订单业务服务器(如O1和O2)中的日志,从而可节省问题排查的时间,提高处理问题的效率,当运维开发人员根据日志信息中的日志内容分析出问题所在时,则可以直接根据对应的业务服务器的节点名称确定出对应的订单业务服务器,即O1,进而对该订单服务器进行修理。
本发明还提供一种日志管理系统,该日志管理系统包括日志服务器和业务处理服务器,该日志管理系统还包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的日志管理程序,所述日志管理程序被所述处理器执行时实现如以上任一项实施例所述的日志管理方法的步骤。
本发明日志管理系统的具体实施例与上述日志管理方法各实施例基本相同,在此不作赘述。
本发明还提供一种计算机可读存储介质,该计算机可读存储介质上存储有日志管理程序,所述日志管理程序被处理器执行时实现如以上任一项实施例所述的日志管理方法的步骤。
本发明计算机可读存储介质的具体实施例与上述日志管理方法各实施例基本相同,在此不作赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。