日志统计方法及系统与流程

文档序号:26622139发布日期:2021-09-11 04:19阅读:406来源:国知局
日志统计方法及系统与流程

1.本技术涉及数据处理技术领域,尤其涉及一种日志统计方法、系统、电子装置及计算机可读存储介质。


背景技术:

2.网络设备、系统及服务程序等,在运作时都会产生一个叫日志(log)的事件记录。每一行日志都记载着日期、时间、使用者及动作等相关操作的描述。而当机器负载较高、网络错误或者逻辑错误时,都会导致上报的日志丢失。但是现有的日志统计方法比较繁琐,由于上报的日志量非常大,通常很难高效统计出日志丢失率是多少。
3.目前大多服务都是并行执行任务,有多个写操作方或读操作方。在多写或多读场景下,为了保证数据准确性,通常通过加锁只允许一方进行数据操作。此时统计日志也需要进行加锁,然而加锁往往会带来性能的损失。因此在时延敏感型业务场景(由于服务端处理数据时延抖动或者较长会导致用户体验质量下降)下,需要避免去做加锁操作,否则会影响用户体验。
4.需要说明的是,上述内容并不用于限制申请保护范围。


技术实现要素:

5.本技术的主要目的在于提出一种日志统计方法、系统、电子装置及计算机可读存储介质,旨在解决如何高效统计出日志丢失率且无需加锁的问题。
6.为实现上述目的,本技术实施例提供了一种日志统计方法,应用于日志发送端,所述方法包括:
7.在接收到日志上报的请求后,采用多个缓冲器分别进行日志计数累加和计数归零;
8.根据所述计数累加的结果对预设时段内的所述日志进行无锁的编号;及
9.将所述日志和对应的所述编号上报至日志收集端,以使所述日志收集端根据所述预设时段内接收到的日志数量和所述编号确定日志系统可靠性。
10.可选地,所述缓冲器的数量为大于或等于四个。
11.可选地,所述采用多个缓冲器分别进行日志计数累加和计数归零包括:
12.在每个所述预设时段内,选择所述多个缓冲器中的一个进行日志计数累加,并对所述多个缓冲器中的另外一个进行计数归零。
13.可选地,所述预设时段为当天的第k分钟内,所述采用多个缓冲器分别进行日志计数累加和计数归零包括:
14.确定用于进行计数累加的缓冲器序号n和用于计数归零的缓冲器序号m,其中所述序号n为k除以所述缓冲器的数量p后取余值,所述序号m为n+2除以p后取余值;
15.在序号为n的缓冲器中对所述预设时段内收到的日志进行计数累加;
16.在序号为m的缓冲器中进行计数归零。
17.此外,为实现上述目的,本技术实施例还提供一种日志统计系统,应用于日志发送端,所述系统包括:
18.计数模块,用于在接收到日志上报的请求后,采用多个缓冲器分别进行日志计数累加和计数归零;
19.编号模块,用于根据所述计数累加的结果对预设时段内的所述日志进行无锁的编号;
20.上报模块,用于将所述日志和对应的所述编号上报至日志收集端,以使所述日志收集端根据所述预设时段内接收到的日志数量和所述编号确定日志系统可靠性。
21.为实现上述目的,本技术实施例还提供一种日志统计方法,应用于日志收集端,所述方法包括:
22.收集日志发送端上报的日志及对应的编号,其中所述编号为采用多个缓冲器分别进行日志计数累加和计数归零后得到;
23.统计预设时段内收到的日志数量;
24.获取所述预设时段内收到的所述日志的最大编号;及
25.根据所述日志数量和所述最大编号确定日志系统可靠性。
26.可选地,所述日志系统可靠性根据所述预设时段内的日志丢失率确定,所述日志丢失率=1

(日志数量/最大编号)。
27.为实现上述目的,本技术实施例还提供一种日志统计系统,应用于日志收集端,所述系统包括:
28.收集模块,用于收集日志发送端上报的日志及对应的编号,其中所述编号为采用多个缓冲器分别进行日志计数累加和计数归零后得到;
29.统计模块,用于统计预设时段内收到的日志数量;
30.获取模块,用于获取所述预设时段内收到的日志的最大编号;
31.确定模块,用于根据所述日志数量和所述最大编号确定日志系统可靠性。
32.为实现上述目的,本技术实施例还提供一种电子装置,所述电子装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的日志统计程序,所述日志统计程序被所述处理器执行时实现如上述的日志统计方法。
33.为实现上述目的,本技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有日志统计程序,所述日志统计程序被处理器执行时实现如上述的日志统计方法。
34.本技术实施例提出的日志统计方法、系统、电子装置及计算机可读存储介质,能够在日志发送端采用多个缓冲器分别进行预设时段内的日志计数累加和计数归零,根据计数累加的结果对预设时段内的所述日志进行无锁的编号,而在日志收集端统计出所述预设时段内收到的日志数量并获取所述预设时段内收到的日志的最大编号,然后根据所述日志数量和所述最大编号计算得到日志丢失率,算法简单便捷,计数准确,可以高效地统计出所述预设时段内的日志丢失率,从而判断日志系统的可靠性,并且不需要加锁。
附图说明
35.图1为实现本技术各个实施例的一种应用环境架构图;
36.图2为本技术第一实施例提出的一种日志统计方法的流程图;
37.图3为图2中步骤s200的细化流程示意图;
38.图4为本技术中缓冲器数量为4时的示意图;
39.图5为本技术中缓冲器数量为2时的示意图;
40.图6a

6b为本技术中缓冲器数量为3时的示意图;
41.图7为本技术第二实施例提出的一种日志统计方法的流程图;
42.图8为本技术第三实施例提出的一种电子装置的硬件架构示意图;
43.图9为本技术第四实施例提出的一种日志统计系统的模块示意图;
44.图10为本技术第五实施例提出的一种日志统计系统的模块示意图。
具体实施方式
45.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本技术,并不用于限定本技术。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
46.需要说明的是,在本技术实施例中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本技术要求的保护范围之内。
47.请参阅图1,图1为实现本技术各个实施例的一种应用环境架构图。本技术可应用于包括,但不仅限于日志发送端2、日志收集端4、网络6的应用环境中。
48.其中,所述日志发送端2用于发送(上报)日志,可以是服务的客户端等电子装置。并且,所述日志发送端2在所述日志中还标记了编号,且不需要加锁。通常情况下,所述日志发送端2包括多个cpu,可以处理多线程任务,即多个cpu同时执行任务。cpu作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。所述日志收集端4用于从一个或多个所述日志发送端2收集日志,可以是提供所述服务的服务器、专用于收集日志的服务器等电子装置。
49.所述网络6可以是企业内部网(intranet)、互联网(internet)、全球移动通讯系统(global system of mobile communication,gsm)、宽带码分多址(wideband code division multiple access,wcdma)、4g网络、5g网络、蓝牙(bluetooth)、wi

fi等无线或有线网络。所述日志收集端4和一个或多个所述日志发送端2之间通过所述网络6通信连接,以进行数据传输和交互。
50.实施例一
51.如图2所示,为本技术第一实施例提出的一种日志统计方法的流程图。可以理解,本方法实施例中的流程图不用于对执行步骤的顺序进行限定。根据需要,还可以对该流程图中的部分步骤进行添加或删减。下面以所述日志发送端2作为执行主体对该方法进行说明。
52.该方法包括以下步骤:
53.s200,在接收到日志上报的请求后,采用多个缓冲器分别进行日志计数累加和计数归零。
54.在本实施例中,所述计数的目的是为了给每个日志进行高效无锁的编号,以便日志收集端4快速统计日志丢失率。在对预设时段内需要上报的日志分配编号时,需要通过缓冲器(buffer)来进行计数。所述预设时段可以是一分钟,例如当天的第k分钟。
55.在现有的日志统计方案中,当统计完当前某一分钟的日志数量,需要统计下一分钟的日志数量时,无论是复用当前的buffer还是申请新的buffer,都需要通过加锁进行同步。因为当复用当前的buffer时,既要对所述当前的buffer(当前这一分钟的日志数量)进行计数归零,又要(针对下一分钟的日志)进行计数累加会造成计数归零和计数累加之间的冲突,很容易导致错误。而当申请新的buffer时,只能由一个cpu进行申请,然后同步给各个cpu去做计数累加,这也需要加锁,否则无法决定由哪个cpu进行申请操作。
56.而在本实施例中,通过采用多个buffer分别进行日志计数累加(读或写操作)和计数归零,可以解决上述问题,既不需要加锁,也能避免冲突。具体地,本实施例中采用的buffer的数量为至少四个(大于或等于四个)。在对每一分钟内的日志进行编号时,均需要选择其中一个buffer进行日志计数累加,并选择另外一个buffer进行计数归零,在下一分钟时则换一个buffer进行计数累加并且换一个buffer进行计数归零,以此类推。通过在相同时段内采用不同的buffer分别进行计数累加和计数归零,可以避免发生冲突。
57.而且,本实施例中针对每一分钟具体选择哪个buffer用于计数累加,又对哪个buffer进行计数归零,有一套预设的处理方式,通过处理结果就可以分别确定用于计数累加和用于计数归零的buffer的序号,因此不需要另外进行加锁操作。
58.具体而言,进一步参阅图3,为上述步骤s200的细化流程示意图。可以理解,该流程图不用于对执行步骤的顺序进行限定。根据需要,还可以对该流程图中的部分步骤进行添加或删减。在本实施例中,所述步骤s200具体包括:
59.s2000,确定用于进行计数累加的缓冲器序号n和用于计数归零的缓冲器序号m。
60.在本实施例中,当所述预设时段为当天的第k分钟时,所述序号n为k除以buffer的数量p后取余值,所述序号m为n+2除以p后取余值。例如,假设k=1,p=4,则此时所述序号n=1,所述序号m=3。
61.值得注意的是,第k分钟过渡到k+1分钟时候,存在有些cpu获取到的还是k值,而另一些cpu已经获取得到k+1值的情况。例如,假设k从0过渡到1的时候,存在有些cpu获取到的还是0值,而另一些cpu已经获取得到1值,其他情况同理可得。因此,这时获取到k值的cpu计算出的序号n和序号m就会和另一些获取到k+1值的cpu计算出的序号n和序号m不一样(分别相差1,例如有些是n=0,m=2,另一些是n=1,m=3)。针对这种可能出现的情况,本实施例将buffer的数量设置为至少为四个,且将所述序号m的计算方式设置为n+2除以p后取余值,也就是序号n和序号m之间间隔一个序号,这样即使不同cpu在过渡时计算出的序号n和序号m的值不一样(有些是n和m,有些是n+1和m+1),但是n、m、n+1和m+1这四个序号(例如0、2、1、3)之间不会重复,因此不会对同一个buffer同时进行计数累加和计数归零操作,不会因为冲突而导致计数不准确。
62.s2002,在序号为n的缓冲器中对所述预设时段内收到的日志进行计数累加。
63.按照上述确定结果,在统计当天第k分钟的日志数量时,采用序号为1的buffer进行日志计数累加。
64.s2004,在序号为m的缓冲器中进行计数归零。
65.按照上述确定结果,在统计当天第k分钟的日志数量的同时,对序号为3的buffer进行计数归零,以便下一次再使用该buffer进行计数累加。
66.回到图2,s202,根据所述计数累加的结果对预设时段内的所述日志进行无锁的编号。
67.在每个所述预设时段内,根据对应buffer中的计数累加的结果,对所述预设时段内需要上报的所述日志分别分配对应的编号。所述编号可以是数字、字母等可以表示连续性顺序的符号。根据所述计数累加的结果,按顺序为每个日志分配相应的编号即可(保证自增且不重复)。
68.由于本实施例中针对每个所述预设时段选用的buffer均不相同,且具体选择哪个buffer用于计数累加,又对哪个buffer进行计数归零,有一套预设的处理方式,通过处理结果就可以分别确定用于计数累加和用于计数归零的buffer的序号,且根据对应buffer中的计数累加的结果即可直接对所述预设时段内的各个日志分别进行编号,因此不需要另外进行加锁操作。
69.s204,将所述日志和对应的所述编号上报至日志收集端,以使所述日志收集端根据所述预设时段内接收到的日志数量和所述编号确定日志系统可靠性。
70.在对所述预设时段内的日志进行编号之后,日志发送端2将所述日志和对应的所述编号上报至日志收集端4。所述编号可以标记在所述日志中。日志收集端4可以收集一个或多个日志发送端2上报的日志及其编号,以对这些日志进行丢失率计算、日志分析等操作,以确定日志系统可靠性。其中,确定日志系统可靠性的具体方式参阅下一实施例,在此不再赘述。
71.本实施例提出的日志统计方法,采用至少四个buffer,针对每个预设时段(当天第k分钟)内的需要上报的日志,读/写第n个buffer(计数累加),计数归零第m个buffer,其中n和m的值根据k和buffer数量进行取余值计算得到,然后根据计数累加结果直接对所述日志分配对应的编号,以使日志收集端根据所述预设时段内接收到的日志数量和所述编号即可计算出日志丢失率。该方法可以在日志发送端采用无锁的数据结构为每个日志进行编号,不会产生冲突,并使得日志收集端可以非常便捷高效地统计出日志丢失率,从而判断日志系统的可靠性。
72.为了更详尽的对该方法进行解释说明,以下以特定的具体实施例为例进行说明。本领域技术人员当知,下述具体实施例的内容并不用于限制本发明的发明思想,本领域技术人员可以轻易依据下述实施例具体描述内容进行适当的内容发散和扩展。
73.如图4所示,为本技术中缓冲器数量为4时的示意图。在图4中,采用4个buffer作为计数的对象(图中序号为0、1、2、3)。每次统计第k分钟的日志数量时,选择第n个buffer进行计数累加(读或写),并对第m个buffer进行计数归零。其中n=k/4取余值,m=(n+2)/4取余值。
74.也就是说,当k=0时,n=0,m=2,采用序号为0的buffer进行计数累加,对序号为2的buffer进行计数归零。当k=1时,n=1,m=3,采用序号为1的buffer进行计数累加,对序
号为3的buffer进行计数归零。当k=2时,n=2,m=0,采用序号为2的buffer进行计数累加,对序号为0的buffer进行计数归零。当k=3时,n=3,m=1,采用序号为3的buffer进行计数累加,对序号为1的buffer进行计数归零。
75.此外,为了阐述buffer数量设置为大于或等于4的原因,下面分别以buffer数量为2或3为例说明其弊端。
76.如图5所示,当采用2个buffer作为计数的对象(图中序号为0、1)时,每次统计第k分钟的日志数量时可以选择第n个buffer进行计数累加(读或写),并对第m个buffer进行计数归零,其中n=k/2取余值,m=(n+1)/2取余值。也就是说,当k=0时,n=0,m=1,采用序号为0的buffer进行计数累加,对序号为1的buffer进行计数归零。当k=1时,n=1,m=0,采用序号为1的buffer进行计数累加,对序号为0的buffer进行计数归零。但是,在k从0值切换到1值的时候,有部分cpu获取到的还是0值,所以还是会对序号为1的buffer进行计数归零操作,因此不同cpu可能同时对序号为1的buffer进行计数累加和计数归零操作,从而造成冲突,导致计数不准确。
77.如图6a

6b所示,当采用3个buffer作为计数的对象(图中序号为0、1、2)时,每次统计第k分钟的日志数量时可以选择第n个buffer进行计数累加(读或写),并对第m个buffer进行计数归零。第一种情况,假设n=k/3取余值,m=(n+1)/3取余值(图6a所示)。当k=0时,n=0,m=1,采用序号为0的buffer进行计数累加,对序号为1的buffer进行计数归零。当k=1时,n=1,m=2,采用序号为1的buffer进行计数累加,对序号为2的buffer进行计数归零。当k=2时,n=2,m=0,采用序号为2的buffer进行计数累加,对序号为0的buffer进行计数归零。但是,在k从0值切换到1值的时候,有部分cpu获取到的还是0值,所以还是会对序号为1的buffer进行计数归零操作,因此不同cpu可能同时对序号为1的buffer进行计数累加和计数归零操作,从而造成冲突,导致计数不准确。
78.第二种情况,假设n=k/3取余值,m=(n+2)/3取余值(图6b所示)。当k=0时,n=0,m=2,采用序号为0的buffer进行计数累加,对序号为2的buffer进行计数归零。当k=1时,n=1,m=0,采用序号为1的buffer进行计数累加,对序号为0的buffer进行计数归零。当k=2时,n=2,m=1,采用序号为2的buffer进行计数累加,对序号为1的buffer进行计数归零。但是,在k从0值切换到1值的时候,有部分cpu获取到的还是0值,所以还是会对序号为0的buffer进行计数累加,但是获取到1值的cpu在对序号为0的buffer进行计数归零操作,因此不同cpu可能同时对序号为0的buffer进行计数累加和计数归零操作,从而造成冲突,导致计数不准确。
79.通过上述情况的分析可以看出,在本实施例中,为了避免不同cpu同时对同一个buffer进行不同的操作而造成冲突,需要将buffer的数量设置为大于或等于4,且序号m=(n+2)/4取余值,即序号n和序号m之间间隔一个序号。
80.实施例二
81.如图7所示,为本技术第二实施例提出的一种日志统计方法的流程图。可以理解,本方法实施例中的流程图不用于对执行步骤的顺序进行限定。根据需要,还可以对该流程图中的部分步骤进行添加或删减。下面以所述日志收集端4作为执行主体对该方法进行说明。
82.该方法包括以下步骤:
83.s400,收集日志发送端上报的日志及对应的编号。
84.日志收集端4可以收集一个或多个日志发送端2上报的日志,以对这些日志进行丢失率计算、日志分析等操作。
85.在本实施例中,日志发送端2还对每个预设时段内的日志通过采用个缓冲器分别进行日志计数累加和计数归零,为每个日志分配了对应的编号,因此日志收集端4除了接收到所述日志之外,同时还可以收到所述日志对应的编号。
86.s402,统计预设时段内收到的日志数量。
87.所述预设时段可以是一分钟,例如当天的第k分钟。日志收集端4在所述预设时段(第k分钟)内收集到所述日志和对应的编号后,可以统计出收到的所有日志的数量。也就是说,本实施例不需要统计全量日志,只需统计其中所述预设时段(第k分钟)内接收到多少条日志即可,避免统计海量日志带来的效率低下或准确率降低。
88.s404,获取所述预设时段内收到的日志的最大编号。
89.通过所述最大编号可以得到所述预设时段内上报的日志数量。在本实施例中,日志发送端2在向日志收集端4上报日志时,还对所述预设时段内每条日志都标记了一个编号,所述编号可以是数字、字母等可以表示连续性顺序的符号(保证自增且不重复)。日志收集端4在统计所述预设时段内收到的日志数量后,获取所述预设时段内收到的日志的最大编号。所述最大编号是指所述预设时间内收集到日志的编号的数值最大(即编号数值顺序最靠后,由于日志上报并非是有序地到达日志收集端,所以并不是接收顺序最靠后)。
90.s406,根据所述日志数量和所述最大编号确定日志系统可靠性。
91.在本实施例中,所述日志系统可靠性根据所述预设时段内的日志丢失率确定。所述日志丢失率的计算公式为:日志丢失率=1

(日志数量/最大编号)。根据统计出的所述日志数量和获取到的所述最大编号以及上述公式,即可计算出所述预设时段内的日志丢失率(可能是网络传输中丢失了,也可能是日志收集端出现逻辑错误导致日志丢失了,或者磁盘损坏等),从而用来判断当前日志系统是否可靠(丢失率超过阈值则不可靠)。
92.本实施例提出的日志统计方法,由于日志发送端采用至少四个buffer分别针对每个预设时段(当天第k分钟)内的日志进行计数累加和计数归零,并根据计数累加结果对每条日志进行编号,因此日志收集端通过统计出所述预设时段内收到的日志数量和所述预设时段内收到的日志的最大编号,即可计算出日志丢失率。上述便捷的统计算法以及无锁的数据结构可以高效统计出日志丢失率,从而判断日志系统的可靠性。
93.实施例三
94.如图8所示,为本技术第三实施例提出一种电子装置20的硬件架构示意图。本实施例中,所述电子装置20可包括,但不仅限于,可通过系统总线相互通信连接的存储器21、处理器22、网络接口23。需要指出的是,图8仅示出了具有组件21

23的电子装置20,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。在本实施例中,所述电子装置20可以是所述日志发送端2或所述日志收集端4。
95.所述存储器21至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器21可以是所述电子装
置20的内部存储单元,例如该电子装置20的硬盘或内存。在另一些实施例中,所述存储器21也可以是所述电子装置20的外部存储设备,例如该电子装置20上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。当然,所述存储器21还可以既包括所述电子装置20的内部存储单元也包括其外部存储设备。本实施例中,所述存储器21通常用于存储安装于所述电子装置20的操作系统和各类应用软件,例如日志统计系统60的程序代码等。此外,所述存储器21还可以用于暂时地存储已经输出或者将要输出的各类数据。
96.所述处理器22在一些实施例中可以是中央处理器(central processing unit,cpu)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器22通常用于控制所述电子装置20的总体操作。本实施例中,所述处理器22用于运行所述存储器21中存储的程序代码或者处理数据,例如运行所述日志统计系统60等。
97.所述网络接口23可包括无线网络接口或有线网络接口,该网络接口23通常用于在所述电子装置20与其他电子设备之间建立通信连接。
98.实施例四
99.如图9所示,为本技术第四实施例提出一种日志统计系统60的模块示意图。在本实施例中,所述日志统计系统60应用于所述日志发送端2中。所述日志统计系统60可以被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本技术实施例。本技术实施例所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,以下描述将具体介绍本实施例各程序模块的功能。
100.在本实施例中,所述日志统计系统60包括:
101.计数模块600,用于在接收到日志上报的请求后,采用多个缓冲器分别进行日志计数累加和计数归零。
102.在本实施例中,所述计数的目的是为了给每个日志进行高效无锁的编号,以便日志收集端4快速统计日志丢失率。在对预设时段内需要上报的日志分配编号时,需要通过缓冲器(buffer)来进行计数。所述预设时段可以是一分钟,例如当天的第k分钟。
103.通过采用多个buffer分别进行日志计数累加(读或写操作)和计数归零,可以不需要加锁,也能避免冲突。具体地,本实施例中采用的buffer的数量为至少四个(大于或等于四个)。在对每一分钟内的日志进行编号时,均需要选择其中一个buffer进行日志计数累加,并选择另外一个buffer进行计数归零,在下一分钟时则换一个buffer进行计数累加并且换一个buffer进行计数归零,以此类推。通过在相同时段内采用不同的buffer分别进行计数累加和计数归零,可以避免发生冲突。
104.而且,本实施例中针对每一分钟具体选择哪个buffer用于计数累加,又对哪个buffer进行计数归零,有一套预设的处理方式,通过处理结果就可以分别确定用于计数累加和用于计数归零的buffer的序号,因此不需要另外进行加锁操作。
105.具体而言,该过程包括:
106.(1)确定用于进行计数累加的缓冲器序号n和用于计数归零的缓冲器序号m。
107.在本实施例中,当所述预设时段为当天的第k分钟时,所述序号n为k除以buffer的数量p后取余值,所述序号m为n+2除以p后取余值。例如,假设k=1,p=4,则此时所述序号n=1,所述序号m=3。
108.(2)在序号为n的缓冲器中对所述预设时段内收到的日志进行计数累加。
109.按照上述确定结果,在统计当天第k分钟的日志数量时,采用序号为1的buffer进行日志计数累加。
110.(3)在序号为m的缓冲器中进行计数归零。
111.按照上述确定结果,在统计当天第k分钟的日志数量的同时,对序号为3的buffer进行计数归零,以便下一次再使用该buffer进行计数累加。
112.编号模块602,用于根据所述计数累加的结果对预设时段内的所述日志进行无锁的编号。
113.在每个所述预设时段内,根据对应buffer中的计数累加的结果,对所述预设时段内需要上报的所述日志分别分配对应的编号。所述编号可以是数字、字母等可以表示连续性顺序的符号。根据所述计数累加的结果,按顺序为每个日志分配相应的编号即可(保证自增且不重复)。
114.上报模块604,用于将所述日志和对应的所述编号上报至日志收集端,以使所述日志收集端根据所述预设时段内接收到的日志数量和所述编号确定日志系统可靠性。
115.在对所述预设时段内的日志进行编号之后,上报模块604将所述日志和对应的所述编号上报至日志收集端4。所述编号可以标记在所述日志中。日志收集端4可以收集一个或多个日志发送端2上报的日志及其编号,以对这些日志进行丢失率计算、日志分析等操作,以确定日志系统可靠性。其中,确定日志系统可靠性的具体方式参阅下一实施例,在此不再赘述。
116.本实施例提出的日志统计系统,采用至少四个buffer,针对每个预设时段(当天第k分钟)内的需要上报的日志,读/写第n个buffer(计数累加),计数归零第m个buffer,其中n和m的值根据k和buffer数量进行取余值计算得到,然后根据计数累加结果直接对所述日志分配对应的编号,以使日志收集端根据所述预设时段内接收到的日志数量和所述编号即可计算出日志丢失率。该系统可以在日志发送端采用无锁的数据结构为每个日志进行编号,不会产生冲突,并使得日志收集端可以非常便捷高效地统计出日志丢失率,从而判断日志系统的可靠性。
117.实施例五
118.如图10所示,为本技术第五实施例提出一种日志统计系统60的模块示意图。在本实施例中,所述日志统计系统60应用于所述日志收集端4中。所述日志统计系统60可以被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本技术实施例。本技术实施例所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,以下描述将具体介绍本实施例各程序模块的功能。
119.在本实施例中,所述日志统计系统60包括:
120.收集模块606,用于收集日志发送端上报的日志及对应的编号。
121.收集模块606可以收集一个或多个日志发送端2上报的日志,以对这些日志进行丢失率计算、日志分析等操作。
122.在本实施例中,日志发送端2还对每个预设时段内的日志通过采用个缓冲器分别进行日志计数累加和计数归零,为每个日志分配了对应的编号,因此日志收集端4除了接收到所述日志之外,同时还可以收到所述日志对应的编号。
123.统计模块608,用于统计预设时段内收到的日志数量。
124.所述预设时段可以是一分钟,例如当天的第k分钟。在所述预设时段(第k分钟)内收集到所述日志和对应的编号后,统计模块608可以统计出收到的所有日志的数量。也就是说,本实施例不需要统计全量日志,只需统计其中所述预设时段(第k分钟)内接收到多少条日志即可,避免统计海量日志带来的效率低下或准确率降低。
125.获取模块610,用于获取所述预设时段内收到的日志的最大编号。
126.通过所述最大编号可以得到所述预设时段内上报的日志数量。在本实施例中,日志发送端2在向日志收集端4上报日志时,还对所述预设时段内每条日志都标记了一个编号,所述编号可以是数字、字母等可以表示连续性顺序的符号(保证自增且不重复)。在统计所述预设时段内收到的日志数量后,获取模块604获取所述预设时段内收到的日志的最大编号。所述最大编号是指所述预设时间内收集到日志的编号的数值最大(即编号数值顺序最靠后,由于日志上报并非是有序地到达日志收集端,所以并不是接收顺序最靠后)。
127.确定模块612,用于根据所述日志数量和所述最大编号确定日志系统可靠性。
128.在本实施例中,所述日志系统可靠性根据所述预设时段内的日志丢失率确定。所述日志丢失率的计算公式为:日志丢失率=1

(日志数量/最大编号)。根据统计出的所述日志数量和获取到的所述最大编号以及上述公式,即可计算出所述预设时段内的日志丢失率,从而用来判断当前日志系统是否可靠(丢失率超过阈值则不可靠)。
129.本实施例提出的日志统计系统,由于日志发送端采用至少四个buffer分别针对每个预设时段(当天第k分钟)内的日志进行计数累加和计数归零,并根据计数累加结果对每条日志进行编号,因此日志收集端通过统计出所述预设时段内收到的日志数量和所述预设时段内收到的日志的最大编号,即可计算出日志丢失率。上述便捷的统计算法以及无锁的数据结构可以高效统计出日志丢失率,从而判断日志系统的可靠性。
130.实施例六
131.本技术还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有日志统计程序,所述日志统计程序可被至少一个处理器执行,以使所述至少一个处理器执行如上述的日志统计方法的步骤。
132.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
133.上述本技术实施例序号仅仅为了描述,不代表实施例的优劣。
134.显然,本领域的技术人员应该明白,上述的本技术实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本技术实施例不限制于任何特定的硬件和软件结合。
135.以上仅为本技术实施例的优选实施例,并非因此限制本技术实施例的专利范围,凡是利用本技术实施例说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本技术实施例的专利保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1