CN112463570B - 一种日志统计方法、装置及系统 - Google Patents

一种日志统计方法、装置及系统 Download PDF

Info

Publication number
CN112463570B
CN112463570B CN202011477819.9A CN202011477819A CN112463570B CN 112463570 B CN112463570 B CN 112463570B CN 202011477819 A CN202011477819 A CN 202011477819A CN 112463570 B CN112463570 B CN 112463570B
Authority
CN
China
Prior art keywords
log data
log
statistics
kafka
statistical result
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202011477819.9A
Other languages
English (en)
Other versions
CN112463570A (zh
Inventor
袁自强
白雪珂
舒南飞
林文辉
李瑞祥
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Aisino Corp
Original Assignee
Aisino Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Aisino Corp filed Critical Aisino Corp
Priority to CN202011477819.9A priority Critical patent/CN112463570B/zh
Publication of CN112463570A publication Critical patent/CN112463570A/zh
Application granted granted Critical
Publication of CN112463570B publication Critical patent/CN112463570B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3452Performance evaluation by statistical analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1805Append-only file systems, e.g. using logs or journals to store data
    • G06F16/1815Journaling file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2462Approximate or statistical queries
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Data Mining & Analysis (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Databases & Information Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Fuzzy Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明提供一种日志统计方法、装置及系统,用于解决现有的日志统计方法存在容易出现并发问题影响日志数据正常储存,以及中间统计结果与全量日志数据不一致的技术问题,所述方法应用于日志统计系统,所述日志统计系统包括logstash、kafka以及mysql数据库,所述方法包括:通过所述logstash获取日志数据,将所述日志数据通过所述logstash的kafka output插件输出到所述kafka中;消费存储于所述kafka中的日志数据,并统计已消费日志数据,得到统计结果,将所述统计结果输出到所述mysql数据库中。

Description

一种日志统计方法、装置及系统
技术领域
本发明涉及计算机技术领域,尤其涉及一种日志统计方法、装置及系统。
背景技术
随着信息技术的发展,数据量迅速增长,数据的积累也越来越大。在进行数据的传输、交换和处理时,安全性是一个重妥的考虑因素,为此,许多与信息处理相关的设备(如防火墙、入侵监测系统、路由器和服务器等)都会产生日志,其中记录了设备上和网络中每天发生的各种各样的事情,可以通过对日志的查询和统计来了解各个设备和整个网络的状况。如果日志量相对较少(几百条或更少),有经验的管理员可以通过逐条阅读,发现其中的异常,查找到所关心的事件日志并统计出数据。但是,由于在信息安全领域,为数众多的前述设备每天、甚至每时每刻都在产生日志,日志的数量已经达到每天几万条、甚至上百万条记录,这样的数量已经超出了管理员能处理的范围,管理员通过逐条阅读和处理已经无法在限定的时间内处理完这些日志了。而从这些日志中统计出的宏观数据,如:流量、非授权访问次数和入侵攻击次数等等,对于管理员了解整个网络的状况,发现问题是非常重要的。因此在审计系统中实现日志数据的统计功能是非常必要的。
目前审计系统的日志数据统计主要依赖于ELK系统,即elasticsearch、logstash和kibana,其中,elasticsearch负责日志数据检索和储存,logstash负责日志数据的收集和分析、处理,kibana负责日志数据的可视化。由于ELK系统主要支持的是专业人员的运维开发,而不是一般的客户访问,如果需要统计的日志数据数量庞大,不仅统计日志数据的效率较低,而且将对elasticsearch造成很大的性能压力,影响日志数据的正常储存。虽然一些方法可以先对中间统计结果进行预先统计与储存,例如以分钟为单位统计中间统计结果,这样一天产生的数据条数就被限制在了1440条,再对中间统计结果进行统计,从而提高统计日志数据的效率,但是,中间统计结果与全量日志数据可能存在不一致的情况,导致最终的统计结果存在错误。
可见,现有的日志统计方法存在容易出现并发问题影响日志数据正常储存,以及中间统计结果与全量日志数据不一致的问题。
发明内容
本申请实施例提供一种日志统计方法、装置及系统,用于解决现有的日志统计方法存在容易出现并发问题影响日志数据正常储存,以及中间统计结果与全量日志数据不一致的技术问题。
第一方面,为解决上述技术问题,本申请实施例提供一种日志统计方法,应用于日志统计系统,所述日志统计系统包括logstash、kafka以及mysql数据库,该方法的技术方案如下:
通过所述logstash获取日志数据,将所述日志数据通过所述logstash的kafkaoutput插件输出到所述kafka中;
消费存储于所述kafka中的日志数据,并统计已消费日志数据,得到统计结果,将所述统计结果输出到所述mysql数据库中。
在本申请实施例中,可以通过logstash获取日志数据,将日志数据通过logstash的kafka output插件输出到kafka中,消费存储于kafka中的日志数据,并统计已消费日志数据,得到统计结果,将统计结果输出到mysql数据库中。通过将获取的需要统计的日志数据存储到kafka中,不仅可以使用kafka作为缓冲提高日志统计的稳定性,应对日志数据产生速度不均匀的问题,而且还可以借用kafka的ACK机制,在日志数据入库失败时,例如数据库崩溃或网络问题导致连接超时,日志数据会存储在kafka中等待重新消费,而非丢失日志数据,从而保证了日志数据的完整性和一致性,避免出现中间统计结果与全量日志数据不一致的情况,且统计kafka已消费的日志数据,将统计结果存入mysql数据库中,不会影响elasticsearch中存储的日志数据,避免出现并发问题影响日志数据正常储存的情况。
一种可选实施方式中,所述统计已消费日志数据,得到统计结果,将所述统计结果输出到所述mysql数据库中,包括:
在第一时刻统计生成时间在第一时间段内的已消费日志数据,得到第一统计结果;
判断所述mysql数据库中是否已有第二统计结果,其中,所述第二统计结果为在第二时刻统计的生成时间在所述第一时间段内的已消费日志数据的统计结果,所述第二时刻为所述第一时刻之前的时刻;
若有,则将所述第一统计结果与所述mysql数据库中的所述第二统计结果进行合并;
若没有,则将所述第一统计结果插入所述mysql数据库中。
一种可选实施方式中,所述日志统计系统还包括elasticsearch,所述通过所述logstash获取日志数据之后,还包括:
将所述日志数据通过所述logstash的elasticsearch output插件输出到所述elasticsearch中;
将存储于elasticsearch中日志数据与所述mysql数据库中的所述统计结果进行比较,判断所述mysql数据库中的所述统计结果是否存在错误;
若存在,则删除所述mysql数据库中的错误统计结果。
一种可选实施方式中,所述删除所述mysql数据库中的错误统计结果之后,还包括:
将第一日志数据输出到所述kafka中,其中,所述第一日志数据为所述elasticsearch中与所述错误统计结果对应的日志数据;
消费存储于所述kafka中的所述第一日志数据,并统计已消费所述第一日志数据,得到第三统计结果,将所述第三统计结果输出到所述mysql数据库中。
第二方面,本申请实施例还提供一种日志统计装置,应用于日志统计系统,所述日志统计系统包括logstash、kafka以及mysql数据库,包括:
获取模块,用于通过所述logstash获取日志数据,将所述日志数据通过所述logstash的kafka output插件输出到所述kafka中;
统计模块,用于消费存储于所述kafka中的日志数据,并统计已消费日志数据,得到统计结果,将所述统计结果输出到所述mysql数据库中。
一种可选实施方式中,所述统计模块,具体用于:
在第一时刻统计生成时间在第一时间段内的已消费日志数据,得到第一统计结果;
判断所述mysql数据库中是否已有第二统计结果,其中,所述第二统计结果为在第二时刻统计的生成时间在所述第一时间段内的已消费日志数据的统计结果,所述第二时刻为所述第一时刻之前的时刻;
若有,则将所述第一统计结果与所述mysql数据库中的所述第二统计结果进行合并;
若没有,则将所述第一统计结果插入所述mysql数据库中。
一种可选实施方式中,所述日志统计系统还包括elasticsearch,所述装置还包括第一处理模块,用于:
将所述日志数据通过所述logstash的elasticsearch output插件输出到所述elasticsearch中;
将存储于elasticsearch中日志数据与所述mysql数据库中的所述统计结果进行比较,判断所述mysql数据库中的所述统计结果是否存在错误;
若存在,则删除所述mysql数据库中的错误统计结果。
一种可选实施方式中,所述装置还包括第二处理模块,用于:
将第一日志数据输出到所述kafka中,其中,所述第一日志数据为所述elasticsearch中与所述错误统计结果对应的日志数据;
消费存储于所述kafka中的所述第一日志数据,并统计已消费所述第一日志数据,得到第三统计结果,将所述第三统计结果输出到所述mysql数据库中。
第三方面,本申请实施例还提供一种日志统计系统,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行第一方面中的任一种实施方式包括的步骤。
第四方面,本申请实施例还提供一种存储介质,该存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行第一方面中的任一种实施方式包括的步骤。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例。
图1为本申请实施例中的一种日志统计系统的结构示意图;
图2为本申请实施例中的一种日志统计方法的流程示意图;
图3为本申请实施例中的一种日志统计装置的结构示意图;
图4为本申请实施例中的一种日志统计系统的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,能够以不同于此处的顺序执行所示出或描述的步骤。
本申请的说明书和权利要求书及上述附图中的术语“第一”和“第二”是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的保护。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
本申请实施例中,“至少一个”可以表示至少两个,例如可以是两个、三个或者更多个,本申请实施例不做限制。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,在不做特别说明的情况下,一般表示前后关联对象是一种“或”的关系。
目前审计系统的日志数据统计主要依赖于ELK系统,即elasticsearch、logstash和kibana,其中,elasticsearch负责日志数据检索和储存,logstash负责日志数据的收集和分析、处理,kibana负责日志数据的可视化。由于ELK系统主要支持的是专业人员的运维开发,而不是一般的客户访问,如果需要统计的日志数据数量庞大,不仅统计日志数据的效率较低,而且将对elasticsearch造成很大的性能压力,影响日志数据的正常储存。虽然一些方法可以先对中间统计结果进行预先统计与储存,例如以分钟为单位统计中间统计结果,这样一天产生的数据条数就被限制在了1440条,再对中间统计结果进行统计,从而提高统计日志数据的效率,但是,中间统计结果与全量日志数据可能存在不一致的情况,导致最终的统计结果存在错误。可见,现有的日志统计方法存在容易出现并发问题影响日志数据正常储存,以及中间统计结果与全量日志数据不一致的问题。
鉴于此,本申请实施例提供一种日志统计方法,应用于日志统计系统,所述日志统计系统包括logstash、kafka以及mysql数据库,该方法可以通过logstash获取日志数据,将日志数据通过logstash的kafka output插件输出到kafka中,消费存储于kafka中的日志数据,并统计已消费日志数据,得到统计结果,将统计结果输出到mysql数据库中。通过将获取的需要统计的日志数据存储到kafka中,不仅可以使用kafka作为缓冲提高日志统计的稳定性,应对日志数据产生速度不均匀的问题,而且还可以借用kafka的ACK机制,在日志数据入库失败时,例如数据库崩溃或网络问题导致连接超时,日志数据会存储在kafka中等待重新消费,而非丢失日志数据,从而保证了日志数据的完整性和一致性,避免出现中间统计结果与全量日志数据不一致的情况,且统计kafka已消费的日志数据,将统计结果存入mysql数据库中,不会影响elasticsearch中存储的日志数据,避免出现并发问题影响日志数据正常储存的情况。
为了更好的理解上述技术方案,下面通过说明书附图以及具体实施例对本申请技术方案做详细的说明,应当理解本申请实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互组合。
图1为本申请实施例所提供方法可适用的一种日志统计系统的结构,当然本申请实施例所提供的方法可以适用到多种日志统计系统上,应当理解图1所示的日志统计系统是对可适用本申请实施例所提供方法的日志统计系统的简单说明,而不是对可适用本申请实施例所提供方法的日志统计系统的限定。
图1所示的日志统计系统包括logstash 101、elasticsearch102、kafka103以及mysql数据库104。logstash 101是一个具备实时处理能力的开源的数据收集引擎,可以动态地从不同的来源收集数据,将数据处理(过滤、变形)过之后统一输出到某个特定地址,为更多样化的数据分析做准备,logstash 101在本申请实施例中用于负责日志数据的收集和分析、处理。elasticsearch102是一个基于Lucene的搜索服务器,elasticsearch102中存储的数据为半结构化的数据(JSON结构的数据),它提供了一个基于RESTful web接口的分布式多用户能力的全文搜索引擎,elasticsearch102是用Java开发的,并作为Apache许可条款下的开放源码发布,elasticsearch102在本申请实施例中用于负责日志数据的检索和储存。kafka103是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写,kafka103是一种高吞吐量的分布式发布订阅消息系统,kafka103在本申请实施例中用于负责日志数据的存储。mysql数据库104在本申请实施例中用于负责日志数据统计结果的存储和储存。
请参见图2,为本申请实施例提供的一种日志统计方法,该方法可以由前述图1所示的日志统计系统执行。该方法的具体流程描述如下。
步骤201:通过logstash获取日志数据,将日志数据通过logstash的kafka output插件输出到kafka中。
在本申请实施例中,通过logstash获取日志数据之后,对logstash获取日志数据进行统计,但由于日志数据的产生速度不均匀,例如,上午为产生日志数据的低峰期,日志数据的产生速度较慢,每秒可产生100B日志数据,下午为产生日志数据的高峰期,日志数据的产生速度较快,每秒可产生1000B日志数据,而日志数据的统计速度一般是固定的,则日志数据的产生速度与日志数据的统计速度将不一致,当某个时间段产生的日志数据较多时,即当处于产生日志数据的高峰期时,日志统计系统无法同时对过多的日志数据进行处理,导致日志统计系统可能出现堵塞的情况,日志统计系统变得不再稳定。所以在对日志数据进行统计之前,需要先将日志数据通过logstash的kafka output插件输出到kafka中,再对kafka已消费的日志数据进行统计,通过使用kafka作为缓冲提高日志统计系统的稳定性,应对日志数据产生速度不均匀的问题,而且还可以借用kafka的ACK机制,在日志数据入库失败时,例如数据库崩溃或网络问题导致连接超时,日志数据会存储在kafka中等待重新消费,而非丢失日志数据,从而保证了日志数据的完整性和一致性,避免出现中间统计结果与全量日志数据不一致的情况。
需要说明的是,在本申请实施例中,在通过logstash获取日志数据后,还可以将logstash获取的日志数据通过logstash的elasticsearch output插件输出到elasticsearch中,使得能够在得到日志数据的统计结果后通过检索存储于elasticsearch中的日志数据,确定日志数据的统计结果是否存在错误。
步骤202:消费存储于kafka中的日志数据,并统计已消费日志数据,得到统计结果,将统计结果输出到mysql数据库中。
在本申请实施例中,在将日志数据通过logstash的kafka output插件输出到kafka中之后,为了读取存储于kafka中的日志数据,并且对存储于kafka中的日志数据进行统计,得到统计结果,可以创建kafka消费者对象,从kafka消费者对象中消费存储于kafka中的日志数据,其中,消费存储于kafka中的日志数据相当于读取存储于kafka中的日志数据。
需要说明的是,在本申请实施例中,kafka可以有两种消息模型:队列模型(queuing)和发布-订阅模型(publish-subscribe),队列模型的处理方式是一组消费者从服务器读取消息,一条消息只由其中的一个消费者来处理,发布-订阅模型的处理方式是消息被广播给所有的消费者,接收到消息的消费者都可以处理此消息。kafka为这两种模型提供了单一的消费者抽象模型:消费者组(consumer group),一个消费者组由多个消费者(Consumer)构成,同一个消费者组下面的消费者共同消费一个类(logstore)中的数据,消费者之间不会重复消费数据,即消费者用一个消费者组名标记自己,一个发布在主题(Topic)上消息将被分发给此消费者组中的一个消费者,假如所有的消费者都在一个组中,那么这就变成了队列模型,假如所有的消费者都在不同的组中,那么就完全变成了发布-订阅模型,一个消费者组中消费者订阅同一个Topic,每个消费者接受Topic的一部分分区的消息,从而实现对消费者的横向扩展,对消息进行分流。上述创建的kafka消费者对象可以为一个消费者组中的消费者,也可以为不同消费者组中的消费者,本申请实施例对此不作具体限制。
消费存储于kafka中的日志数据之后,统计已消费日志数据,得到统计结果,将统计结果输出到mysql数据库中,具体的,可以使用代码实现统计逻辑统计已消费日志数据,也可以使用flink、strom等流式计算框架统计已消费日志数据,本申请实施例对此不作具体限制。
需要说明的是,在本申请实施例中,在统计已消费日志数据时,需要根据统计维度数据统计出在各个不同统计条件下的统计结果,不同的日志有不同的统计维度。例如,对入侵攻击事件的报警日志进行统计时,统计的结果可以是入侵攻击的次数,统计维度包括时间范围、入侵攻击名等,统计维度可能的取值称之为统计维度数据,可以根据这些统计维度数据统计出在各个不同统计条件(如时间范围、入侵攻击名等)下的统计结果。统计维度数据包括两种:第一种是供用户输入的,例如时间;第二种是供用户从列表中选择的,例如入侵攻击名。第二种统计维度数据可以进一步分为两类:一类是稳定的,在系统运行期间不会变化的,例如网络协议,这类统计维度数据的处理方法比较简单;另一类是不断交化的,例如用户名、病毒名和入侵攻击名等等,由于各个设备在使用的时候存在用户的增删、病毒特征库及入侵攻击特征库的升级,这些统计维度数据是不断交化的,可以称之为动态统计维度数据。
以第一种统计维度数据为例,在第一时刻统计生成时间在第一时间段内的已消费日志数据,得到第一统计结果。由于日志数据的到达时间与生成时间可能不同,先生成的日志数据不一定先到达日志统计系统中的kafka,例如在12点30分统计11点到12点之间的已消费日志数据,得到统计结果,将该统计结果存储于mysql数据库中,在14点30分统计13点到14点之间的已消费日志数据时,发现还有11点到12点之间的已消费日志数据未被统计到,这时就需要将未被统计到的11点到12点之间的已消费日志数据的统计结果,合并到11点到12点之间的已消费日志数据的统计结果中,一般使用SQL语句中的“insert...updateon duplicate key”的语法实现统计结果的合并。则在得到第一统计结果之后,判断mysql数据库中是否已有第二统计结果,其中,第二统计结果为在第二时刻统计的生成时间在第一时间段内的已消费日志数据的统计结果,第二时刻为第一时刻之前的时刻,若有,则将第一统计结果与mysql数据库中的第二统计结果进行合并,若没有,则将第一统计结果插入mysql数据库中。
需要说明的是,在本申请实施例中,日志数据的统计结果可以是分布的(Distributive),也可以是代数的(Algebraic),本申请实施例对此不作具体限制。所谓统计结果是分布的,是指其可以通过如下分布方式进行统计得到:将需要统计的日志数据划分为多个日志数据部分,在每一部分上都可以利用运算函数获得一个统计结果,而所有日志数据的统计结果可以通过两种途径实现:使用运算函数对所有日志数据进行统计或者将每一部分日志数据用同样的运算函数进行计算,获得的统计结果是相同的。所谓统计结果是代数的,是指其可以通过一个具有多个参数的代数函数进行计算,而每个参数都是一个分布的统计结果,例如,流量、非授权访问次数和被入侵攻击次数等日志数据的统计结果就属于分布的,可以通过将日志数据分成多个部分来分别统计,然后再对各个统计结果进行统计,获得的结果与对所有日志数据同时进行统计的结果相同。而某个用户访问的流量占总流量的百分比的统计结果则属于代数的,不能像分布的统计结果那样对各部分日志数据分别统计再在此结果的基础上进行统计,只能通过对全部日志数据的两个分布的参数计算得到。
在将统计结果输出到mysql数据库中后,可以将存储于elasticsearch中日志数据与mysql数据库中的统计结果进行比较,判断mysql数据库中的日志数据的统计结果是否存在错误,若存在,则删除mysql数据库中的错误统计结果,并将第一日志数据输出到kafka中,其中,第一日志数据为elasticsearch中与错误统计结果对应的日志数据,消费存储于kafka中的第一日志数据,并统计已消费第一日志数据,得到第三统计结果,将第三统计结果输出到mysql数据库中。
需要说明的是,在本申请实施例中,也可以使用其他关系型数据库替代mysql数据库存储日志数据的统计结果,例如Tidb数据库,oracle数据库等,本申请实施例对此不作具体限制。本申请实施例使用mysql数据库的意义主要是希望日志数据的统计结果可以与其他系统消息(例如网关中的服务信息)存储在同一个数据库,从而方便连表查询,而mysql数据库一般运用较广泛,例如,在mysql数据库存储了一条日志数据的统计结果:服务A被调用,同时服务A的相关信息,如其中文名、创建者、创建时间等也存储在mysql数据库中,从而使得当对服务A的被调用情况进行统计,并获取服务A的相关信息时,不用多次查询不同的数据库,减少开发难度,降低响应时间。
上述的日志统计方法通过将获取的需要统计的日志数据存储到kafka中,不仅可以使用kafka作为缓冲提高日志统计的稳定性,应对日志数据产生速度不均匀的问题,而且还可以借用kafka的ACK机制,在日志数据入库失败时,例如数据库崩溃或网络问题导致连接超时,日志数据会存储在kafka中等待重新消费,而非丢失日志数据,从而保证了日志数据的完整性和一致性,避免出现中间统计结果与全量日志数据不一致的情况,且统计kafka已消费的日志数据,将统计结果存入mysql数据库中,不会影响elasticsearch中存储的日志数据,避免出现并发问题影响日志数据正常储存的情况。
基于同一发明构思,本申请实施例还提供一种日志统计装置,该日志统计装置可以应用于前述图1所示的日志统计系统,该日志统计装置能够实现前述的日志统计方法对应的功能。该日志统计装置可以是硬件结构、软件模块、或硬件结构加软件模块。该日志统计装置可以由芯片系统实现,芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。请参见图3所示,该日志统计装置包括获取模块301、统计模块302,其中:
获取模块301,用于通过所述logstash获取日志数据,将所述日志数据通过所述logstash的kafka output插件输出到所述kafka中;
统计模块302,用于消费存储于所述kafka中的日志数据,并统计已消费日志数据,得到统计结果,将所述统计结果输出到所述mysql数据库中。
一种可选实施方式中,所述统计模块302,具体用于:
在第一时刻统计生成时间在第一时间段内的已消费日志数据,得到第一统计结果;
判断所述mysql数据库中是否已有第二统计结果,其中,所述第二统计结果为在第二时刻统计的生成时间在所述第一时间段内的已消费日志数据的统计结果,所述第二时刻为所述第一时刻之前的时刻;
若有,则将所述第一统计结果与所述mysql数据库中的所述第二统计结果进行合并;
若没有,则将所述第一统计结果插入所述mysql数据库中。
一种可选实施方式中,所述日志统计系统还包括elasticsearch,所述装置还包括第一处理模块,用于:
将所述日志数据通过所述logstash的elasticsearch output插件输出到所述elasticsearch中;
将存储于elasticsearch中日志数据与所述mysql数据库中的所述统计结果进行比较,判断所述mysql数据库中的所述统计结果是否存在错误;
若存在,则删除所述mysql数据库中的错误统计结果。
一种可选实施方式中,所述装置还包括第二处理模块,用于:
将第一日志数据输出到所述kafka中,其中,所述第一日志数据为所述elasticsearch中与所述错误统计结果对应的日志数据;
消费存储于所述kafka中的所述第一日志数据,并统计已消费所述第一日志数据,得到第三统计结果,将所述第三统计结果输出到所述mysql数据库中。
基于同一发明构思,本申请实施例还提供一种日志统计系统,请参见图4所述,该日志统计系统包括至少一个处理器402,以及与至少一个处理器连接的存储器401,本申请实施例中不限定处理器402与存储器401之间的具体连接介质,图4是以处理器402和存储器401之间通过总线400连接为例,总线400在图4中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不以此为限。总线400可以分为地址总线、数据总线、控制总线等,为便于表示,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
在本申请实施例中,存储器401存储有可被至少一个处理器402执行的指令,至少一个处理器402通过调用存储器401存储的指令,可以执行前述的日志统计方法中所包括的步骤。其中,处理器402是日志统计系统的控制中心,可以利用各种接口和线路连接整个日志统计系统的各个部分,通过执行存储在存储器401内的指令,从而实现日志统计系统的各种功能。可选的,处理器402可包括一个或多个处理单元,处理器402可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器402中。在一些实施例中,处理器402和存储器401可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
存储器401作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器401可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random AccessMemory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器401是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器401还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
处理器402可以是通用处理器,例如中央处理器(CPU)、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的日志统计方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
通过对处理器402进行设计编程,可以将前述实施例中介绍的日志统计方法所对应的代码固化到芯片内,从而使芯片在运行时能够执行前述的日志统计方法的步骤,如何对处理器402进行设计编程为本领域技术人员所公知的技术,这里不再赘述。
基于同一发明构思,本申请实施例还提供一种存储介质,该存储介质存储有计算机指令,当该计算机指令在计算机上运行时,使得计算机执行如前述的日志统计方法的步骤。
在一些可能的实施方式中,本申请提供的日志统计方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在日志统计系统上运行时,程序代码用于使该日志统计系统执行本说明书上述描述的根据本申请各种示例性实施方式的日志统计方法中的步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (8)

1.一种日志统计方法,其特征在于,应用于日志统计系统,所述日志统计系统包括logstash、kafka以及mysql数据库,方法包括:
通过所述logstash获取日志数据,将所述日志数据通过所述logstash的kafka output插件输出到所述kafka中;
消费存储于所述kafka中的日志数据,并在第一时刻统计生成时间在第一时间段内的已消费日志数据,得到第一统计结果;
判断所述mysql数据库中是否已有第二统计结果,其中,所述第二统计结果为在第二时刻统计的生成时间在所述第一时间段内的已消费日志数据的统计结果,所述第二时刻为所述第一时刻之前的时刻;
若有,则将所述第一统计结果与所述mysql数据库中的所述第二统计结果进行合并;
若没有,则将所述第一统计结果插入所述mysql数据库中。
2.如权利要求1所述的方法,其特征在于,所述日志统计系统还包括elasticsearch,所述通过所述logstash获取日志数据之后,还包括:
将所述日志数据通过所述logstash的elasticsearch output插件输出到所述elasticsearch中;
将存储于elasticsearch中日志数据与所述mysql数据库中的所述统计结果进行比较,判断所述mysql数据库中的所述统计结果是否存在错误;
若存在,则删除所述mysql数据库中的错误统计结果。
3.如权利要求2所述的方法,其特征在于,所述删除所述mysql数据库中的错误统计结果之后,还包括:
将第一日志数据输出到所述kafka中,其中,所述第一日志数据为所述elasticsearch中与所述错误统计结果对应的日志数据;
消费存储于所述kafka中的所述第一日志数据,并统计已消费所述第一日志数据,得到第三统计结果,将所述第三统计结果输出到所述mysql数据库中。
4.一种日志统计装置,其特征在于,应用于日志统计系统,所述日志统计系统包括logstash、kafka以及mysql数据库,包括:
获取模块,用于通过所述logstash获取日志数据,将所述日志数据通过所述logstash的kafka output插件输出到所述kafka中;
统计模块,用于消费存储于所述kafka中的日志数据,并在第一时刻统计生成时间在第一时间段内的已消费日志数据,得到第一统计结果;判断所述mysql数据库中是否已有第二统计结果,其中,所述第二统计结果为在第二时刻统计的生成时间在所述第一时间段内的已消费日志数据的统计结果,所述第二时刻为所述第一时刻之前的时刻;若有,则将所述第一统计结果与所述mysql数据库中的所述第二统计结果进行合并;若没有,则将所述第一统计结果插入所述mysql数据库中。
5.如权利要求4所述的装置,其特征在于,所述日志统计系统还包括elasticsearch,所述装置还包括第一处理模块,用于:
将所述日志数据通过所述logstash的elasticsearch output插件输出到所述elasticsearch中;
将存储于elasticsearch中日志数据与所述mysql数据库中的所述统计结果进行比较,判断所述mysql数据库中的所述统计结果是否存在错误;
若存在,则删除所述mysql数据库中的错误统计结果。
6.如权利要求5所述的装置,其特征在于,所述装置还包括第二处理模块,用于:
将第一日志数据输出到所述kafka中,其中,所述第一日志数据为所述elasticsearch中与所述错误统计结果对应的日志数据;
消费存储于所述kafka中的所述第一日志数据,并统计已消费所述第一日志数据,得到第三统计结果,将所述第三统计结果输出到所述mysql数据库中。
7.一种日志统计系统,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行权利要求1-3任一项所述的方法包括的步骤。
8.一种存储介质,其特征在于,所述存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行权利要求1-3任一项所述的方法包括的步骤。
CN202011477819.9A 2020-12-15 2020-12-15 一种日志统计方法、装置及系统 Active CN112463570B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011477819.9A CN112463570B (zh) 2020-12-15 2020-12-15 一种日志统计方法、装置及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011477819.9A CN112463570B (zh) 2020-12-15 2020-12-15 一种日志统计方法、装置及系统

Publications (2)

Publication Number Publication Date
CN112463570A CN112463570A (zh) 2021-03-09
CN112463570B true CN112463570B (zh) 2024-04-09

Family

ID=74804750

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011477819.9A Active CN112463570B (zh) 2020-12-15 2020-12-15 一种日志统计方法、装置及系统

Country Status (1)

Country Link
CN (1) CN112463570B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101815261A (zh) * 2010-02-23 2010-08-25 深圳市五巨科技有限公司 一种移动终端报表生成的方法和装置
CN106250303A (zh) * 2016-07-28 2016-12-21 北京北信源软件股份有限公司 业务日志收集及预警系统和业务日志收集及预警方法
CN109828993A (zh) * 2017-08-31 2019-05-31 北京国双科技有限公司 一种统计数据的查询方法及装置
CN110309030A (zh) * 2019-07-05 2019-10-08 亿玛创新网络(天津)有限公司 基于ELK和Zabbix的日志分析监控系统和方法
CN110881030A (zh) * 2019-10-25 2020-03-13 北京明朝万达科技股份有限公司 基于logstash的记录web服务管理员操作日志的方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8126874B2 (en) * 2006-05-09 2012-02-28 Google Inc. Systems and methods for generating statistics from search engine query logs
US10452465B2 (en) * 2017-09-08 2019-10-22 Oracle International Corporation Techniques for managing and analyzing log data

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101815261A (zh) * 2010-02-23 2010-08-25 深圳市五巨科技有限公司 一种移动终端报表生成的方法和装置
CN106250303A (zh) * 2016-07-28 2016-12-21 北京北信源软件股份有限公司 业务日志收集及预警系统和业务日志收集及预警方法
CN109828993A (zh) * 2017-08-31 2019-05-31 北京国双科技有限公司 一种统计数据的查询方法及装置
CN110309030A (zh) * 2019-07-05 2019-10-08 亿玛创新网络(天津)有限公司 基于ELK和Zabbix的日志分析监控系统和方法
CN110881030A (zh) * 2019-10-25 2020-03-13 北京明朝万达科技股份有限公司 基于logstash的记录web服务管理员操作日志的方法及装置

Also Published As

Publication number Publication date
CN112463570A (zh) 2021-03-09

Similar Documents

Publication Publication Date Title
CN108874558B (zh) 分布式事务的消息订阅方法、电子装置及可读存储介质
CN113111129B (zh) 数据同步方法、装置、设备及存储介质
CN103562863A (zh) 创建定义事件类型之间关系的相关规则
CN109684052B (zh) 事务分析方法、装置、设备及存储介质
CN103077108B (zh) 一种对浏览器崩溃进行预警的方法和系统
CN111459698A (zh) 一种数据库集群故障自愈方法及装置
CN111258798A (zh) 监控数据的故障定位方法、装置、计算机设备及存储介质
CN112363902A (zh) 业务流程的监控方法、装置、计算机设备及存储介质
CN116680315A (zh) 数据离线处理方法、装置、电子设备及存储介质
CN113641739B (zh) 一种基于Spark的智能数据转换方法
CN113672668A (zh) 大数据场景下的日志实时处理方法及装置
CN112463570B (zh) 一种日志统计方法、装置及系统
CN110851758B (zh) 一种网页访客数量统计方法及装置
CN117376092A (zh) 故障根因定位方法、装置、设备及存储介质
CN111049898A (zh) 一种实现计算集群资源跨域架构的方法及系统
CN117131059A (zh) 报表数据处理方法、装置、设备及存储介质
CN112363774B (zh) Storm实时任务的配置方法及装置
CN114138615A (zh) 一种业务告警处理方法、装置、设备及存储介质
CN114490865A (zh) 数据库同步方法、装置、设备及计算机存储介质
CN114218303A (zh) 一种交易数据的处理系统、处理方法、介质和设备
CN113421109A (zh) 一种业务核对方法、装置、电子设备和存储介质
CN114281549A (zh) 数据的处理方法及装置
US10558647B1 (en) High performance data aggregations
CN113377611A (zh) 一种业务处理流程监控方法、系统、设备及存储介质
CN115203063B (zh) 基于实时录制的生产流量重跑风险程序的回放方法及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant