配置文件生成方法、日志采集方法、装置、设备和介质与流程

文档序号:30420662发布日期:2022-06-15 13:06阅读:140来源:国知局
配置文件生成方法、日志采集方法、装置、设备和介质与流程

1.本公开涉及计算机技术领域,尤其涉及一种配置文件生成方法、日志采集方法、装置、设备和介质。


背景技术:

2.边缘计算是部署在边缘节点的一种计算服务。边缘计算使用容器技术作为资源载体,可以根据业务需求,随时创建计算和网络资源,而无需提前投入设备采购成本,是一种比自建或者租用物理机或者虚拟服务器更加高效的实现方式。
3.通常,一个边缘计算系统中包括若干个边缘节点。根据每个边缘节点硬件资源水平,每个边缘节点上可以部署若干个业务容器。业务容器在执行具体业务逻辑过程中,会不断产生运行日志,这些运行日志对于业务运行状态监控、故障排查以及流量统计都发挥着重要作用。
4.然而,现有方案在利用日志采集器(或称为日志采集组件)采集每个容器的运行日志过程中,需要技术人员手动添加针对新产生的容器的日志采集,导致日志采集效率较低。


技术实现要素:

5.为了解决上述技术问题或者至少部分地解决上述技术问题,本公开实施例提供了一种配置文件生成方法、日志采集方法、装置、设备和介质。
6.第一方面,本公开实施例提供了一种日志采集配置文件生成方法,包括:
7.监测计算设备上是否产生新容器;
8.如果监测到所述计算设备上产生新容器,则基于日志采集配置文件模板和所述新容器的部署文件,为所述新容器生成日志采集配置文件;
9.其中,所述日志采集配置文件用于采集所述新容器运行过程中产生的日志。
10.第二方面,本公开实施例还提供了一种日志采集方法,基于日志采集配置文件实现,所述日志采集配置文件利用本公开实施例提供的任一日志采集配置文件生成方法得到,所述日志采集方法包括:
11.获取计算设备上新容器的日志采集配置文件;
12.基于所述日志采集配置文件,采集所述新容器运行过程中产生的日志。
13.第三方面,本公开实施例还提供了一种日志采集配置文件生成装置,包括:
14.新容器监测模块,用于监测计算设备上是否产生新容器;
15.配置文件生成模块,用于如果监测到所述计算设备上产生新容器,则基于日志采集配置文件模板和所述新容器的部署文件,为所述新容器生成日志采集配置文件;
16.其中,所述日志采集配置文件用于采集所述新容器运行过程中产生的日志。
17.第四方面,本公开实施例还提供了一种日志采集装置,基于日志采集配置文件实现,所述日志采集配置文件利用本公开实施例提供的任一日志采集配置文件生成方法得到,所述日志采集装置包括:
18.配置文件获取模块,用于获取计算设备上新容器的日志采集配置文件;
19.日志采集模块,用于基于所述日志采集配置文件,采集所述新容器运行过程中产生的日志。
20.第五方面,本公开实施例还提供了一种计算设备,所述计算设备包括:处理器;用于存储所述处理器可执行指令或程序的存储器;所述处理器,用于从所述存储器中读取所述可执行指令或程序,并执行所述可执行指令或程序以实现本公开实施例所提供的任一日志采集配置文件生成方法,或者实现本公开实施例所提供的任一日志采集方法。
21.第六方面,本公开实施例还提供了一种计算机可读存储介质,所述存储介质存储有计算机程序或指令,所述计算机程序或指令被处理器执行时实现本公开实施例所提供的任一日志采集配置文件生成方法,或者实现本公开实施例所提供的任一日志采集方法。
22.本公开实施例提供的技术方案与现有技术相比具有如下优点:本公开实施例通过监测新容器的产生,并自动化为新容器生成日志采集配置文件,以用于采集新容器运行过程中产生的日志,省去了手动添加针对新容器的日志采集操作,解决了现有方案中日志采集效率较低的问题,实现了对新容器的动态监控,提高了日志采集的效率。
附图说明
23.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
24.为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
25.图1为本公开实施例提供的一种日志采集配置文件生成方法的流程图;
26.图2为本公开实施例提供的另一种日志采集配置文件生成方法的流程图;
27.图3为本公开实施例提供的一种日志采集方法的流程图;
28.图4为本公开实施例提供的另一种日志采集方法的流程图;
29.图5为本公开实施例提供的一种日志采集与分发的流程示意图;
30.图6为本公开实施例提供的一种日志采集配置文件生成装置的结构示意图;
31.图7为本公开实施例提供的一种日志采集装置的结构示意图
32.图8为本公开实施例提供的一种计算设备的结构示意图。
具体实施方式
33.为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
34.在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
35.图1为本公开实施例提供的一种日志采集配置文件生成方法的流程图,本公开实施例可以适用于如何便捷采集计算设备上部署的容器在运行过程中产生的日志的情况。该
日志采集配置文件生成方法可以由日志采集配置文件生成装置来执行,该装置可以采用软件和/硬件实现,并可集成在任意的计算设备上,并且,该装置可以采用容器监控组件的形式实现,例如log-pilot(一种智能容器日志采集工具)容器监控组件等。计算设备可以是边缘计算系统中的计算节点。
36.如图1所示,本公开实施例提供的日志采集配置文件生成方法可以包括:
37.s101、监测计算设备上是否产生新容器。
38.具体的,可以利用预先设置的容器监测程序对计算设备上运行的容器进行监测,关于容器的监测信息可以包括但不限于:当前运行的容器数量、每个容器的运行状态是否正常、容器标识(或称为容器id)、ip地址和端口号等信息。其中,容器标识、ip地址或端口号可以用于唯一性标识每个容器,并可以采用信息列表的形式存储在计算设备中。
39.如果监测到当前运行的容器数量增加,或者监测到新的容器标识、新的ip地址和新的端口号中的至少一种,则可以认为计算设备上产生新容器,否则没有新容器产生。
40.s102、如果监测到计算设备上产生新容器,则基于日志采集配置文件模板和新容器的部署文件,为新容器生成日志采集配置文件。
41.日志采集配置文件模板具有通用性,用于定义生成日志采集配置文件所需的各个信息,例如包括但不限于容器标识、待采集日志文件标识、待采集日志文件的存储路径、日志采集限速时机和日志采集限速类型等。其中,待采集日志文件标识用于唯一性标识需要采集的日志文件类型,可以是日志文件名称,例如待采集日志文件标识包括两类:一类标识用于标记容器进程标准输出日志文件,另一类标识用于标记容器内部产生的日志文件;日志采集限速类型包括日志采集过程中按行(line)限速采集或者按字节(bytes)限速采集等。根据日志采集需求,日志采集配置文件模板中预先设置的信息可以灵活调整。
42.当监测到新容器产生后,可以依据日志采集配置文件模板获取所需信息,例如从新容器的部署文件中获取,然后将获取的信息填加至日志采集配置文件模板,从而为新容器生成日志采集配置文件。新容器的部署文件(或称为容器配置文件)指新容器被创建过程中产生的文件,其中包括了与新容器相关的任意预设配置信息。日志采集配置文件用于采集新容器运行过程中产生的日志,即作为采集日志的文件依据。对于日志采集配置文件模板中无法获取的信息,可以默认设置为无,例如针对当前新容器,如果无法获取日志采集限速时机,则日志采集配置文件模板中该信息可以设置为无,从而在日志采集阶段,不需要考虑日志采集限速时机。针对不同的新容器,基于日志采集配置文件模板和新容器的部署文件生成的日志采集配置文件中包括的信息可以不同。
43.本公开实施例通过监测新容器的产生,并自动化为新容器生成日志采集配置文件,以用于采集新容器运行过程中产生的日志,省去了手动添加针对新容器的日志采集操作,解决了现有方案中日志采集效率较低的问题,实现了对新容器的动态监控,提高了日志采集的效率。
44.在上述技术方案的基础上,可选的,基于日志采集配置文件模板和新容器的部署文件,为新容器生成日志采集配置文件,包括:
45.确定新容器的部署文件中是否存在日志采集标签;即日志采集标签用于区分需要进行日志采集的容器和不需要进行日志采集的容器;
46.如果确定新容器的部署文件中存在日志采集标签,即需要进行日志采集,则基于
日志采集配置文件模板和新容器的部署文件,为新容器生成日志采集配置文件。
47.新容器的部署文件中包括的与新容器相关的任意预设配置信息,例如包括但不限于容器标识、待采集日志文件标识、待采集日志文件的存储路径、日志采集限速时机、日志采集限速类型和日志采集标签等。日志采集标签可以采用任意形式的字符串实现,本公开实施例不作具体限定。部署文件中是否添加日志采集标签,可以由用户根据当前业务需求确定,例如,在新容器创建过程中如果检测到用户触发的标签添加操作,则在部署文件中添加日志采集标签。在为新容器生成日志采集配置文件的过程中,可以通过解析新容器的部署文件获取所需信息。
48.通过确认新容器的部署文件中是否存在日志采集标签,根据日志采集标签为新容器生成日志采集配置文件,可以提高日志采集的针对性,避免为不需要进行日志采集的新容器生成日志采集配置文件的冗余操作,提高生成的日志采集配置文件的有效性。
49.图2为本公开实施例提供的另一种日志采集配置文件生成方法的流程图,基于上述技术方案进一步优化与扩展,并可以与上述各个可选实施方式进行结合。如图2所示,该方法可以包括:
50.s201、监测计算设备上是否产生新容器。
51.在本公开实施例中,当监测到计算设备上产生新容器后,还可以进一步检测该新容器对应的文件目录下是否存在日志采集配置文件,如果确认不存在,则为该新容器生成日志采集配置文件,由此针对当前新容器为从故障中恢复的容器时,容器对应的目录下实际上已经存在日志采集配置文件的情况下,可以避免为其重复生成日志采集配置文件的现象。
52.s202、如果监测到计算设备上产生新容器,则从新容器的部署文件中获取待采集日志文件标识、待采集日志文件的存储路径、新容器的日志采集限速时机和日志采集限速类型。
53.s203、将待采集日志文件标识、待采集日志文件的存储路径、新容器的日志采集限速时机和日志采集限速类型,添加至日志采集配置文件模板中,为新容器生成日志采集配置文件。
54.示例性的,可以通过识别新容器的部署文件中各个信息的字段,获取所需的信息,然后,通过识别日志采集配置文件模板中的信息字段,按照字段匹配关系,将获取的信息添加至日志采集配置文件模板中,从而生成日志采集配置文件。
55.需要说明的是,本公开实施例可以根据日志采集需求,灵活确定从部署文件中获取的信息,不应当将图2中的示例理解为对本公开实施例的具体限定。示例性的,基于日志采集配置文件模板和新容器的部署文件,为新容器生成日志采集配置文件,可以包括:从新容器的部署文件中获取待采集日志文件标识和待采集日志文件的存储路径;将待采集日志文件标识和待采集日志文件的存储路径,添加至日志采集配置文件模板中,为新容器生成日志采集配置文件。
56.根据本公开实施例的技术方案,通过获取待采集日志文件标识和待采集日志文件的存储路径,可以在日志采集阶段准确地采集与新容器相关的需求日志;通过获取日志采集限速时机和日志采集限速类型,可以有效地控制日志采集过程中的数据传输量,减少对计算设备上带宽资源的占用,对日志采集进行有效的限制,并使得计算设备上的资源消耗
相对可控。
57.可选的,在监测计算设备上是否产生新容器之前,本公开实施例提供的日志采集配置文件生成方法还包括:清除针对计算设备上是否产生新容器的历史监测事件。在本公开实施例中,可以对计算设备上是否产生新容器进行实时或者周期性监测,在执行当前监测事件之前,可以首先清除历史监测事件,该历史监测事件可以是指以当前时间作为时间终点的预设时间内的容器监测事件;然后再执行当前的容器监测事件。通过清除历史监测事件,可以防止重复监听过时的容器生成事件,提高容器监测的有效性,减少对计算设备的资源消耗。
58.示例性的,以下以利用log-pilot容器监控组件对新容器的产生进行监测并为新容器生成日志采集配置文件,以利用filebeat(一种轻量型数据采集器)日志采集组件进行日志采集为例,对容器监控组件的实现流程进行示例性说明,此时日志采集配置文件可以是指filebeat配置文件:
59.1)执行系统启动脚本:配置环境变量、清除文件挂载点,创建初始的filebeat配置文件并指定filebeat.tpl文件作为其他配置的模版,最后启动log-pilot二进制;
60.2)main函数内执行pilot.run,从而执行pilot.watch:
61.2.1首先清除/prospectors.d下遗留的配置文件;
62.2.2启动filebeat进程;
63.2.3调用dockerclient.events()得到获取容器事件的err channel和msg channel;
64.2.4启动goroutine执行for循环,开始监听事件;
65.2.5执行processallcontainers(),这个函数功能是在log-pilot启动时,对于每一个已存在的容器,创建其对应的配置并下发给filebeat:
66.2.5.1调用dockerclient获取所有container列表,对于每一个container id检测配置目录下是否已存在这个id,没有则创建;
67.2.5.2调用newcontainer创建一个新容器的filebeat配置:
68.2.5.2.1首先把新容器自身配置中的环境变量中带有logprefix的变量取出来放到容器的label中,logprefix的具体实现可以预先设置,有这个前缀的label用于标识要被读取的日志文件路径;
69.2.5.2.2调用getlogconfigs查找到每一个匹配logprefix的容器label;
70.2.5.2.3对于每一个符合要求的容器label,调用parseconfig,先检测label的key部分,如果携带了tag、target等额外标记下;然后确定value部分,如果是stdout,则读取dockerclient的logpath,创建相应的文件配置;最后处理容器内的输出文件,调用hostdirof在这个容器的挂载点中查询label配置的这个输出文件的文件路径,并创建配置返回;
71.2.5.2.4获得容器的各个日志路径的配置后,调用render()函数生成这个容器的filebeat配置文件,并写入对应的目录下,最后执行reload重加载filebeat;
72.2.5.3执行processsymlink()把已经不存在的容器的软链接删掉;
73.2.6等待在stopchan上,收到停止命令后函数返回,整个程序退出。
74.程序退出时可以不做任何文件清理操作,为各个容器生成的日志采集配置文件可
以只在程序启动时进行一次清理,减少存储冗余或无效的配置文件。filebeat日志采集组件读取预先生成的filebeat配置文件,执行日志采集操作。此外,包括log-pilot在内的容器监控组件的功能并不限于监测新容器的产生以及为新容器生成日志采集配置文件,还可以在日志采集阶段执行其他的监测功能,例如监测新容器产生的日志数据量是否超过日志存储阈值,或者监测新容器的运行状态是否由正常运行状态切换为异常运行状态等,本公开实施例对此不作具体限定。
75.图3为本公开实施例提供的一种日志采集方法的流程图,本公开实施例可以适用于如何便捷采集计算设备上部署的容器在运行过程中产生的日志的情况。该日志采集方法可以由日志采集装置来执行,该装置可以采用软件和/硬件实现,并可集成在任意的计算设备上,并且,该装置可以采用日志采集组件的形式实现,例如filebeat(一种轻量型数据采集器)日志采集组件等。计算设备可以是边缘计算系统中的计算节点。
76.本公开实施例提供的日志采集方法,基于利用本公开实施例提供的日志采集配置文件生成方法生成的日志采集配置文件实现,即本公开实施例中日志采集方法与日志采集配置文件生成方法配合执行,以下实施例中未详细解释的内容可以参考上述实施例中的描述。
77.如图3所示,本公开实施例提供的日志采集方法可以包括:
78.s301、获取计算设备上新容器的日志采集配置文件。
79.通过监测计算设备上是否产生新容器,并为新容器生成日志采集配置文件后,在日志采集阶段,可以按照容器与日志采集配置文件之间的对应关系,获取当前新容器的日志采集配置文件。示例性的,可以基于新容器的容器id,获取与容器id对应的日志采集配置文件,容器id可以用于唯一性标识每个容器,可以确保日志采集配置文件的获取准确性,进而保证日志采集的成功实现。
80.s302、基于日志采集配置文件,采集新容器运行过程中产生的日志。
81.获取日志采集配置文件之后,可以通过解析与识别该文件中包括的信息,例如包括但不限于待采集日志文件标识、待采集日志文件的存储路径、日志采集限速时机和日志采集限速类型等,并依据这些信息,采集新容器运行过程中产生的日志。采集得到的日志可以用于日志分析,从而帮助用户掌控各个容器的运行性能以及协助分析业务运行状态等。
82.根据本公开实例的技术方案,通过预先为新容器自动化产生日志采集配置文件,直接用于日志采集阶段,省去了手动添加针对新容器的日志采集操作,解决了现有方案中日志采集效率较低的问题,提高了日志采集的效率。
83.在上述技术方案的基础上,可选的,在新容器运行过程中,本公开实施例提供的日志采集方法还包括:
84.监测新容器产生的日志数据量是否超过日志存储阈值,或者监测新容器的运行状态是否由正常运行状态切换为异常运行状态;
85.如果是,则基于文件引用技术,在调用计算设备操作系统函数清除新容器产生的日志的过程中,将新容器产生的日志,发送至目标日志接收方。
86.其中,日志存储阈值(sizelimit)是基于容器的正常运行状态,预先在计算设备上为每个容器设置的日志存储空间的上限,具体取值可以根据需求而定。通过设置日志存储阈值,可以防止容器运行过程中无限制输出日志数据。如果新容器产生的日志数据量超过
日志存储阈值,意味着该新容器的日志产出大于日志采集阶段的日志采集量,多余产出的日志数据将无法被采集和处理,这不属于正常的容器运行状态,因此,为减少对计算设备上计算资源的耗费以及有效管理容器状态,需要将该新容器从计算设备上移除(指容器销毁),同时清理掉该新容器运行过程中产生的日志。同理,如果直接监测到新容器的运行状态由正常运行状态切换为异常运行状态,例如容器故障或网络连接异常等,也需要将该新容器从计算设备上移除,同时清理掉该新容器运行过程中产生的日志。
87.在本公开实施例中,日志采集过程中采集的日志文件与计算设备操作系统读取的日志文件为同一文件,基于文件引用技术(具有实现原理可以参考现有实现原理),即使计算设备操作系统层面执行了清除日志的操作,由于文件引用关系的存在,日志并没有被真正删除,因此,在日志采集阶段,依然可以成功地将新容器的日志完全发送至目标日志接收方,保证针对任意容器的日志采集的完整性。其中,目标日志接收方可以根据业务逻辑来确定,例如可以是日志搜索服务器、日志分析工具、消息中间件(或称为消息队列)或者数据库等。
88.当日志被完全发送至目标日志接收方之后,即文件引用关系被释放,可以再次执行日志的彻底删除操作,释放对计算设备的存储空间的占用。
89.并且,通过利用文件引用技术,即使容器发生故障,容器正常运行过程中产生的日志并不会被真正删除,当容器从故障中恢复后,可以继续生成日志,日志采集操作也可以不间断的持续执行,保证任意容器运行过程中产生的日志均可以被完全采集。需要说明的是,在本公开实施例中,针对日志采集阶段中的任意时刻,均可以利用文件引用技术,采集容器运行过程中产生的日志。
90.图4为本公开实施例提供的另一种日志采集方法的流程图,基于上述技术方案进一步优化与扩展,并可以与上述各个可选实施方式进行结合。如图4所示,该方法可以包括:
91.s401、获取计算设备上新容器的日志采集配置文件。
92.s402、读取日志采集配置文件中的待采集日志文件标识、待采集日志文件的存储路径、日志采集限速时机和日志采集限速类型。
93.s403、依据待采集日志文件的存储路径,并按照日志采集限速时机以及与日志采集限速类型对应的采集速度,采集新容器运行过程中产生的与待采集日志文件标识对应的日志。
94.其中,日志采集配置文件中包括的信息与日志采集配置文件模板中包括的信息有关,日志采集配置文件模板中包括的信息与日志采集需求有关。图4作为一种示例,示出了在日志采集阶段可以从日志采集配置文件中同时读取待采集日志文件标识、待采集日志文件的存储路径、日志采集限速时机和日志采集限速类型等信息,应当理解,在日志采集过程中,也可以从日志采集配置文件中读取待采集日志文件标识和待采集日志文件的存储路径,然后用于日志采集阶段中。
95.根据本公开实施例的技术方案,通过获取待采集日志文件标识和待采集日志文件的存储路径,可以在日志采集阶段准确地采集与新容器相关的需求日志;通过获取日志采集限速时机和日志采集限速类型,可以有效地控制日志采集过程中的数据传输量,减少对计算设备上带宽资源的占用,对日志采集进行有效的限制,并使得计算设备上的资源消耗相对可控。
96.进一步的,在本公开实施例中,日志采集限速时机包括:依据待采集日志文件的存储路径读取待采集日志的过程中。具体而言,日志采集阶段包括读取(read)待采集的日志和收集(harvest)日志两个子阶段,在读取日志过程中进行日志采集限速,一方面使得限速操作实现较为简单、便捷,另一方面,限速操作执行时机越早限速效果越有效。
97.可选的,按照日志采集限速时机以及与日志采集限速类型对应的采集速度,采集新容器运行过程中产生的日志,包括:
98.在执行数据采集线程中的读函数过程中,调用预先设置的限速采集函数;其中,限速采集函数中定义了日志采集限速类型以及与日志采集限速类型对应的采集速度,限速采集函数可以基于令牌桶算法实现;采集速度(rate_limit)可以以秒为单位,例如设置为1m/s;
99.按照限速采集函数中定义的采集速度,读取与待采集日志文件的存储路径对应的新容器产生的日志。
100.以用于采集日志的filebeat日志采集器为例,数据采集线程可以是指harvester线程,读函数可以是指reader函数。日志采集限速类型包括日志采集过程中按行限速采集或者按字节限速采集等,以令牌桶算法为例,按字节限速采集日志时,一个令牌(token)可以代表一个字节;按行限速采集日志时,一个令牌可以代表日志文件中的一行;在日志采集过程中,当令牌不足时,可以通过等待(wait)函数调用time.sleep阻塞当前的日志采集线程(goroutine),直到存在足够多的令牌,从而继续执行日志采集操作。关于限速位置的设置,示例性的,可以采用以下方式实现:
101.1)在harvester结构中中增加一个ratelimit.bucket指针;
102.2)在newharvester中根据配置创建bucket;
103.3)在harvester.run的h.reader.next后增加bucket.wait调用。
104.在上述技术方案的基础上,可选的,在基于日志采集配置文件,采集新容器运行过程中产生的日志之后,本公开实施例提供的日志采集方法还包括:
105.对采集的日志进行加密;其中,日志加密可以采用任意可用的加密算法实现;
106.基于当前计算设备与目标日志接收方之间的网络传输状态,将加密的日志按照预设次数(取值可以灵活设置)发送至目标日志接收方。
107.通常,日志采集完成后,在被发送至目标日志接收方的过程中采用公网进行数据传输,为了确保日志数据的安全性,可以对日志数据进行加密,然后再进行分发。在日志分发过程中,可以通过当前计算设备与目标日志接收方之间进行心跳数据包的传输等方式,确定当前计算设备与目标日志接收方之间的网络传输状态,例如网络传输质量稳定或者不稳定等;然后基于确定的网络传输状态,将加密的日志向目标日志接收方至少发送一次,即基于重试机制确保日志数据的成功传输。
108.以目标日志接收方为卡夫卡(kafka)消息中间件为例,通过filebeat日志采集器兼容kafka的sasl协议,实现日志加密和安全传输。并且,在日志分发过程中,可以启用filebeat日志采集器的缓存功能,当其与kafka发生链接故障时,日志数据可以暂时缓存在采集器内,在链接故障恢复后,重新发送给kafka。
109.图5为本公开实施例提供的一种日志采集与分发的流程示意图,具体以filebeat日志采集器为例。如图5所示,filebeat日志采集器可以按照待采集日志文件的存储路径从
计算设备上采集容器运行过程中产生的日志,将日志进行缓存,例如存储在splooer中,然后根据日志分析需求,将消息队列中的日志分发至目标日志接收方,例如可以是日志搜索服务器(如elasticsearch等)、日志分析工具(如logstash等)、消息中间件(如kafka等)或者数据库(如redis等)。
110.进一步的,结合图5,以下对filebeat日志采集器的主要实现流程进行示例性说明,不应理解为对本公开实施例的具体限定:
111.1)harvester:每一种input中的一种输入源(如一个日志文件),会由一个harvester管理用于收集数据;
112.2)run方法启动harvester,按行读取文件,并将读到的数据以事件的形式发送给指定输出源;
113.3)reader.reader接口负责执行实际的读文件操作;
114.4)crawler:持有所有input的指针,负责启动所有input,并收集数据发送到libbeat的publisher;
115.5)module:常见应用程序的日志可以使用模块进行预定义,简化使用;
116.6)registrar:在一段数据发送完毕后记录该数据源的读取状态;
117.7)input:每一种input对应一个配置内input项,对应一种特定输入源,例如日志文件、容器标准输出等,但一个input可能对应多个输入源,例如多个日志文件等,自身有一个registry管理所有harvester。
118.关于input、crawler、harvester、reader之间的联动实现如下:
119.1)filebeat.run入口函数进入后,创建新的crawler,调用crawler.start;
120.2)函数内部执行一个for循环,对于每一个配置中的input,执行startinput(),内部创建新的input.runner对象,执行其start方法;
121.3)函数内部执行runner.run方法:
122.3.1先执行一次runner.input.run函数;
123.3.2如果配置了p.once则函数返回;
124.3.3否则执行for循环,同时等待done channel和scanfrequency超时channel消息,如果done消息则退出,如果超时消息则继续调用p.input.run执行;
125.4)runner.input.run函数的log包实现:
126.4.1执行p.scan:对于这个input负责的每一个文件路径path,查看这个文件是否已存在一个曾经遗留的文件状态记录;
127.4.1.1如果没有,执行startharvester:创建harvester对象,调用setup创建reader,打开文件;然后调用sendstateupdate在自身state中更新状态,然后发送给registrar;最后执行registry.start,把新创建的harvester对象放到registry的map中记录,然后创建goroutine,内部调用harvester.run,开始执行这个harvester的循环;
128.4.1.2否则,执行harvestexistingfile:
129.4.1.2.1如果发现这个文件虽然存在旧的状态,但是已经是finished,这个harvester已经停止销毁,则调用startharvester创建新的harvester;
130.4.1.2.2检测新发现的这个文件是不是一个旧文件并被重命名,如果是,则直接更新文件记录即可,不用创建新的harvester;
131.4.1.2.3如果state.finished不是true,则说明harvester还在执行,无需执行任何操作;
132.5)log.harvester.run函数实现:for循环调用reader.next读取下一行数据,返回一个message。
133.图6为本公开实施例提供的一种日志采集配置文件生成装置的结构示意图,本公开实施例可以适用于如何便捷采集计算设备上部署的容器在运行过程中产生的日志的情况。该日志采集配置文件生成装置可以采用软件和/硬件实现,并可集成在任意的计算设备上。
134.如图6所示,本公开实施例提供的日志采集配置文件生成装置包括新容器监测模块601和配置文件生成模块602,其中:
135.新容器监测模块601,用于监测计算设备上是否产生新容器;
136.配置文件生成模块602,用于如果监测到计算设备上产生新容器,则基于日志采集配置文件模板和新容器的部署文件,为新容器生成日志采集配置文件;
137.其中,日志采集配置文件用于采集新容器运行过程中产生的日志。
138.可选的,配置文件生成模块602包括:
139.日志采集标签确定单元,用于如果监测到计算设备上产生新容器,则确定新容器的部署文件中是否存在日志采集标签;
140.配置文件生成单元,用于如果确定新容器的部署文件中存在日志采集标签,则基于日志采集配置文件模板和新容器的部署文件,为新容器生成日志采集配置文件。
141.可选的,配置文件生成模块602包括:
142.第一获取单元,用于如果监测到计算设备上产生新容器,则从新容器的部署文件中获取待采集日志文件标识和待采集日志文件的存储路径;
143.配置文件生成单元,用于将待采集日志文件标识和待采集日志文件的存储路径,添加至日志采集配置文件模板中,为新容器生成日志采集配置文件。
144.可选的,配置文件生成模块602还包括:
145.第二获取单元,用于从新容器的部署文件中获取新容器的日志采集限速时机和日志采集限速类型,以参与生成新容器的日志采集配置文件。
146.可选的,本公开实施例提供的日志采集配置文件生成装置还包括:
147.事件清除模块,用于在新容器监测模块601执行监测计算设备上是否产生新容器的操作之前,清除针对计算设备上是否产生新容器的历史监测事件。
148.本公开实施例所提供的日志采集配置文件生成装置可执行本公开实施例所提供的任意日志采集配置文件生成方法,具备执行方法相应的功能模块和有益效果。本公开装置实施例中未详尽描述的内容可以参考本公开任意方法实施例中的描述。
149.图7为本公开实施例提供的一种日志采集装置的结构示意图,本公开实施例可以适用于如何便捷采集计算设备上部署的容器在运行过程中产生的日志的情况。该日志采集装置可以采用软件和/硬件实现,并可集成在任意的计算设备上。
150.本公开实施例提供的日志采集装置基于日志采集配置文件实现,该日志采集配置文件利用本公开实施例提供的任意日志采集配置文件生成方法得到。关于日志采集配置文件生成方法的具体解释,可以参考上述实施例中的描述。
151.如图7所示,本公开实施例提供的日志采集装置可以包括配置文件获取模块701和日志采集模块702,其中:
152.配置文件获取模块701,用于获取计算设备上新容器的日志采集配置文件;
153.日志采集模块702,用于基于日志采集配置文件,采集新容器运行过程中产生的日志。
154.可选的,日志采集模块702包括:
155.第一读取单元,用于读取日志采集配置文件中的待采集日志文件标识和待采集日志文件的存储路径;
156.日志采集单元,用于依据待采集日志文件的存储路径,采集新容器运行过程中产生的与待采集日志文件标识对应的日志。
157.可选的,日志采集模块702还包括:
158.第二读取单元,用于读取日志采集配置文件中的日志采集限速时机和日志采集限速类型;
159.日志采集单元,用于按照日志采集限速时机以及与日志采集限速类型对应的采集速度,采集新容器运行过程中产生的日志。
160.可选的,日志采集限速时机包括:依据待采集日志文件的存储路径读取待采集日志的过程中。
161.可选的,日志采集单元包括:
162.函数调用子单元,用于在执行数据采集线程中的读函数过程中,调用预先设置的限速采集函数;其中,限速采集函数中定义了日志采集限速类型以及与日志采集限速类型对应的采集速度;
163.日志读取子单元,用于按照限速采集函数中定义的采集速度,读取与待采集日志文件的存储路径对应的新容器产生的日志。
164.可选的,本公开实施例提供的日志采集装置还可以包括:
165.数据量或运行状态监测模块,用于在新容器运行过程中,监测新容器产生的日志数据量是否超过日志存储阈值,或者监测新容器的运行状态是否由正常运行状态切换为异常运行状态;
166.日志发送模块,用于如果是,则基于文件引用技术,在调用计算设备操作系统函数清除新容器产生的日志的过程中,将新容器产生的日志,发送至目标日志接收方。
167.可选的,本公开实施例提供的日志采集装置还可以包括:
168.日志加密模块,用于在日志采集模块702执行基于日志采集配置文件,采集新容器运行过程中产生的日志的操作之后,对采集的日志进行加密;
169.加密日志发送模块,用于基于当前计算设备与目标日志接收方之间的网络传输状态,将加密的日志按照预设次数发送至目标日志接收方。
170.本公开实施例所提供的日志采集装置可执行本公开实施例所提供的任意日志采集方法,具备执行方法相应的功能模块和有益效果。本公开装置实施例中未详尽描述的内容可以参考本公开任意方法实施例中的描述。
171.图8为本公开实施例提供的一种计算设备的结构示意图。如图8所示,计算设备800包括一个或多个处理器801和存储器802。
172.处理器801可以是中央处理单元(cpu)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制计算设备800中的其他组件以执行期望的功能。
173.存储器802可以包括一个或多个计算机程序产品,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(rom)、硬盘、闪存等。在计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器801可以运行程序指令,以实现本公开实施例提供的任意日志采集配置文件生成方法或者日志采集方法,还可以实现其他期望的功能。在计算机可读存储介质中还可以存储诸如输入信号、信号分量、噪声分量等各种内容。
174.在一个示例中,计算设备800还可以包括:输入装置803和输出装置804,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。
175.此外,该输入装置803还可以包括例如键盘、鼠标等等。
176.该输出装置804可以向外部输出各种信息,包括确定出的距离信息、方向信息等。该输出装置804可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
177.当然,为了简化,图8中仅示出了该计算设备800中与本公开有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,计算设备800还可以包括任何其他适当的组件。
178.除了上述方法和设备以外,本公开的实施例还可以是计算机程序产品,其包括计算机程序指令,计算机程序指令在被处理器运行时使得处理器执行本公开实施例所提供的任意日志采集配置文件生成方法或者日志采集方法。
179.计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,程序设计语言包括面向对象的程序设计语言,诸如java、c++等,还包括常规的过程式程序设计语言,诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
180.此外,本公开的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,计算机程序指令在被处理器运行时使得处理器执行本公开实施例所提供的任意日志采集配置文件生成方法或者日志采集方法。
181.计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
182.需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在
涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
183.以上仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1