掌桥专利:专业的专利平台
掌桥专利
首页

一种日志采集方法、装置、介质

文献发布时间:2023-06-19 13:29:16


一种日志采集方法、装置、介质

技术领域

本申请涉及云计算领域,特别是涉及一种日志采集方法、装置、介质。

背景技术

随着云计算技术的发展,虚拟机技术获得了广泛应用。为了保护虚拟机的安全,防止数据泄露,虚拟机云管平台访问虚拟机数据时需要经过多层安全审查,因此当用户在虚拟机中运行的业务程序出现错误时,无法通过云管平台直接操作,而是需要进入虚拟机逐个查看日志文件确定。

现有的方案为通过网卡在虚拟机和宿主机间建立通信从而获取日志文件,使用户可以在宿主机端查看虚拟机的日志文件。当宿主机运行多台虚拟机时,需要为每台宿主机添加一个网卡,这些网卡归属于同一个网络,会将不同虚拟机连通,降低虚拟机的安全性;同时,由于网络规模是有限制的,当虚拟机数量过多时,会出现部分虚拟机无法加入网络的情况,影响日志文件的采集。

由此可见,如何提供一种安全性高且能够采集更多虚拟机的日志文件的方法,是本领域技术人员亟需解决的问题。

发明内容

本申请的目的是提供一种日志采集方法、装置、介质,以提高日志采集过程的安全性且能够同时采集更多虚拟机的日志文件。

为解决上述技术问题,本申请提供一种日志采集方法,应用于虚拟机,包括:

采集日志文件;

将所述日志文件封装为数据包;

将所述数据包通过与宿主机预先创建的虚拟串口发送至宿主机,以保存至所述宿主机。

优选的,所述将所述日志文件封装为数据包,包括:

获取所述日志文件的生成日期;

将所述日志文件、所述生成日期和自身的虚拟机名称封装入数据包中。

优选的,所述将所述数据包通过虚拟串口发送至宿主机,包括:

创建缓存队列;

按照所述日志文件的生成时间的先后顺序将所述数据包存入所述缓存队列中;

将所述缓存队列中的所述数据包通过所述虚拟串口发送至所述宿主机。

优选的,所述采集日志文件的步骤前,还包括:

获取路径配置文件;

相应的,所述采集日志文件包括:

根据所述路径配置文件中的路径采集对应的所述日志文件。

为解决上述技术问题,本申请还提供一种日志采集方法,应用于宿主机,包括:

获取虚拟机通过虚拟串口发送的包含日志文件的数据包;

对所述数据包进行解析,以获取所述日志文件;

保存所述日志文件。

优选的,所述数据包包括:

所述日志文件、所述日志文件的生成日期和生成所述日志文件的所述虚拟机的名称;

相应的,所述保存所述日志文件包括:

根据宿主机所连接的所述虚拟机的名称创建文件夹;

确定生成所述日志文件的所述虚拟机的名称;

按照名称将所述日志文件保存至对应的所述文件夹。

优选的,在所述根据与宿主机连接的所述虚拟机的名称创建文件夹的步骤后,还包括:

根据所述文件夹生成目录结构;

通过图形化界面展示所述目录结构,以将所述日志文件展示给用户。

为解决上述技术问题,本申请还提供一种日志采集装置,包括:

采集模块:用于采集日志文件;

封装模块:用于将所述日志文件封装为数据包;

发送模块:用于将所述数据包通过与宿主机预先创建的虚拟串口发送至宿主机,以保存至所述宿主机。

为解决上述技术问题,本申请还提供另一种日志采集装置,包括存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如权利要求所述的日志采集方法的步骤。

为解决上述技术问题,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求所述的日志采集方法的步骤。

本申请所提供的日志采集方法,应用于虚拟机,包括:虚拟机采集本地日志文件后,将采集到的日志文件封装为数据包,并将数据包通过虚拟串口发送至宿主机端,以便于将日志文件保存至宿主机。由于每个虚拟机与宿主机通过虚拟串口单独连接,可以提高虚拟机的安全性。同时,由于虚拟串口的数量无限,使宿主机可以采集尽量多的虚拟机的日志文件,提高了工作效率。

附图说明

为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的一种日志采集方法的应用场景的示意图;

图2为本申请实施例所提供的一种日志采集方法的流程图;

图3为本申请实施例所提供的一种日志采集装置的结构图;

图4为本申请实施例所提供的另一种日志采集装置的结构图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本申请保护范围。

本申请的核心是提供一种日志采集方法、装置、介质。

为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。

在虚拟机应用场景中,云管平台管理着大量的虚拟机,为了保证虚拟机的安全性,每台虚拟机之间相互隔离。云管平台只能控制虚拟机所占用的计算资源和存储资源,无法管理虚拟机运行的业务,当虚拟机运行时出现故障时,用户需要查看虚拟机的问题日志以确定问题。图1为本实施例提供的一种日志采集方法的应用场景的示意图,如图1所示,在虚拟机运行时,虚拟机的日志采集模块采集当前虚拟机的日志,日志传输装置将日志文件通过虚拟串口发送至宿主机,以便于用户在宿主机处查看虚拟机的日志文件。可以理解的是,本申请中提到的宿主机可以为电脑、服务器等具有计算能力的终端设备,每台宿主机中可以运行多台虚拟机,多台宿主机共同构成虚拟机系统。这些虚拟机之间相互隔离,且均在云管平台的控制下工作。

图2为本申请实施例提供的一种日志采集方法的结构图,如图2所示,该日志采集方法应用于虚拟机,包括:

S10:采集日志文件。

在具体实施中,虚拟机运行软件时生成的日志文件会保存在相应的文件夹中,采集日志文件的过程可以为:每隔预设时间周期复制日志文件;或通过虚拟机后台的进程监控日志文件的变化,当日志文件的内容增加时,采集日志文件增加的内容;也可以实时监控日志文件的变化,当日志文件发生变化时,获取日志文件的复制文件,以实现日志文件的采集。需要注意的是,除自动采集外,用户还可以通过操作指令控制虚拟机立即获取日志文件,以便于实时查看虚拟机中业务的运行状态。

需要注意的是,为了提高采集日志文件的效率,可以设置路径配置文件,根据路径配置文件中的采集相应的日志文件。

可以理解的是,日志文件为用于记录系统操作事件的记录文件或文件集合,可分为事件日志和消息日志。日志文件能够为处理历史数据、诊断问题的追踪以及理解系统的活动等工作提供信息。这些信息可以被写入单个日志文件,也可写入多个文件中。本申请的采集对象可以是多种形式的,可以是虚拟机的业务服务过程的日志文件,即虚拟机在为用户提供计算业务服务的过程中,记录有关具体进行计算、处理和存储等业务过程的日志文件;也可以是用户所需求的其他任意类型的数据,例如虚拟机的某个具体服务状态等。本申请中的采集对象也不排除应用部署在除云管平台之外的情形,例如,也可以是单台宿主机上的日志文件。在本实施例中,为了简化描述,采集对象对应的是具体的日志文件,即每一个采集对象就是加入采集对象列表中的一个日志文件,采集日志文件时,可以采集完整的日志文件,也可以只采集日志文件中新增加的内容;在将日志文件作为采集对象即为确认这个日志文件为待采集状态,并不对日志文件本身做任何改变或者标记,只是将日志文件划入待采集的类别。在具体实施时,可以设置文件名称通配符,以便于将满足这个名称通配符的日志文件作为采集对象。

S11:将日志文件封装为数据包。

在具体实施中,需要通过虚拟串口将日志文件从虚拟机发送至宿主机。为了将日志文件可靠和准确地发送到目的地,并且高效地利用传输资源(传输设备和传输线路),事先要将日志信息封装为数据包。

常用的串口封装协议有:高级链路控制协议(High-level Data Link Control,HDLC)和点对点协议(Point to point,ppp)和帧中继协议(frame-relay,FR)。在OSI7层网络参考模型中,模型的每层主要负责与其它机器上的对等层进行通信。进行数据封装时,将带封装的数据封装在一组协议头和尾中,该过程是在“协议数据单元”中实现的,其中模型的每层由本层的协议头、协议尾和数据封装构成。

为了保证传输的准确性,使宿主机能够将日志文件存储到正确的位置,需要在所发送的数据包上附加上虚拟机名称,日志文件的生成时间以及一些用于纠错的字节,为了提高数据发送过程的安全性和可靠性,还可以对数据包进行加密处理。

S12:将数据包通过与宿主机预先创建的虚拟虚拟串口发送至宿主机,以保存至宿主机。

可以理解的是,虚拟机是运行在宿主机上的程序,虚拟机是无实体的,因此虚拟机好宿主机间不存在实体虚拟串口。为将数据包通过虚拟串口发送至宿主机,需要在宿主机与虚拟机之间创建虚拟串口,当宿主机计算资源充足时,每台宿主机可以创建的虚拟串口数量是无限的。

在具体实施中,由于每台虚拟机上的日志文件较多,数据量较大,在发送日志文件的过程中可能会出现拥堵,导致数据丢失或损坏,为了避免这一情况,可以采用传输模块进行缓存,将日志文件先保存,再按顺序通过虚拟串口发送至宿主机。

可以理解的是,由于虚拟机上会同时运行多项业务,可能会产生大量日志文件,在用户只需要查看某一特定程序的日志文件时,若宿主机全部采集这些日志文件会造成计算资源的浪费。在具体实施中,可以先获取路径配置文件,根据路径配置文件中的路径采集对应的日志文件。

本实施例提供了一种日志采集方法,应用于虚拟机,包括:虚拟机采集本地日志文件后,将采集到的日志文件封装为数据包,并将数据包通过虚拟串口发送至宿主机端,以便于将日志文件保存至宿主机。由于每个虚拟机与宿主机通过虚拟串口单独连接,可以提高虚拟机的安全性。同时,由于虚拟串口的数量无限,使宿主机可以采集尽量多的虚拟机的日志文件,提高了工作效率。

可以理解的是,每台宿主机上同时运行多台虚拟机,当采集虚拟机的日志文件时,会收集到大量数据,可能造成数据混乱。

在上述实施例的基础上,将日志文件封装为数据包,包括:

获取日志文件的生成日期;

将日志文件、生成日期和自身的虚拟机名称封装入数据包中。

可以理解的是,在宿主机上运行时,每台虚拟机的名称是唯一的,因此,将虚拟机名称和生成日期封装入数据包后发送至宿主机,可以保证不会因为数据混乱导致日志文件无法使用。需要注意的是,在将生成日期写入日志文件时,需要对虚拟机的时间进行校准,以免由于虚拟机异常导致时间出现错误。

需要注意的是,封装入数据包中的日志文件可以为完整的日志文件,也可以为每个日志文件新增的内容,在此不做限定。为了减少待采集的数据量,通常采用第二种方式。在具体实施中,首先确定作为采集对象的日志文件的数据更新结束位置以及日志文件中上一次采集结束的位置;如果数据更新结束位置超过上一次采集结束位置,则表明存在尚未采集的日志数据,系统对超过上一次采集结束位置的尚未采集的数据进行采集。例如,在本实施例中,当前待采集的日志文件的大小为1000KB,首先确认其数据更新结束位置为文件的末尾即1000KB处,而最近一次完成采集日志数据时数据更新的结束位置为500KB处,比较后发现日志文件的数据更新结束位置超过上一次采集结束位置,则表明有500KB的日志数据尚未采集,可以从上一次采集结束位置起,对新增加的500KB日志数据进行采集。

在本实施例中,通过将日志文件、生成日期和自身的虚拟机名称封装入数据包,使宿主机能够将将不同虚拟机发送的不同日志文件分类保存,防止数据混乱。

在具体实施中,由于同一时间虚拟机向宿主机发送的日志文件的数量较多,可能会造成数据拥堵和资源抢占,导致发送失败。为了解决这一问题,可以先将日志文件统一保存在按顺序发送至宿主机。例如:可以将包含日志文件的数据包保存在临时文件中,再依次将临时文件中的数据包通过虚拟串口发送至宿主机;也可以先创建缓存队列,再按照日志文件的生成时间的先后顺序将数据包存入缓存队列中,再将缓存队列中的数据包发送至宿主机。由于缓存队列占用的存储资源较少,本实施例选择第二种方案。

在上述实施例的基础上,将数据包通过虚拟串口发送至宿主机包括:

创建缓存队列;

按照日志文件的生成时间的先后顺序将数据包存入缓存队列中;

将缓存队列中的数据包通过虚拟串口发送至宿主机。

可以理解的是,当数据包的数量超过缓存队列的最大长度时,将最早存入的文本信息删除。由于缓存队列具有先入先出的特点,因此可以将日志文件按生成的时间先后顺序发送至宿主机,以便于宿主机分析和保存。

在本实施例中,通过缓存队列将包含日志文件的数据包通过虚拟串口依次发送至虚拟机,能够防止虚拟串口处数据拥堵导致发送失败的情况出现,提高数据包发送的成功率。

在具体实施中,虚拟机上会同时运行多项业务,会产生大量日志文件,当用户只需要查看某一特定程序的日志文件时,若宿主机全部采集这些日志文件会造成计算资源的浪费。

在上述实施例的基础上,采集日志文件的步骤前,还包括:

获取路径配置文件;

相应的,采集日志文件包括:

根据路径配置文件中的路径采集对应的日志文件。

可以理解的是,不同的虚拟机会运行不同的应用,这些应用的日志文件存储的路径也不相同,根据路径配置文件中的路径采集对应的日志文件可以大大加快日志文件采集的速度,同时还可以采集特定路径的日志文件,提高处理的效率。路径配置文件可以由用户手动配置,也可以由系统自动生成。

需要注意的是,为了防止重复采集,在每次采集日志文件时都需要记录采集位置。例如,在本实施例中,采集对象列表中有一个名称为Sub的文件集合,在采集日志文件的过程中,对这个文件集合进行监控,定期轮询这个文件集合中的日志文件数量。在初始设置时,动态配置组件将这个文件集合加入采集对象列表,并将这个文件集合中的10个日志文件作为采集对象。如果之后动态监控组件在轮询文件集合时发现,名称为Sub的文件集合中有11个日志文件,则将新增加的1个日志文件作为采集对象,并将新增加的1个采集对象加入采集对象列表;如果轮询文件集合时发现,名称为Sub的文件集合中只有9个日志文件,则将对应新删除的日志文件的1个采集对象从采集对象列表中删除。

在本实施例中,在采集日志文件前先获取路径配置文件,根据路径配置文件中的路径采集对应的日志文件,从而提高采集日志文件的效率,以便于用户查看。

在上述实施例的基础上,本申请还提供一种应用于宿主机的日志采集方法,包括:

S20:获取虚拟机通过虚拟串口发送的包含日志文件的数据包;

S21:对数据包进行解析,以获取日志文件;

S22:保存日志文件。

可以理解的是,宿主机通过解析数据包以获取日志文件后,根据从数据包中获取的虚拟机名称创建文件夹,将日志文件保存到生成该日志文件的虚拟机所对应的文件夹中,以便于用户分类查看。

由于应用于虚拟机的日志采集方法和应用于宿主机的日志采集方法相互对应,因此应用于宿主机的日志采集方法部分的实施例请参见应用于虚拟机的日志采集方法部分的实施例的描述,这里暂不赘述。

本实施例提供了一种日志采集方法,应用于宿主机,包括:获取虚拟机通过虚拟串口发送的包含日志文件的数据包;对数据包进行解析,以获取日志文件;保存日志文件。由于每个虚拟机与宿主机通过虚拟串口单独连接,可以提高虚拟机的安全性。同时,由于虚拟串口的数量无限,使宿主机可以采集尽量多的虚拟机的日志文件,提高了工作效率。

为了便于宿主机保存日志文件以供用户查看,宿主机除需要获取日志文件外,还需要获取日志文件的生成时间和生成日志文件的虚拟机的名称,以便于将日志文件保存到相应的文件夹中,防止数据混乱。

在上述实施例的基础上,数据包包括:

日志文件、日志文件的生成日期和生成日志文件的虚拟机的名称;

相应的,保存日志文件包括:

根据宿主机所连接的虚拟机的名称创建文件夹;

确定生成日志文件的虚拟机的名称;

按照名称将日志文件保存至对应的文件夹。

可以理解的是,宿主机获取到的日志文件可以为完整的日志文件,也可以为每个日志文件的增加的内容,在此不做限定。

在本实施例中,日志文件的生成日期和生成日志文件的虚拟机的名称将日志文件保存到相应的文件夹中,以便于用户根据日志文件查看虚拟机运行情况。

将虚拟机通过虚拟串口发送的日志文件保存到宿主机上后,还应该对保存日志文件的文件加进行排序和构建索引;也可以为日志文件生成统一的查找目录,以便于用户查看。

在上述实施例的基础上,在根据与宿主机连接的虚拟机的名称创建文件夹的步骤后,还包括:

根据文件夹生成目录结构;

通过图形化界面展示目录结构,以将日志文件展示给用户。

在本实施例中,通过根据文件夹生成目录结构并通过图形化界面展示目录结构,使日志文件更加清楚直观,方便用于在同一台宿主机中查看多台虚拟机的日志文件,便于用户确定虚拟机中应用的运行情况。

在上述实施例中,对于日志采集方法进行了详细描述,本申请还提供日志采集装置对应的实施例。需要说明的是,本申请从两个角度对装置部分的实施例进行描述,一种是基于功能模块的角度,另一种是基于硬件的角度。

上述描述了日志采集方法对应的实施例,在上述实施例的基础上,本申请还公开了上述方法对应的日志采集装置。

图3为本申请实施例所提供的一种日志采集装置的结构图,如图3所示,一种日志采集装置包括:

采集模块10:用于采集日志文件;

封装模块11:用于将所述日志文件封装为数据包;

发送模块12:用于将所述数据包通过与宿主机预先创建的虚拟虚拟串口发送至宿主机,以保存至所述宿主机。

作为优选的实施方式,该装置还包括:路径配置文件获取模块和目录结构生成模块;路径配置文件获取模块用于根据路径配置文件中的路径采集对应的日志文件。目录结构生成模块用于根据文件夹生成目标结构,并通过图形化界面展示目录结构,以便于用户查看日志文件。

由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。

本实施例提供了一种日志采集方法,应用于虚拟机,包括:虚拟机采集本地日志文件后,将采集到的日志文件封装为数据包,并将数据包通过虚拟串口发送至宿主机端,以便于将日志文件保存至宿主机。由于每个虚拟机与宿主机通过虚拟串口单独连接,可以提高虚拟机的安全性。同时,由于虚拟串口的数量无限,使宿主机可以采集尽量多的虚拟机的日志文件,提高了工作效率。

图4为本申请另一实施例提供的日志采集装置的结构图,如图4所示,日志采集装置包括:存储器20,用于存储计算机程序;

处理器21,用于执行计算机程序时实现如上述实施例获取日志采集路径的方法的步骤。

本实施例提供的宿主机可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。

其中,处理器21可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。

存储器20可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器20还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器20至少用于存储以下计算机程序201,其中,该计算机程序被处理器21加载并执行之后,能够实现前述任一实施例公开的日志采集方法的相关步骤。另外,存储器20所存储的资源还可以包括操作系统202和数据203等,存储方式可以是短暂存储或者永久存储。其中,操作系统202可以包括Windows、Unix、Linux等。数据203可以包括但不限于日志文件的生成日期等。

在一些实施例中,日志采集装置还可包括有显示屏22、输入输出接口23、通信接口24、电源25以及通信总线26。

本领域技术人员可以理解,图4中示出的结构并不构成对日志采集装置的限定,可以包括比图示更多或更少的组件。

本申请实施例提供的日志采集装置,包括存储器和处理器,处理器在执行存储器存储的程序时,能够实现上述的日志采集装置方法。

最后,本申请还提供一种计算机可读存储介质对应的实施例。计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述方法实施例(可以是对应的方法、也可以是宿主机侧对应的方法,还可以是虚拟机侧和宿主机侧对应的方法)中记载的步骤。

可以理解的是,如果上述实施例中的方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

以上对本申请所提供的日志采集方法、装置、介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

相关技术
  • 一种日志采集方法、装置、电子设备及存储介质
  • 一种系统监控日志的采集方法、装置、电子设备及介质
技术分类

06120113693942