System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及日志批量上传,具体涉及一种基于code映射的客户端日志批量上传方法及系统。
技术介绍
1、目前很多终端设备包括:手机、机顶盒、电视机等等,这些设备的系统软件都有日志上传的需求,日志上传到日志服务器可以通过清洗后大数据分析(用户画像、习惯、爱好等等)、消息链路跟踪、盒端异常或死机日志定位软件问题等等。现有技术一般都是通过服务端日志工具实现上述的功能,以elk进行举例:“elk”是三个开源项目的首字母缩写,这三个项目分别是:elasticsearch、logstash和kibana。elasticsearch是一个搜索和分析引擎。logstash是服务器端数据处理管道,能够同时从多个来源采集数据、转换数据,然后将数据发送到诸如elasticsearch等“存储库”中。kibana则可以让用户在elasticsearch中使用图形和图表对数据进行可视化。服务端日志的展示、查询、统计、大数据分析等,都可以在elk上实现。消息链路跟踪可通过skywalking实现。
2、对于单个终端来说需要上传的日志量并不大,服务端的日志系统自然没有多少压力,但是若终端数量达到百万、千万甚至更多时,此时对于服务器,带宽、并发处理和存储的压力是巨大的。
3、目前现有技术的做法是通过扩展日志系统的服务器来提高服务端的承载能力,但是此种方式存在使用和维护成本高的问题。
技术实现思路
1、为了克服现有技术的不足,本专利技术提供一种基于code映射的客户端日志批量上传方法及系统,
2、为解决上述问题,本专利技术所采用的技术方案如下:
3、一种基于code映射的客户端日志批量上传方法,包括以下步骤:
4、定义每一类日志与code的对应关系;
5、持续获取待上传的日志,并将所述待上传的日志分为可映射日志和不可映射日志;
6、根据所述对应关系将所述可映射日志逐一映射成code,并让所述不可映射日志携带code,得到待上传的code日志,同时持续将所述code加入到code list中,得到新的codelist;
7、在客户端上开辟用于储存日志和code的flash空间,将所述待上传的code日志和所述新的code list保存到所述flash空间;
8、将所述待上传的code日志按照正常日志上传至服务端,对于所述新的code list则判断是否满足触发条件,若满足,将所述新的code list中的code批量上传至服务端;
9、在所述服务端完成接收后,得到已上传的code日志和已上传的code list,并将所述已上传的code list中的code直接以code形式进行存储。
10、作为本专利技术优选的实施方式,在定义每一类日志与code的对应关系时,包括:
11、若日志类型为不带参数的,则直接按照预设的对应关系进行映射;
12、若日志类型为带有参数的,则进一步判断所带有的参数类型;
13、若参数类型为非浮点型数字,则日志与code的对应关系为:code(2byte)+数量(1byte)+数字(4byte)+数字…;
14、若参数类型为浮点型数字,则判断所述浮点型数字是否为必要的,若是,则将所述浮点型数字转为两个整数,若否,则将所述浮点型数字转为整数。
15、作为本专利技术优选的实施方式,在进一步判断所带有的参数类型时,还包括:
16、若参数类型为能穷举的字符列表,则将所述字符列表转为枚举,日志与code的对应关系为:code(2byte)+数量(1byte)+数字(4byte)+数字…;
17、若参数类型为非固定字符参数,则处理流程为:
18、若code 12102对应的日志格式为:mps recv unknown skip url.[%s];
19、获取到一日志为mps recv unknown skip url.[https://www.google.com];
20、其中,https://www.google.com为所述非固定字符参数,即所述不可映射日志,则日志与code的对应关系为:12102.[https://www.google.com]。
21、作为本专利技术优选的实施方式,在客户端上开辟用于储存日志和code的flash空间时,包括:
22、在所述客户端上开辟包含ringbuffer数组的flash空间,所述flash空间格式为:head+body;
23、其中,所述head包括:ringbuffer size+ringbufferwrite offset+ringbufferread offset+code num;所述body包括:ringbuffer数组。
24、作为本专利技术优选的实施方式,在将所述新的code list保存到所述flash空间后,包括:
25、根据mtu的大小预设一code list上传大小阈值,并基于历史数据得到每条日志的平均大小;
26、根据所述code list上传大小阈值和所述每条日志的平均大小,得到一上传上限,如公式1所示:
27、
28、式中,s为所述上传上限,y为所述code list上传大小阈值,p为所述每条日志的平均大小;
29、其中,所述code list上传大小阈值需预留日志格式和传输协议的空间。
30、作为本专利技术优选的实施方式,在得到一上传上限后,包括:
31、通过为所述新的code list设置所述上传上限,控制每次批量上传时所述新的code list中code的数量,并将所述上传上限作为触发数量。
32、作为本专利技术优选的实施方式,在判断是否满足触发条件时,包括:
33、获取所述code list中code的数量,将所述code的数量与设置的触发数量进行比较;
34、若所述code的数量大于所述设置的触发数量,则认定满足所述触发条件;
35、若所述code的数量小于等于所述设置的触发数量,则获取上一次上传所述新的code list的时间节点,并根据当前的时间节点得到一间隔时间;
36、判断所述间隔时间是否大于设置的触发时间,若是,则认定满足所述触发条件。
37、作为本专利技术优选的实施方式,在将所述新的code list中的code直接以code形式进行存储后,包括:
38、当所述服务端执行特定的任务时,根据所述已上传的code日志和所述已上传的code list进行日志恢复;
39、其中,所述特定的任务包括:服务端日志的展示、查询、统计、大数据分析以及链路跟踪。
40、作本文档来自技高网...
【技术保护点】
1.一种基于Code映射的客户端日志批量上传方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的基于Code映射的客户端日志批量上传方法,其特征在于,在定义每一类日志与Code的对应关系时,包括:
3.根据权利要求2所述的基于Code映射的客户端日志批量上传方法,其特征在于,在进一步判断所带有的参数类型时,还包括:
4.根据权利要求1所述的基于Code映射的客户端日志批量上传方法,其特征在于,在客户端上开辟用于储存日志和Code的flash空间时,包括:
5.根据权利要求1所述的基于Code映射的客户端日志批量上传方法,其特征在于,在将所述新的Code list保存到所述flash空间后,包括:
6.根据权利要求5所述的基于Code映射的客户端日志批量上传方法,其特征在于,在得到一上传上限后,包括:
7.根据权利要求1或6所述的基于Code映射的客户端日志批量上传方法,其特征在于,在判断是否满足触发条件时,包括:
8.根据权利要求1所述的基于Code映射的客户端日志批量上传方法,其特征在于,
9.根据权利要求8所述的基于Code映射的客户端日志批量上传方法,其特征在于,在进行日志恢复时,包括:
10.一种基于Code映射的客户端日志批量上传方法,其特征在于,包括:
...【技术特征摘要】
1.一种基于code映射的客户端日志批量上传方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的基于code映射的客户端日志批量上传方法,其特征在于,在定义每一类日志与code的对应关系时,包括:
3.根据权利要求2所述的基于code映射的客户端日志批量上传方法,其特征在于,在进一步判断所带有的参数类型时,还包括:
4.根据权利要求1所述的基于code映射的客户端日志批量上传方法,其特征在于,在客户端上开辟用于储存日志和code的flash空间时,包括:
5.根据权利要求1所述的基于code映射的客户端日志批量上传方法,其特征在于,在将所述新的code list保存到所述fl...
【专利技术属性】
技术研发人员:杨坚,尹道乐,陈荣周,
申请(专利权)人:珠海迈科智能科技股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。