CN110716695A - 一种节点日志的存储方法、系统、电子设备及存储介质 - Google Patents
一种节点日志的存储方法、系统、电子设备及存储介质 Download PDFInfo
- Publication number
- CN110716695A CN110716695A CN201910867316.3A CN201910867316A CN110716695A CN 110716695 A CN110716695 A CN 110716695A CN 201910867316 A CN201910867316 A CN 201910867316A CN 110716695 A CN110716695 A CN 110716695A
- Authority
- CN
- China
- Prior art keywords
- log
- interval
- cache
- buffer
- node
- 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
- 238000000034 method Methods 0.000 title claims abstract description 64
- 230000005540 biological transmission Effects 0.000 claims abstract description 28
- 230000014509 gene expression Effects 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 9
- 238000011156 evaluation Methods 0.000 claims description 8
- 238000001914 filtration Methods 0.000 claims description 8
- 230000006835 compression Effects 0.000 claims description 6
- 238000007906 compression Methods 0.000 claims description 6
- 230000005856 abnormality Effects 0.000 claims description 3
- 230000009286 beneficial effect Effects 0.000 abstract description 2
- 230000008569 process Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 6
- 230000002159 abnormal effect Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 238000000926 separation method Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
- G06F3/0676—Magnetic disk device
Abstract
本申请公开了一种节点日志的存储方法,包括当接收到日志生成节点发送的日志传输请求时,确定缓存轮的缓存指针;根据所述缓存指针将所述日志传输请求对应的待缓存节点日志存储至所述缓存区间;判断是否存在目标缓存区间;其中,所述目标缓存区间为缓存写满的缓存区间;若是,则将磁盘写入指针指向所述目标缓存区间,以便将所述目标缓存区间的节点日志写入磁盘。本申请能够降低节点日志存储对于磁盘写入压力的影响。本申请还公开了一种节点日志的存储系统、一种存储介质及一种电子设备,具有以上有益效果。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种节点日志的存储方法、系统、一种存储介质及一种电子设备。
背景技术
容器化技术为应用的集群部署提供了便利,集群中各个节点产生的日志和应用的部署位置相同,即各节点产生的日志散布于各个节点,因此收集节点日志成为了分布式应用维护工作中的必备环节。在传统的日志收集方案中,使用同一线程进行节点日志的缓存写入和磁盘写入,导致磁盘写入压力大。
因此,如何降低节点日志存储对于磁盘写入压力的影响是本领域技术人员目前需要解决的技术问题。
发明内容
本申请的目的是提供一种节点日志的存储方法、系统、一种存储介质及一种电子设备,能够降低节点日志存储对于磁盘写入压力的影响。
为解决上述技术问题,本申请提供一种节点日志的存储方法,应用于日志收集节点,该节点日志的存储方法包括:
当接收到日志生成节点发送的日志传输请求时,确定缓存轮的缓存指针;其中,所述缓存轮对应多个缓存区间,当所述缓存指针在所述缓存轮上旋转一周时所有所述缓存区间被遍历一次;
根据所述缓存指针将所述日志传输请求对应的待缓存节点日志存储至所述缓存区间;
判断是否存在目标缓存区间;其中,所述目标缓存区间为缓存写满的缓存区间;
若是,则将磁盘写入指针指向所述目标缓存区间,以便将所述目标缓存区间的节点日志写入磁盘。
可选的,根据所述缓存指针将所述日志传输请求对应的待缓存节点日志存储至所述缓存区间包括:
将所述日志传输请求对应的待缓存节点日志存储至所述缓存指针所指向的当前缓存区间;
若当前缓存区间被写满且所述待缓存节点日志未被缓存完毕时,将所述指针移动方向上与当前缓存区间最近的备选缓存区间设置为新的当前缓存区间并继续执行日志缓存操作;
其中,所述指针移动方向为所述缓存指针在所述缓存轮上的指针移动方向;所述备选缓存区间为处于可存储状态的缓存区间。
可选的,还包括:
记录将所述目标缓存区间的节点日志写入所述磁盘的写入时长;
当所述写入时长大于预设写入时长且所述目标缓存区间的节点日志未写入完毕时,启动新缓存区间,并将所述缓存轮对应的目标缓存区间替换为所述新缓存区间;
生成用于描述所述目标缓存区间存在异常的提示信息。
可选的,还包括:
当检测到处于可存储状态的缓存区间的数量小于第一区间数量时,为所述缓存轮增加新的缓存区间;
当检测到目标缓存区间的数量小于第二区间数量时,减少磁盘写入线程以便减少所述磁盘写入指针的数量。
可选的,还包括:
当所述目标缓存区间的所有节点日志写入所述磁盘之后,清空所述目标缓存区间。
可选的,还包括:
所述日志生成节点对容器内应用生成的原始日志信息执行过滤操作得到符合正则表达式的原始日志信息;
对所述符合正则表达式的原始日志信息执行差分压缩操作得到所述待缓存日志信息;
当所述待缓存日志信息的评价参数符合预设条件时,则将所述待缓存节点日志发送至所述日志收集节点。
可选的,所述评价参数包括所述待缓存日志信息的数据量和所述待缓存日志信息的生成时长;其中,所述生成时长为所述待缓存日志信息的生成时刻至当前时刻对应的时间段长度;
相应的,所述预设条件包括所述数据量大于预设值和/或生成时长大于预设生成时长。
本申请还提供了一种节点日志的存储系统,应用于日志收集节点,该节点日志的存储系统包括:
指针确定模块,用于当接收到日志生成节点发送的日志传输请求时,确定缓存轮的缓存指针;其中,所述缓存轮对应多个缓存区间,当所述缓存指针在所述缓存轮上旋转一周时所有所述缓存区间被遍历一次;
缓存模块,用于根据所述缓存指针将所述日志传输请求对应的待缓存节点日志存储至所述缓存区间;
判断模块,用于判断是否存在目标缓存区间;其中,所述目标缓存区间为缓存写满的缓存区间;
磁盘写入模块,用于当存在所述目标缓存区间时,将磁盘写入指针指向所述目标缓存区间,以便将所述目标缓存区间的节点日志写入磁盘。
本申请还提供了一种存储介质,其上存储有计算机程序,所述计算机程序执行时实现上述节点日志的存储方法执行的步骤。
本申请还提供了一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器调用所述存储器中的计算机程序时实现上述节点日志的存储方法执行的步骤。
本申请提供了一种节点日志的存储方法,应用于日志收集节点,包括当接收到日志生成节点发送的日志传输请求时,确定缓存轮的缓存指针;其中,所述缓存轮对应多个缓存区间,当所述缓存指针在所述缓存轮上旋转一周时所有所述缓存区间被遍历一次;根据所述缓存指针将所述日志传输请求对应的待缓存节点日志存储至所述缓存区间;判断是否存在目标缓存区间;其中,所述目标缓存区间为缓存写满的缓存区间;若是,则将磁盘写入指针指向所述目标缓存区间,以便将所述目标缓存区间的节点日志写入磁盘。
本申请引入缓存轮的概念实现节点日志的缓存与磁盘写入,在接收到日志传输请求时首先确定缓存轮的缓存指针,依据缓存指针指向的地址将待缓存节点日志存储至相应的缓存区间。当检测到缓存轮对应的缓存区间中存在已经被写满的目标缓存区间时,本申请将磁盘写入指针指向目标缓存区间,以便将目标缓存区间的中缓存的节点日志写入磁盘。本申请分别用缓存轮的缓存指针和磁盘写入指针实现节点日志的缓存与磁盘写入,实现了缓存写入线程和磁盘写入线程的分离,能够降低节点日志存储对于磁盘写入压力的影响。本申请同时还提供了一种节点日志的存储系统、一种存储介质和一种电子设备,具有上述有益效果,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例所提供的一种节点日志的存储方法的流程图;
图2为本申请实施例所提供的一种缓存轮的原理示意图;
图3为本申请实施例所提供的一种数据存储方法的流程图;
图4为本申请实施例所提供的一种数据发送方法的流程图;
图5为本申请实施例所提供的服务器集群示意图;
图6为本申请实施例所提供的一种节点日志的存储系统的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
下面请参见图1,图1为本申请实施例所提供的一种节点日志的存储方法的流程图。
具体步骤可以包括:
S101:当接收到日志生成节点发送的日志传输请求时,确定缓存轮的缓存指针;
其中,本实施例可以应用于服务器集群的日志收集节点,作为一种可行的实施方式可以将服务器集群的主节点设置为日志收集节点,本步骤中的日志生成节点可以为服务器集群的从节点,以便将所有从节点的节点日志存储至主节点。本实施例不限定日志生成节点的数量,可以存在多个日志生成节点同时向日志收集节点发送待缓存节点日志的情况。
在日志收集节点接收到待缓存日志时,首先确定缓存轮的缓存指针。请参见图2,图2为本申请实施例所提供的一种缓存轮的原理示意图,缓存轮可以对应多个缓存区间,进一步的缓存轮上可以对应多个缓存区间的地址信息。缓存轮上可以存在缓存指针(即图2中的网络数据写入指针)和磁盘写入指针,当需要向缓存区间写入数据时需要根据缓存指针指向的地址写入数据,当需要向磁盘写入数据时需要根据磁盘写入指针确定需要写入磁盘的缓存数据。本实施例可以将缓存轮的缓存指针和磁盘写入指针的旋转反向设置为顺时针旋转或逆时针旋转,在此不进行限定。当所述缓存指针在所述缓存轮上旋转一周时所有所述缓存区间被遍历一次;同理可知,当所述磁盘写入指针在所述缓存轮上旋转一周时所有所述缓存区间被遍历一次。
S102:根据所述缓存指针将所述日志传输请求对应的待缓存节点日志存储至所述缓存区间;
其中,本步骤的目的在于在确定缓存指针的基础上根据缓存指针执行相应的节点日志缓存操作。可以理解的是,本实施例是通过将待缓存节点日志存储至缓存区间实现节点日志的接收操作,即网络数据写入的过程。
需要说明的是,本实施例的缓存轮可以对应多个缓存区间,缓存指针指向的缓存区间可以为剩余缓存空间大于预设值的缓存区间。作为一种可行的实施方式,本实施例中缓存指针可以优先指向剩余缓存空间最大的缓存区间。本实施例不限定缓存轮对应的缓存区间大小,本实施例中的所有缓存区间大小可以相同。
可以理解的是,在待缓存节点日志写入缓存区间的过程中,若缓存指针指向的缓存区间已经被写满,缓存指针则可以按照预设的旋转方向指向下一缓存区间,若下一缓存区间已经被写满则可以跳过该缓存区间,沿着旋转方向找到可以写入数据的缓存区间。
S103:判断是否存在目标缓存区间;若是,则进入S104;
其中,本步骤的目的在于判断缓存轮对应的缓存区间中是否存在已经被写满的缓存区间,即本步骤中提到的目标缓存区间为缓存写满的缓存区间。在检测到目标缓存区间后本实施例可以进入S104的相关操作。作为一种可行的实施方式,若不存在目标缓存区间时则可以延时预设时长并在此进入S103的相关操作。
可以理解的是,在执行S103的相关判断操作的过程中,日志收集节点还可以存在将日志生成节点发送的待缓存节点日志存储至缓存区间的操作。当检测到缓存指针由一个缓存区间指向另一个缓存区间时,可以执行S103的判断操作;当检测到缓存指针在旋转过程中跳过了某一缓存区间时,也可以执行S103的判断操作。
S104:将磁盘写入指针指向所述目标缓存区间,以便将所述目标缓存区间的节点日志写入磁盘。
其中,本步骤建立在已经确定目标缓存区间的基础上,可以将磁盘写入指针指向目标缓存区间。本实施例中可以设置有多个磁盘写入指针,即包括多个磁盘数据写入线程,可以存在多个目标缓存区间同时执行磁盘数据写入操作的情况。作为一种可行的实施方式,在目标缓存区间内的节点日志写入磁盘后,可以将目标缓存区间清空以便写入新的待缓存节点日志。
待缓存节点日志的接收在日志收集节点进行,实践证明网络接收日志和日志写入缓存的速度是远大于日志写入磁盘速度的。因此,本实施例将磁盘的写入和缓存的写入交给不同线程处理。具体的,缓存轮的数据载体可以分为若干个缓存区块,每个缓存区间的容量一致。各个缓存区间的会被连续填充数据,读出数据写入磁盘,然后被清空。缓存轮有一个旋转的缓存指针,在收集到的节点日志信息填写满一个缓存区间后,缓存指针旋转到下一个缓存区间,填充后续的节点日志数据。对于缓存区间中的节点日志写入磁盘的操作进度由磁盘写入指针决定。日志收集节点中可配置多个磁盘写入线程,因此就有多个磁盘写入指针(和写入操作线程对应)。磁盘写入指针旋转方向可以和日志写入指针相同。磁盘写入指针每次旋转到一个满的缓存区间,可以立即开始磁盘写入操作。磁盘写入操作完成后,可以清空该缓存块,接着磁盘写入指针可以旋转到下一个写满的缓存区间。如果发现下一个缓存区间正在执行写入磁盘操作,磁盘写入指针会再次旋转跳过这个缓存,避免重复写入。综上所述,磁盘写入一直重复上述过程,直到磁盘写入指针旋转后发现下一个缓存块还没有被填满。通过上述方式可以实现磁盘的写入速度比日志通过网络发来的速度快,没有缓存积压的数据。作为一种可行的实施方式,当不存在已被写满的缓存区间时,可以将磁盘写入线程睡眠等待一段时间后,再重复上述操作。通过这种方式,日志收集节点可以将磁盘写入的最小单位从每次网络通信的数据量提高到缓存块的容量大小,极大程度减少了磁盘写入次数。
本实施例引入缓存轮的概念实现节点日志的缓存与磁盘写入,在接收到日志传输请求时首先确定缓存轮的缓存指针,依据缓存指针指向的地址将待缓存节点日志存储至相应的缓存区间。当检测到缓存轮对应的缓存区间中存在已经被写满的目标缓存区间时,本实施例将磁盘写入指针指向目标缓存区间,以便将目标缓存区间的中缓存的节点日志写入磁盘。本实施例分别用缓存轮的缓存指针和磁盘写入指针实现节点日志的缓存与磁盘写入,实现了缓存写入线程和磁盘写入线程的分离,能够降低节点日志存储对于磁盘写入压力的影响。本实施例可以避免大量的磁盘IO操作,只有数据写满一个缓存块的时候才执行写入磁盘,极大地提高了IO性能。
作为一种可行的实施方式,本实施例中缓存轮中缓存区间数量和磁盘写入线程数具有根据数据流量压力自适应的功能。如果网络收集的待缓存节点日志到来过快,以至于缓存指针旋转后,发现所有的缓存区间均处于磁盘写入的过程中,说明缓存不够用。日志收集端可以增加缓存区间数量同时增加写入磁盘线程数(即增加缓存指针数量),以缓解缓存空间压力。具体实施方式为当检测到处于可存储状态的缓存区间的数量小于第一区间数量时,为所述缓存轮增加新的缓存区间;当检测到目标缓存区间的数量小于第二区间数量时,减少磁盘写入线程以便减少所述磁盘写入指针的数量。
另一方面,如果日志收集节点检测到大量磁盘写入线程频繁进入等待状态,说明磁盘写入大于网络速度,此时可以动态减少缓存区间数量,也可以减少磁盘写入线程(即减少缓存指针)。
在执行节点日志落地操作时,本实施例可以通过以下三种方式实现:
方式1:利用日志收集服务器的文件系统实现日志落地。方式1适用于简单的收集工作。
方式2:利用Elasticsearch等全文搜索库实现日志落地。方式2适用于大量日志的分析。
方式3:通过存入HDFS(分布式文件系统)实现日志落地。方式3适合日志量特别大这种情况。
为了保证日志采集端正常工作以及提供采集端异常情况的即时响应,日志生成节点可以定时发送心跳至日志收集节点。心跳数据可以包含心跳周期内内存占用,CPU使用率和日志数据量信息。日志收集节点可以对各个日志生成节点的心跳数据进行汇总和统计,从而实现对集群运行状态的监控。日志生成节点的监控功能可以保证系统的健壮性,能够实现异常情况的预警
作为对于图1对应实施例的进一步介绍,S102根据所述缓存指针将所述日志传输请求对应的待缓存节点日志存储至所述缓存区间的操作可以具体包括以下步骤:
步骤1:将所述日志传输请求对应的待缓存节点日志存储至所述缓存指针所指向的当前缓存区间;
步骤2:若当前缓存区间被写满且所述待缓存节点日志未被缓存完毕时,将所述指针移动方向上与当前缓存区间最近的备选缓存区间设置为新的当前缓存区间并继续执行日志缓存操作;
其中,所述指针移动方向为所述缓存指针在所述缓存轮上的指针移动方向;所述备选缓存区间为处于可存储状态的缓存区间。
在上述操作中将缓存指针指向的缓存区间作为当前缓存区间,若当前缓存区间无法继续存储待缓存节点日志时,缓存指针可以跳转至其他的缓存区间。上述实施方式提供了一种新的当前缓存区间确定方式,即一种缓存指针的跳转方式。在上述过程中缓存指针优先指向指针移动方向上距离当前缓存区间最近的备选缓存区间,备选缓存区间为处于可存储状态的缓存区间,当某一缓存区间处于可存储状态时该缓存区间的剩余缓存大小大于预设值。
下面请参见图3,图3为本申请实施例所提供的一种数据存储方法的流程图,本实施例是对图1对应实施例的进一步补充说明,可以将本实施例与图1对应的实施例相结合得到更为优选的实施方式,本实施例具体可以包括以下步骤:
S201:记录将所述目标缓存区间的节点日志写入所述磁盘的写入时长;
S202:当所述写入时长大于预设写入时长且所述目标缓存区间的节点日志未写入完毕时,启动新缓存区间,并将所述缓存轮对应的目标缓存区间替换为所述新缓存区间。
S203:生成用于描述所述目标缓存区间存在异常的提示信息。
其中,当存在磁盘繁忙或者是出现异常现象时,将会出现某个缓存块执行写入磁盘过程耗时过长的情况。因此本实施例记录将所述目标缓存区间的节点日志写入所述磁盘的写入时长,如果缓存区间写入磁盘过程超过预设写入时长,本实施例可以控制目标缓存区间脱离缓存轮,不在参与缓存写入和磁盘写入的流程。进一步的,本实施例通过启用一个新的缓存区间替代目标缓存区间,本实施例还可以向监控模块报告这一异常情况。
下面请参见图4,图4为本申请实施例所提供的一种数据发送方法的流程图,本实施例描述的日志生成节点向日志收集节点发送待缓存节点日志的具体过程,可以将本实施例与图1对应的实施例相结合得到更为优选的实施方式,本实施例可以包括以下步骤:
S301:对容器内应用生成的原始日志信息执行过滤操作得到符合正则表达式的原始日志信息;
具体的,上述实施例中S301为日志生成节点执行日志过滤操作的步骤,本实施例可以对于采集到的原始节点日志,以行为单位进行过滤操作。在过滤过程中可以使用正则表达式,匹配正则表达式的行会被允许采集,不匹配的行将会被丢弃,最终得到符合正则表达式的原始日志信息。
S302:对所述符合正则表达式的原始日志信息执行差分压缩操作得到所述待缓存日志信息;
节点中生成的节点日志具有统一的格式,因此每行日志的内容会有大量的相似之处。根据这种特点,本实施例使用差分压缩的方式处理原始日志信息得到待缓存日志信息,以便减少网络传输和日志落地存储时的数据量。
S303:当所述待缓存日志信息的评价参数符合预设条件时,则将所述待缓存节点日志发送至所述日志收集节点。
其中,所述评价参数包括所述待缓存日志信息的数据量和所述待缓存日志信息的生成时长;所述生成时长为所述待缓存日志信息的生成时刻至当前时刻对应的时间段长度;预设条件包括所述数据量大于预设值和/或生成时长大于预设生成时长。
日志生成节点可以引入发送缓存,日志生成节点可以在发送缓存中的数据满足一定条件时才会发送一批待缓存节点日志到日志收集节点。通过上述操作可以避免反复建立、释放连接和频繁的网络数据传输,达到降低网络压力的目的。缓存节点日志发送的预设条件有以下标准:(1)缓存容量上限,此标准是为了避免缓存容量过大而设立,如果缓存内数据达到容量上限,会被立即发送。(2)缓存内数据的停留时间达到最大停留时间,有时候系统日志产生量比较少,导致缓存内日志数据量迟迟不会达到容量上限。如此,待缓存节点日志被收集的延迟会很大,甚至会被收集端判断为没有日志输出。为了避免上述情况,只要缓存数据超过了最大停留时间,无论缓存是否填满,待缓存节点日志都会被发送出去。上述实施例中,采用的数据过滤和压缩技术可以显著减小日志的数据量,还可以减小网络带宽占用和磁盘存储消耗。
下面通过在实际应用中的实施例说明上述实施例的应用场景。
请参见图5,图5为本申请实施例所提供的服务器集群示意图,服务器集群的节点上可以设置有日志采集端或日志收集端,日志采集端作为独立的进程,可以需要运行于各个Docker容器所在的节点上主要负责日志的采集、发送,还有运行状态的汇报。安装有日志采集端的节点为上文提到的日志生成节点,安装有日志收集端的节点为上文提到的日志收集节点。
日志收集端视日志数据量的大小,可以单节点或者集群模式运行,日志收集端负责接收各个采集端发送过来的日志信息,落地到文件系统或者是其他存储服务中。日志采集端中采集容器应用中的日志可以使用如下三种方式:方式1:通过Docker API(Application Programming Interface,应用程序编程接口)获取应用的标准输出,以流的方式提供给日志采集端。方式2:Docker将宿主机系统的目录挂载到容器中,这样容器内应用可以将日志写入到宿主机系统目录,可供采集端获取。方式3:在应用中配置日志的输出,如日志框架的输出端(Appender)配置。为了避免日志采集端使用过多的系统资源,影响主要业务的运行。本实施例可以使用CGroup对采集端的资源占用情况进行限制。CGroup为Linux内核一种限制、隔离和审计进程资源使用的物理资源的机制,在本实施例中CGroup可以从内存最大占用和CPU最大使用率两个方面来限制日志采集端的物理资源使用。
请参见图6,图6为本申请实施例所提供的一种节点日志的存储系统的结构示意图;
该系统可以包括:
指针确定模块100,用于当接收到日志生成节点发送的日志传输请求时,确定缓存轮的缓存指针;其中,所述缓存轮对应多个缓存区间,当所述缓存指针在所述缓存轮上旋转一周时所有所述缓存区间被遍历一次;
缓存模块200,用于根据所述缓存指针将所述日志传输请求对应的待缓存节点日志存储至所述缓存区间;
判断模块300,用于判断是否存在目标缓存区间;其中,所述目标缓存区间为缓存写满的缓存区间;
磁盘写入模块400,用于当存在所述目标缓存区间时,将磁盘写入指针指向所述目标缓存区间,以便将所述目标缓存区间的节点日志写入磁盘。
本实施例引入缓存轮的概念实现节点日志的缓存与磁盘写入,在接收到待缓存节点日志时首先确定缓存轮的缓存指针,依据缓存指针指向的地址将待缓存节点日志存储至相应的缓存区间。当检测到缓存轮对应的缓存区间中存在已经被写满的目标缓存区间时,本实施例将磁盘写入指针指向目标缓存区间,以便将目标缓存区间的中缓存的节点日志写入磁盘。本实施例分别用缓存轮的缓存指针和磁盘写入指针实现节点日志的缓存与磁盘写入,实现了缓存写入线程和磁盘写入线程的分离,能够降低节点日志存储对于磁盘写入压力的影响。
进一步的,缓存模块200包括:
日志缓存单元,用于将所述日志传输请求对应的待缓存节点日志存储至所述缓存指针所指向的当前缓存区间;
缓存区间切换单元,用于若当前缓存区间被写满且所述待缓存节点日志未被缓存完毕时,将所述指针移动方向上与当前缓存区间最近的备选缓存区间设置为新的当前缓存区间并继续执行日志缓存操作;
其中,所述指针移动方向为所述缓存指针在所述缓存轮上的指针移动方向;所述备选缓存区间为处于可存储状态的缓存区间。
进一步的,还包括:
时长记录模块,用于记录将所述目标缓存区间的节点日志写入所述磁盘的写入时长;
区间替换模块,用于当所述写入时长大于预设写入时长且所述目标缓存区间的节点日志未写入完毕时,启动新缓存区间,并将所述缓存轮对应的目标缓存区间替换为所述新缓存区间;
异常提示模块,用于生成用于描述所述目标缓存区间存在异常的提示信息。
进一步的,还包括:
第一调整模块,用于当检测到处于可存储状态的缓存区间的数量小于第一区间数量时,为所述缓存轮增加新的缓存区间;
第二调整模块,用于当检测到目标缓存区间的数量小于第二区间数量时,减少磁盘写入线程以便减少所述磁盘写入指针的数量。
进一步的,还包括:
缓存释放模块,用于当所述目标缓存区间的所有节点日志写入所述磁盘之后,清空所述目标缓存区间。
进一步的,还包括:
筛选模块,用于所述日志生成节点对容器内应用生成的原始日志信息执行过滤操作得到符合正则表达式的原始日志信息;
压缩模块,用于对所述符合正则表达式的原始日志信息执行差分压缩操作得到所述待缓存日志信息;
发送模块,用于当所述待缓存日志信息的评价参数符合预设条件时,则将所述待缓存节点日志发送至所述日志收集节点。
进一步的,所述评价参数包括所述待缓存日志信息的数据量和所述待缓存日志信息的生成时长;其中,所述生成时长为所述待缓存日志信息的生成时刻至当前时刻对应的时间段长度;
相应的,所述预设条件包括所述数据量大于预设值和/或生成时长大于预设生成时长。
由于系统部分的实施例与方法部分的实施例相互对应,因此系统部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
本申请还提供了一种存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请还提供了一种电子设备,可以包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然所述电子设备还可以包括各种网络接口,电源等组件。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (10)
1.一种节点日志的存储方法,其特征在于,应用于日志收集节点,包括;
当接收到日志生成节点发送的日志传输请求时,确定缓存轮的缓存指针;其中,所述缓存轮对应多个缓存区间,当所述缓存指针在所述缓存轮上旋转一周时所有所述缓存区间被遍历一次;
根据所述缓存指针将所述日志传输请求对应的待缓存节点日志存储至所述缓存区间;
判断是否存在目标缓存区间;其中,所述目标缓存区间为缓存写满的缓存区间;
若是,则将磁盘写入指针指向所述目标缓存区间,以便将所述目标缓存区间的节点日志写入磁盘。
2.根据权利要求1所述存储方法,其特征在于,根据所述缓存指针将所述日志传输请求对应的待缓存节点日志存储至所述缓存区间包括:
将所述日志传输请求对应的待缓存节点日志存储至所述缓存指针所指向的当前缓存区间;
若当前缓存区间被写满且所述待缓存节点日志未被缓存完毕时,将所述指针移动方向上与当前缓存区间最近的备选缓存区间设置为新的当前缓存区间并继续执行日志缓存操作;
其中,所述指针移动方向为所述缓存指针在所述缓存轮上的指针移动方向;所述备选缓存区间为处于可存储状态的缓存区间。
3.根据权利要求1所述存储方法,其特征在于,还包括:
记录将所述目标缓存区间的节点日志写入所述磁盘的写入时长;
当所述写入时长大于预设写入时长且所述目标缓存区间的节点日志未写入完毕时,启动新缓存区间,并将所述缓存轮对应的目标缓存区间替换为所述新缓存区间;
生成用于描述所述目标缓存区间存在异常的提示信息。
4.根据权利要求1所述存储方法,其特征在于,还包括:
当检测到处于可存储状态的缓存区间的数量小于第一区间数量时,为所述缓存轮增加新的缓存区间;
当检测到目标缓存区间的数量小于第二区间数量时,减少磁盘写入线程以便减少所述磁盘写入指针的数量。
5.根据权利要求1所述存储方法,其特征在于,还包括:
当所述目标缓存区间的所有节点日志写入所述磁盘之后,清空所述目标缓存区间。
6.根据权利要求1至5任一项所述存储方法,其特征在于,还包括:
所述日志生成节点对容器内应用生成的原始日志信息执行过滤操作得到符合正则表达式的原始日志信息;
对所述符合正则表达式的原始日志信息执行差分压缩操作得到所述待缓存日志信息;
当所述待缓存日志信息的评价参数符合预设条件时,则将所述待缓存节点日志发送至所述日志收集节点。
7.根据权利要求6所述存储方法,其特征在于,所述评价参数包括所述待缓存日志信息的数据量和所述待缓存日志信息的生成时长;其中,所述生成时长为所述待缓存日志信息的生成时刻至当前时刻对应的时间段长度;
相应的,所述预设条件包括所述数据量大于预设值和/或生成时长大于预设生成时长。
8.一种节点日志的存储系统,其特征在于,应用于日志收集节点,包括;
指针确定模块,用于当接收到日志生成节点发送的日志传输请求时,确定缓存轮的缓存指针;其中,所述缓存轮对应多个缓存区间,当所述缓存指针在所述缓存轮上旋转一周时所有所述缓存区间被遍历一次;
缓存模块,用于根据所述缓存指针将所述日志传输请求对应的待缓存节点日志存储至所述缓存区间;
判断模块,用于判断是否存在目标缓存区间;其中,所述目标缓存区间为缓存写满的缓存区间;
磁盘写入模块,用于当存在所述目标缓存区间时,将磁盘写入指针指向所述目标缓存区间,以便将所述目标缓存区间的节点日志写入磁盘。
9.一种电子设备,其特征在于,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器调用所述存储器中的计算机程序时实现如权利要求1至7任一项所述节点日志的存储方法的步骤。
10.一种存储介质,其特征在于,所述存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如上权利要求1至7任一项所述节点日志的存储方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910867316.3A CN110716695A (zh) | 2019-09-12 | 2019-09-12 | 一种节点日志的存储方法、系统、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910867316.3A CN110716695A (zh) | 2019-09-12 | 2019-09-12 | 一种节点日志的存储方法、系统、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110716695A true CN110716695A (zh) | 2020-01-21 |
Family
ID=69210451
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910867316.3A Pending CN110716695A (zh) | 2019-09-12 | 2019-09-12 | 一种节点日志的存储方法、系统、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110716695A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111737261A (zh) * | 2020-06-24 | 2020-10-02 | 山东大学 | 基于LSM-Tree的压缩日志缓存方法及装置 |
CN113890746A (zh) * | 2021-08-16 | 2022-01-04 | 曙光信息产业(北京)有限公司 | 攻击流量识别方法、装置、设备以及存储介质 |
CN115174289A (zh) * | 2022-05-24 | 2022-10-11 | 青岛海尔科技有限公司 | 日志数据的存储方法、装置、存储介质及电子装置 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1757202A (zh) * | 2002-08-13 | 2006-04-05 | 英特尔公司 | 自由表和环形数据结构管理 |
CN1932812A (zh) * | 2005-09-16 | 2007-03-21 | 腾讯科技(深圳)有限公司 | 一种日志保存方法及装置 |
CN101625703A (zh) * | 2009-08-21 | 2010-01-13 | 华中科技大学 | 一种内存数据库的日志合并方法和系统 |
CN102053923A (zh) * | 2009-11-05 | 2011-05-11 | 北京金山软件有限公司 | 一种日志数据的存储方法及存储装置 |
CN102722449A (zh) * | 2012-05-24 | 2012-10-10 | 中国科学院计算技术研究所 | 基于SSD的Key-Value型本地存储方法及系统 |
CN103309767A (zh) * | 2012-03-08 | 2013-09-18 | 阿里巴巴集团控股有限公司 | 一种客户端日志处理方法和装置 |
CN103581181A (zh) * | 2013-10-28 | 2014-02-12 | 清华大学 | 数据包捕获、处理和发送方法及系统 |
CN104657366A (zh) * | 2013-11-18 | 2015-05-27 | 深圳市腾讯计算机系统有限公司 | 海量日志写入数据库的方法、装置和日志容灾系统 |
CN106407028A (zh) * | 2016-08-26 | 2017-02-15 | 佛山智能装备技术研究院 | 一种双缓冲式的机器人软件日志存储方法 |
CN107766202A (zh) * | 2017-09-30 | 2018-03-06 | 努比亚技术有限公司 | 基于Log4j的日志写入方法、装置及计算机可读存储介质 |
CN109964215A (zh) * | 2016-11-18 | 2019-07-02 | 微软技术许可有限责任公司 | 具有环形缓冲区镜像的远程直接存储器访问数据通信中的流控制 |
-
2019
- 2019-09-12 CN CN201910867316.3A patent/CN110716695A/zh active Pending
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1757202A (zh) * | 2002-08-13 | 2006-04-05 | 英特尔公司 | 自由表和环形数据结构管理 |
CN1932812A (zh) * | 2005-09-16 | 2007-03-21 | 腾讯科技(深圳)有限公司 | 一种日志保存方法及装置 |
CN101625703A (zh) * | 2009-08-21 | 2010-01-13 | 华中科技大学 | 一种内存数据库的日志合并方法和系统 |
CN102053923A (zh) * | 2009-11-05 | 2011-05-11 | 北京金山软件有限公司 | 一种日志数据的存储方法及存储装置 |
CN103309767A (zh) * | 2012-03-08 | 2013-09-18 | 阿里巴巴集团控股有限公司 | 一种客户端日志处理方法和装置 |
CN102722449A (zh) * | 2012-05-24 | 2012-10-10 | 中国科学院计算技术研究所 | 基于SSD的Key-Value型本地存储方法及系统 |
CN103581181A (zh) * | 2013-10-28 | 2014-02-12 | 清华大学 | 数据包捕获、处理和发送方法及系统 |
CN104657366A (zh) * | 2013-11-18 | 2015-05-27 | 深圳市腾讯计算机系统有限公司 | 海量日志写入数据库的方法、装置和日志容灾系统 |
CN106407028A (zh) * | 2016-08-26 | 2017-02-15 | 佛山智能装备技术研究院 | 一种双缓冲式的机器人软件日志存储方法 |
CN109964215A (zh) * | 2016-11-18 | 2019-07-02 | 微软技术许可有限责任公司 | 具有环形缓冲区镜像的远程直接存储器访问数据通信中的流控制 |
CN107766202A (zh) * | 2017-09-30 | 2018-03-06 | 努比亚技术有限公司 | 基于Log4j的日志写入方法、装置及计算机可读存储介质 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111737261A (zh) * | 2020-06-24 | 2020-10-02 | 山东大学 | 基于LSM-Tree的压缩日志缓存方法及装置 |
CN111737261B (zh) * | 2020-06-24 | 2023-09-22 | 山东大学 | 基于LSM-Tree的压缩日志缓存方法及装置 |
CN113890746A (zh) * | 2021-08-16 | 2022-01-04 | 曙光信息产业(北京)有限公司 | 攻击流量识别方法、装置、设备以及存储介质 |
CN115174289A (zh) * | 2022-05-24 | 2022-10-11 | 青岛海尔科技有限公司 | 日志数据的存储方法、装置、存储介质及电子装置 |
CN115174289B (zh) * | 2022-05-24 | 2023-10-24 | 青岛海尔科技有限公司 | 日志数据的存储方法、装置、存储介质及电子装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220158917A1 (en) | Monitoring a stale data queue for deletion events | |
CN110716695A (zh) | 一种节点日志的存储方法、系统、电子设备及存储介质 | |
JP2019511054A (ja) | 分散クラスタ型訓練方法及び装置 | |
US10419528B2 (en) | Dynamically instantiating and terminating data queues | |
KR20120102664A (ko) | 미래 사용 추정에 기반한 저장 메모리 할당 | |
JP6191691B2 (ja) | 異常検出装置、制御方法、及びプログラム | |
CN104516824B (zh) | 数据存储系统中的存储管理方法和系统 | |
CN102541460A (zh) | 一种多磁盘场景下的磁盘管理方法和设备 | |
US9836358B2 (en) | Ephemeral remote data store for dual-queue systems | |
KR20170052441A (ko) | 중앙 집중 분산 시스템 및 그것의 동작 방법 | |
US11489911B2 (en) | Transmitting data including pieces of data | |
CN110601872A (zh) | 一种传输方法及装置、存储介质 | |
CN115576505A (zh) | 一种数据存储方法、装置、设备及可读存储介质 | |
US20120331235A1 (en) | Memory management apparatus, memory management method, control program, and recording medium | |
CN112306369A (zh) | 一种数据处理方法、装置、服务器及存储介质 | |
CN105242955A (zh) | 一种虚拟机磁盘输入输出调度方法及系统 | |
CN111459402B (zh) | 磁盘可控缓冲写方法、控制器、混合io调度方法及调度器 | |
JP2007328413A (ja) | 負荷分散方法 | |
CN110781166B (zh) | 存储系统中数据管理方法和装置 | |
CN110045924B (zh) | 分级存储方法、装置、电子设备及计算机可读存储介质 | |
US20200250004A1 (en) | Information processing device and storage medium | |
CN107018163B (zh) | 一种资源配置方法和装置 | |
CN111405313B (zh) | 存储流媒体数据的方法和系统 | |
KR101793963B1 (ko) | 대용량 메모리 기반 데이터 처리를 위한 원격 메모리 데이터 관리 방법 및 시스템 | |
US8037242B2 (en) | Contents delivery system using cache and data replication |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200121 |