CN110825598A - 一种日志实时处理方法及*** - Google Patents
一种日志实时处理方法及*** Download PDFInfo
- Publication number
- CN110825598A CN110825598A CN201910897915.XA CN201910897915A CN110825598A CN 110825598 A CN110825598 A CN 110825598A CN 201910897915 A CN201910897915 A CN 201910897915A CN 110825598 A CN110825598 A CN 110825598A
- Authority
- CN
- China
- Prior art keywords
- log
- csv file
- data
- file
- csv
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 9
- 238000001914 filtration Methods 0.000 claims abstract description 13
- 230000002776 aggregation Effects 0.000 claims abstract description 12
- 238000004220 aggregation Methods 0.000 claims abstract description 12
- 238000000638 solvent extraction Methods 0.000 claims abstract description 11
- 238000012544 monitoring process Methods 0.000 claims abstract description 8
- 230000004931 aggregating effect Effects 0.000 claims abstract description 5
- 238000000034 method Methods 0.000 claims description 13
- 238000012545 processing Methods 0.000 claims description 13
- 238000005516 engineering process Methods 0.000 claims description 6
- 230000006872 improvement Effects 0.000 description 9
- 238000004458 analytical method Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000007405 data analysis Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种日志实时处理方法及***,包括:接收日志:采用mmap的libpcap捕获日志报文;过滤报文:根据发送日志的设备IP过滤掉非法报文;解析日志:按照预设格式逐个字段解析日志;格式化日志:按照预设字段顺序拼接成标准csv格式的字符串,多线程入无锁队列;生成csv文件:根据硬件适配写csv文件的线程及多队列的数量;采用所适配的多线程多队列,从无锁队列中取出数据写入csv文件中;csv文件入库:动态监测csv文件大小,若csv文件大于预设阈值,则立即入库;对数据库表进行分区并设定索引key值;数据汇聚:按照预设条件对数据库的原始数据进行汇聚。
Description
技术领域
本发明涉及数据处理技术领域,具体涉及一种日志实时处理方法及***。
背景技术
如今网络节点设备都会实时产生各种日志数据,日志大致分为两种,一是业务日志(通过计算、分析业务产生),二是设备本身***日志(告警日志,***状态日志等),这些日志一般都会实时上传到指定的服务器上,供服务器分析、计算、整合数据,这样可实时了解各个网络节点设备的业务状况,设备状态。这些数据也会被存放到服务器上,以便后续查询、导出以及进一步的业务展开。
目前大多日志数据采用下述两种处理方式:
1、收到日志解析后直接写入文件,直接写文件对于日志数据解析后写入比较简单方便不必设计过多的代码;
2、写行式数据库方式,即收到日志解析后通过接口操作数据库,***到数据库(基本上都是行式数据库);写行式数据库方式,目前都是写mysql,postgres等,这种操作方便,接口丰富,网上资料较多;
上述两种处理方式存在的缺陷为:
1、第一种处理方式的缺点为:后面查询数据复杂繁琐,获取数据实时性差,不能做实时性很强的业务;
2、第二种处理方式的缺点为:当一张表的数据量超过百万量级以后,查询非常慢,对于实时展示曲线、柱状图等业务体验非常差;
3、上述两种处理方式没有根据硬件适配处理日志的线程和队列数,最大程度保证数据不丢失,同时也没有对csv文件进行动态的监测保证入库效率。
发明内容
针对上述问题中存在的不足之处,本发明提供一种日志实时处理方法及***。
本发明公开了一种日志实时处理方法,包括:
接收日志:
采用mmap的libpcap捕获日志报文;
过滤报文:
根据发送日志的设备IP过滤掉非法报文;
解析日志:
按照预设格式逐个字段解析日志;
格式化日志:
按照预设字段顺序拼接成标准csv格式的字符串,多线程入无锁队列;
生成csv文件:
根据硬件适配写csv文件的线程及多队列的数量;
采用所适配的多线程多队列,从所述无锁队列中取出数据写入csv文件中;
csv文件入库:
动态监测所述csv文件大小,若csv文件大于预设阈值,则立即入库;
对数据库表进行分区并设定索引key值;
数据汇聚:
按照预设条件对数据库的原始数据进行汇聚。
作为本发明的进一步改进,在所述接收日志中:
所述libpcap采用零拷贝技术,支持多线程。
作为本发明的进一步改进,在所述生成csv文件中:
从所述无锁队列中取出的数据采用写内存文件***方案写入csv文件中。
作为本发明的进一步改进,在所述csv文件入库中:
若csv文件不大于预设阈值,则间隔预设的时间入库一次;
若csv文件为空,则删除空文件。
作为本发明的进一步改进,在所述csv文件入库中:
根据日志数据量的大小,对数据库表进行分区;
根据业务查询条件,设定索引key值。
本发明还公开了一种日志实时处理***,包括:
接收日志模块,用于:
采用mmap的libpcap捕获日志报文;
过滤报文模块,用于:
根据发送日志的设备IP过滤掉非法报文;
解析日志模块,用于:
按照预设格式逐个字段解析日志;
格式化日志模块,用于:
按照预设字段顺序拼接成标准csv格式的字符串,多线程入无锁队列;
生成csv文件模块,用于:
根据硬件适配写csv文件的线程及多队列的数量;
采用所适配的多线程多队列,从所述无锁队列中取出数据写入csv文件中;
csv文件入库模块,用于:
动态监测所述csv文件大小,若csv文件大于预设阈值,则立即入库;
对数据库表进行分区并设定索引key值;
数据汇聚模块,用于:
按照预设条件对数据库的原始数据进行汇聚。
作为本发明的进一步改进,在所述接收日志模块中:
所述libpcap采用零拷贝技术,支持多线程。
作为本发明的进一步改进,在所述生成csv文件模块中:
从所述无锁队列中取出的数据采用写内存文件***方案写入csv文件中。
作为本发明的进一步改进,在所述csv文件入库模块中:
若csv文件不大于预设阈值,则间隔预设的时间入库一次;
若csv文件为空,则删除空文件。
作为本发明的进一步改进,在所述csv文件入库模块中:
根据日志数据量的大小,对数据库表进行分区;
根据业务查询条件,设定索引key值。
与现有技术相比,本发明的有益效果为:
本发明采用mmap的libpcap捕获日志报文,libpcap采用零拷贝技术,减少拷贝次数;同时支持多线程,大幅度提高处理效率;
本发明根据发送日志的设备IP过滤掉非法报文,减少不必要的解析判断,提高处理效率;
本发明采用无锁队列对解析的日志数据进行数据缓冲,减少锁开销,极大的提高写入、读取效率;
本发明根据硬件适配写csv文件的线程及多队列的数量,保证数据丢掉的几率,同时也能最大程度上避免cpu和内存浪费;
本发明入库之前先监测csv文件的大小,保证csv文件大小在最合适的范围,同时过滤为空的csv文件,这样保证高效的入数据库;
本发明按照一定的条件对数据库的原始数据进行汇聚,有效的缩小了数据集,保证最快的查询到日志和展示结果。
本发明平台移植性较好,数据解析入库效率高,日志展示查询快,用户体验好,同时为后续业务的展开,扩展提供良好的支撑。
附图说明
图1为本发明一种实施例公开的日志实时处理方法的流程图;
图2为本发明一种实施例公开的日志实时处理***的框架图;
图3为图1、2中接收日志的示意图;
图4为图1、2中数据入队出队示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合附图对本发明做进一步的详细描述:
如图1所示,本发明提供一种日志实时处理方法,包括:
S1、接收日志:
如图3所示,本发明采用mmap的libpcap捕获日志报文,可达每秒5万的日志量;libpcap采用零拷贝技术(zero-copy),减少拷贝次数;同时支持多线程,大幅度提高处理效率。
S2、过滤报文:
根据发送日志的设备IP过滤掉非法报文,减少不必要的解析判断,提高处理效率;具体的:
事先建立一个配置文件,配置合法发送日志设备的IP,程序起来时加载到内存;收日志时,剥报文取出源IP进行匹配,匹配到了进入下一个流程,否则直接丢弃掉该报文。
S3、解析日志:
按照预设格式逐个字段解析日志,解析的日志填充指定的数据结构(无锁队列数据结构)中。
S4、格式化日志:
按照预设字段顺序拼接成标准csv格式的字符串,多线程入无锁队列;本发明采用无锁队列对解析的日志数据进行数据缓冲,减少锁开销,极大的提高写入、读取效率。
S5、生成csv文件:
此部分主要工作是从无锁队列中取出数据写入csv文件中,如果数据量比较大,那么会产生生产者大于消费者的情况,无锁队列很快就会溢出,则会导致数据丢失。为了解决这个问题此部分从两个方便设计和优化:
一是写内存文件***方案(tmpfs挂载),因为理论上数据写入内存的效率明显高于写磁盘文件;
二是根据硬件适配写csv文件的线程及多队列的数量,采用所适配的多线程多队列读取无锁队列的数据并写入csv文件;
数据入队出队模型如图4所示。
S6、csv文件入库:
此时已经生成了标准的csv文件,csv文件如果过大或者过小,会影响入库的效率;即,过大入库比较缓慢,过小则会产生大量零散文件,加重clickhouse(一种列式数据库)的负担;
为此,本发明加入监测机制,即:
设定一个阈值;
动态监测csv文件大小;
若csv文件大于预设阈值,则立即入库,并新建csv文件用于写入;若文件不大于预设阈值,则则间隔预设的时间(1min)入库一次;
若csv文件为空,则删除空文件。
具体为:
csv文件大小为0时直接过滤删掉,文件大小小于500M时一分钟入库一次,若超过则立即入库。
在csv文件入库前:
根据日志数据量的大小(可以是小时,天,月视实际情况而定),对数据库表进行分区;避免随着时间的推移,形成过多的表,同时合理的分区将会让查询数据更高效;
索引的key值确定主要根据业务查询而定,查询语句的条件字段一般设定为索引key值,这样会加快查询的速率。
S7、数据汇聚:
按照预设条件对数据库的原始数据进行汇聚;
具体为:
日志中的流量,包数,及其他需要计算的字段我们可以提前进行聚合,聚合的条件可以根据具体的业务而定(比如根据五元组聚合等),聚合可以有效地缩小数据集,避免查询时做临时聚合计算(数据量庞大时临时聚合计算过程缓慢),因为数据集的大小很大程度上决定了查询的效率,这样前端展示日志数据的速率会更快,体验效果会更好。
如图2所示,本发明提供一种日志实时处理***,包括:
接收日志模块,用于实现上述S1;
过滤报文模块,用于实现上述S2;
解析日志模块,用于实现上述S3;
格式化日志模块,用于实现上述S4;
生成csv文件模块,用于实现上述S5;
csv文件入库模块,用于实现上述S6;
数据汇聚模块,用于实现上述S7。
本发明获取cpu的个数,根据个数得到合适的线程数和队列数,这样能保证数据丢掉的几率,同时也能最大程度上避免cpu和内存浪费;入库之前先监测csv文件的大小,保证csv文件大小在最合适的范围,同时过滤为空的csv文件,这样保证高效的入数据库;按照一定的条件对数据库的原始数据进行汇聚,有效的缩小了数据集,保证最快的查询到日志和展示结果;同时,平台移植性较好,数据解析入库效率高,日志展示查询快,用户体验好,同时为后续业务的展开,扩展提供良好的支撑。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种日志实时处理方法,其特征在于,包括:
接收日志:
采用mmap的libpcap捕获日志报文;
过滤报文:
根据发送日志的设备IP过滤掉非法报文;
解析日志:
按照预设格式逐个字段解析日志;
格式化日志:
按照预设字段顺序拼接成标准csv格式的字符串,多线程入无锁队列;
生成csv文件:
根据硬件适配写csv文件的线程及多队列的数量;
采用所适配的多线程多队列,从所述无锁队列中取出数据写入csv文件中;
csv文件入库:
动态监测所述csv文件大小,若csv文件大于预设阈值,则立即入库;
对数据库表进行分区并设定索引key值;
数据汇聚:
按照预设条件对数据库的原始数据进行汇聚。
2.如权利要求1所述的方法,其特征在于,在所述接收日志中:
所述libpcap采用零拷贝技术,支持多线程。
3.如权利要求1所述的方法,其特征在于,在所述生成csv文件中:
从所述无锁队列中取出的数据采用写内存文件***方案写入csv文件中。
4.如权利要求1所述的方法,其特征在于,在所述csv文件入库中:
若csv文件不大于预设阈值,则间隔预设的时间入库一次;
若csv文件为空,则删除空文件。
5.如权利要求1所述的方法,其特征在于,在所述csv文件入库中:
根据日志数据量的大小,对数据库表进行分区;
根据业务查询条件,设定索引key值。
6.一种日志实时处理***,其特征在于,包括:
接收日志模块,用于:
采用mmap的libpcap捕获日志报文;
过滤报文模块,用于:
根据发送日志的设备IP过滤掉非法报文;
解析日志模块,用于:
按照预设格式逐个字段解析日志;
格式化日志模块,用于:
按照预设字段顺序拼接成标准csv格式的字符串,多线程入无锁队列;
生成csv文件模块,用于:
根据硬件适配写csv文件的线程及多队列的数量;
采用所适配的多线程多队列,从所述无锁队列中取出数据写入csv文件中;
csv文件入库模块,用于:
动态监测所述csv文件大小,若csv文件大于预设阈值,则立即入库;
对数据库表进行分区并设定索引key值;
数据汇聚模块,用于:
按照预设条件对数据库的原始数据进行汇聚。
7.如权利要求1所述的***,其特征在于,在所述接收日志模块中:
所述libpcap采用零拷贝技术,支持多线程。
8.如权利要求1所述的***,其特征在于,在所述生成csv文件模块中:
从所述无锁队列中取出的数据采用写内存文件***方案写入csv文件中。
9.如权利要求1所述的***,其特征在于,在所述csv文件入库模块中:
若csv文件不大于预设阈值,则间隔预设的时间入库一次;
若csv文件为空,则删除空文件。
10.如权利要求1所述的***,其特征在于,在所述csv文件入库模块中:
根据日志数据量的大小,对数据库表进行分区;
根据业务查询条件,设定索引key值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910897915.XA CN110825598A (zh) | 2019-09-23 | 2019-09-23 | 一种日志实时处理方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910897915.XA CN110825598A (zh) | 2019-09-23 | 2019-09-23 | 一种日志实时处理方法及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110825598A true CN110825598A (zh) | 2020-02-21 |
Family
ID=69548264
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910897915.XA Pending CN110825598A (zh) | 2019-09-23 | 2019-09-23 | 一种日志实时处理方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110825598A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112115102A (zh) * | 2020-08-25 | 2020-12-22 | 广州锦行网络科技有限公司 | 一种远程登录日志记录的清理方法 |
CN112286876A (zh) * | 2020-10-29 | 2021-01-29 | 深圳Tcl新技术有限公司 | 日志文件抓取方法、设备及计算机可读存储介质 |
CN112433994A (zh) * | 2020-11-24 | 2021-03-02 | 北京神州数字科技有限公司 | 一种文件处理方法 |
CN112565338A (zh) * | 2020-11-10 | 2021-03-26 | 中国人民解放军战略支援部队信息工程大学 | 一种以太网报文捕获、过滤、存储、实时解析方法及*** |
CN115174427A (zh) * | 2022-06-01 | 2022-10-11 | 中国电子科技集团公司第十研究所 | 一种航天地面设备报文监视***及方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103927338A (zh) * | 2014-03-26 | 2014-07-16 | 网神信息技术(北京)股份有限公司 | 日志信息入库处理方法和装置 |
CN103944744A (zh) * | 2013-01-21 | 2014-07-23 | 博雅网络游戏开发(深圳)有限公司 | 日志采集方法和*** |
CN104184659A (zh) * | 2013-05-22 | 2014-12-03 | 上海贝尔股份有限公司 | 一种用于获取网络中数据包的方法与设备 |
CN106570163A (zh) * | 2016-11-07 | 2017-04-19 | 深圳市任子行科技开发有限公司 | 一种面向不可靠环境的审计日志读写管理方法以及*** |
CN109471743A (zh) * | 2018-11-12 | 2019-03-15 | 深圳前海微众银行股份有限公司 | 日志收集方法、装置及计算机可读存储介质 |
-
2019
- 2019-09-23 CN CN201910897915.XA patent/CN110825598A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103944744A (zh) * | 2013-01-21 | 2014-07-23 | 博雅网络游戏开发(深圳)有限公司 | 日志采集方法和*** |
CN104184659A (zh) * | 2013-05-22 | 2014-12-03 | 上海贝尔股份有限公司 | 一种用于获取网络中数据包的方法与设备 |
CN103927338A (zh) * | 2014-03-26 | 2014-07-16 | 网神信息技术(北京)股份有限公司 | 日志信息入库处理方法和装置 |
CN106570163A (zh) * | 2016-11-07 | 2017-04-19 | 深圳市任子行科技开发有限公司 | 一种面向不可靠环境的审计日志读写管理方法以及*** |
CN109471743A (zh) * | 2018-11-12 | 2019-03-15 | 深圳前海微众银行股份有限公司 | 日志收集方法、装置及计算机可读存储介质 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112115102A (zh) * | 2020-08-25 | 2020-12-22 | 广州锦行网络科技有限公司 | 一种远程登录日志记录的清理方法 |
CN112286876A (zh) * | 2020-10-29 | 2021-01-29 | 深圳Tcl新技术有限公司 | 日志文件抓取方法、设备及计算机可读存储介质 |
CN112565338A (zh) * | 2020-11-10 | 2021-03-26 | 中国人民解放军战略支援部队信息工程大学 | 一种以太网报文捕获、过滤、存储、实时解析方法及*** |
CN112433994A (zh) * | 2020-11-24 | 2021-03-02 | 北京神州数字科技有限公司 | 一种文件处理方法 |
CN115174427A (zh) * | 2022-06-01 | 2022-10-11 | 中国电子科技集团公司第十研究所 | 一种航天地面设备报文监视***及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110825598A (zh) | 一种日志实时处理方法及*** | |
US10652265B2 (en) | Method and apparatus for network forensics compression and storage | |
WO2020233212A1 (zh) | 一种日志记录的处理方法、服务器及存储介质 | |
CN110222091A (zh) | 一种海量数据实时统计分析方法 | |
CN103559217A (zh) | 一种面向异构数据库的海量组播数据入库实现方法 | |
US9323805B2 (en) | System and method for provenance function window optimization | |
WO2022126984A1 (zh) | 缓存数据的检测方法、装置、计算机设备和存储介质 | |
CN111813573B (zh) | 管理平台与机器人软件的通信方法及其相关设备 | |
US10031901B2 (en) | Narrative generation using pattern recognition | |
CN106921665B (zh) | 一种报文处理方法及网络设备 | |
WO2023087769A1 (zh) | 基于分布式流计算引擎Flink的关键字段实时去重方法 | |
CN109033188A (zh) | 一种元数据采集方法、装置、服务器和计算机可读介质 | |
CN114185885A (zh) | 一种基于列存数据库的流式数据处理方法及*** | |
CN105515842B (zh) | 一种基于网络数据的通用查询***及查询方法 | |
US10394771B2 (en) | Use of search templates to identify slow information server search patterns | |
CN106599005B (zh) | 一种数据归档方法及装置 | |
JP7319038B2 (ja) | アダプティブイベント集約 | |
CN116126906A (zh) | 一种基于Flink的流式数据质量监控方法及其*** | |
CN115269519A (zh) | 一种日志检测方法、装置及电子设备 | |
CN115964348A (zh) | 日志数据处理方法及装置、存储介质及电子终端 | |
US9800684B2 (en) | Systems and methods for statistical caching | |
CN109542662B (zh) | 一种内存管理方法、装置、服务器及存储介质 | |
CN113760568A (zh) | 数据处理的方法和装置 | |
CN104980750A (zh) | 一种视频转码日志的收集方法、装置及*** | |
CN109739883A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200221 |
|
RJ01 | Rejection of invention patent application after publication |