CN117056387A - 容器日志查询方法、相关设备及存储介质 - Google Patents
容器日志查询方法、相关设备及存储介质 Download PDFInfo
- Publication number
- CN117056387A CN117056387A CN202311083647.0A CN202311083647A CN117056387A CN 117056387 A CN117056387 A CN 117056387A CN 202311083647 A CN202311083647 A CN 202311083647A CN 117056387 A CN117056387 A CN 117056387A
- Authority
- CN
- China
- Prior art keywords
- target
- log
- ebpf
- container
- component
- 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 73
- 238000003860 storage Methods 0.000 title claims abstract description 63
- 230000006870 function Effects 0.000 claims description 41
- 238000012545 processing Methods 0.000 claims description 38
- 238000012795 verification Methods 0.000 claims description 28
- 238000004590 computer program Methods 0.000 claims description 11
- 238000005516 engineering process Methods 0.000 description 36
- 238000013473 artificial intelligence Methods 0.000 description 14
- 238000004891 communication Methods 0.000 description 13
- 238000007726 management method Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 230000008878 coupling Effects 0.000 description 6
- 238000010168 coupling process Methods 0.000 description 6
- 238000005859 coupling reaction Methods 0.000 description 6
- 238000001514 detection method Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 239000000872 buffer Substances 0.000 description 4
- 238000011160 research Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 238000000638 solvent extraction Methods 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000005236 sound signal Effects 0.000 description 2
- 238000012800 visualization Methods 0.000 description 2
- 206010000117 Abnormal behaviour Diseases 0.000 description 1
- 244000035744 Hura crepitans Species 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000005484 gravity Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012905 input function Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000010897 surface acoustic wave method Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2457—Query processing with adaptation to user needs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请实施例公开了一种容器日志查询方法、相关设备及存储介质。方法应用于K8s***,K8s***包括集群网关以及多个物理机,各物理机的用户空间中分别部署有服务组件,各物理机的内核空间中分别部署有eBPF组件以及eBPF缓存空间,方法包括:目标物理机获取日志查询请求;目标服务组件确定与该请求对应的日志路径,并将日志路径以及请求中的目标时段信息发送至目标eBPF组件;目标eBPF组件根据日志路径以及目标时段信息获取目标容器日志,并将该日志存至目标eBPF缓存空间中;目标服务组件从目标eBPF缓存空间中获取日志,并通过集群网关将日志发送至前端设备。通过实施本申请实施例的方法可在不浪费存储资源以及不影响集群稳定性的前提下,进行容器日志查询。
Description
技术领域
本申请实施例涉及数据处理技术领域,尤其涉及一种容器日志查询方法、相关设备及存储介质。
背景技术
Kubernetes(简称:K8s)是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理,在K8s集群中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡,在分布式环境下,K8s集群中的应用程序会运行在多个物理机上。
K8s集群容器日志收集对于有效管理、监控和排查问题至关重要,容器日志提供了关于应用程序运行状态、性能和异常行为的关键信息,有助于运维及开发人员了解***及应用的运行情况,及时发现并解决问题,在K8s集群中,默认将日志存储在物理机的本地文件***上,由于K8s集群中的应用程序会运行在多个物理机上,因而手动收集和分析日志非常复杂和低效
为此,现有技术提供了ELK(为搜索服务器Elasticsearch、日志收集框架Logstash以及可视化平台Kibana组合的简称)/EFK(为日志收集框架Elasticsearch、日志收集框架Fluentd以及可视化平台Kibana组合的简称)日志采集方案以及client-go(一个用Golang语言编写的官方编程式交互客户端库)/kubectl logs(K8s命令行工具中的一个工具)日志采集方案实现自动化的容器日志采集;然而,使用ELK/EFK日志采集方案进行容器日志采集,需要提前将各节点中的日志全部备份存储到ELK/EFK专属的存储空间中,再从该存储空间中提取日志进行展示中,故使用ELK/EFK日志采集方案需要大量的磁盘空间来存储日志数据,浪费计算机资源(内存、磁盘等);使用client-go/kubectl logs日志采集方案进行日志容器采集,需要通过K8s apiserver调用集群中的kubelet及CRI这些集群组件获取对应容器的日志数据,然后进行展示,虽然,client-go/kubectl logs日志采集方案所需的资源不多,但是当K8s集群较大,日志查询请求较多、日志量较大时会显著加重K8s apiserver、kubelet及容器运行时接口(Container Runtime Interface,CRI)这些集群组件的负担,影响集群稳定性。
现亟需一种方法,在不浪费存储资源以及不影响集群稳定性的前提下,进行容器日志查询。
发明内容
本申请实施例提供了一种容器日志查询方法、相关设备及存储介质,可以在不浪费存储资源以及不影响集群稳定性的前提下,进行容器日志查询。
第一方面,本申请实施例提供了一种容器日志查询方法,所述方法应用于K8s***,所述K8s***包括集群网关以及多个物理机,多个所述物理机中包括目标物理机,各所述物理机的用户空间中分别部署有服务组件,各所述物理机的内核空间中分别部署有eBPF组件以及eBPF缓存空间,所述方法包括:
所述目标物理机从所述集群网关中接收来自前端设备的日志查询请求,所述日志查询请求中携带有目标容器标识以及目标时段信息;
所述目标物理机中的目标服务组件根据所述目标容器标识以及预设的第一对应关系确定目标容器日志路径,并将所述目标容器日志路径以及所述目标时段信息发送至目标eBPF组件,所述第一对应关系包括容器标识与日志路径的对应关系,所述目标eBPF组件为所述目标物理机中的eBPF组件;
所述目标eBPF组件根据所述目标容器日志路径以及所述目标时段信息从目标日志文件中获取目标容器日志,并将所述目标容器日志存至所述目标物理机中的目标eBPF缓存空间中,所述目标日志文件中存储有所述目标物理机中各容器的容器日志;
所述目标服务组件从所述目标eBPF缓存空间中获取所述目标容器日志,并通过所述集群网关将所述目标容器日志发送至所述前端设备。
第二方面,本申请实施例还提供了一种K8s***,所述K8s***包括集群网关以及多个物理机,多个所述物理机中包括目标物理机,各所述物理机的用户空间中分别部署有服务组件,各所述物理机的内核空间中分别部署有eBPF组件以及eBPF缓存空间,其中:
所述目标物理机,用于从所述集群网关中接收来自前端设备的日志查询请求,所述日志查询请求中携带有目标容器标识以及目标时段信息;
所述目标物理机中的目标服务组件,用于根据所述目标容器标识以及预设的第一对应关系确定目标容器日志路径,并将所述目标容器日志路径以及所述目标时段信息发送至目标eBPF组件,所述第一对应关系包括容器标识与日志路径的对应关系,所述目标eBPF组件为所述目标物理机中的eBPF组件;
所述目标eBPF组件,用于根据所述目标容器日志路径以及所述目标时段信息从目标日志文件中获取目标容器日志,并将所述目标容器日志存至所述目标物理机中的目标eBPF缓存空间中,所述目标日志文件中存储有所述目标物理机中各容器的容器日志;
所述目标服务组件,还用于从所述目标eBPF缓存空间中获取所述目标容器日志,并通过所述集群网关将所述目标容器日志发送至所述前端设备。
在一些实施例中,所述目标物理机在执行所述从所述集群网关中接收来前端设备的日志查询请求步骤时,具体用于:
通过所述集群网关接收所述前端设备发送的所述日志查询请求;通过所述集群网关根据所述目标容器标识以及预设的第二对应关系确定目标物理机标识,所述第二对应关系包括容器标识与物理机标识的对应关系;通过所述集群网关根据所述目标物理机标识将所述日志查询请求发送至所述目标物理机;或,
通过所述集群网关接收所述前端设备发送的所述日志查询请求;通过所述集群网关根据所述日志查询请求中携带的目标物理机标识将所述日志查询请求发送至所述目标物理机。
在一些实施例中,在所述目标物理机中的目标服务组件执行所述根据所述目标容器标识以及预设的第一对应关系确定目标容器日志路径步骤之前:
所述目标服务组件,还用于根据预设的目标解码规则对所述日志查询请求进行解码处理,获取所述目标容器标识以及所述目标时段信息;
此时,在所述目标物理机中的目标服务组件从所述目标eBPF缓存空间中获取所述目标容器日志之后,且所述通过所述集群网关将所述目标容器日志发送至所述前端设备步骤之前:
所述目标服务器组件,还用于根据预设的目标编码规则对所述目标容器日志进行编码操作,得到目标编码日志,并将所述目标编码日志作为所述目标容器日志。
在一些实施例中,所述目标eBPF组件在执行所述根据所述目标容器日志路径以及所述目标时段信息从目标日志文件中获取目标容器日志步骤时,具体用于:
根据所述目标容器日志路径从所述目标日志文件中确定目标容器日志子文件;从所述目标容器日志子文件中获取与所述目标时段信息对应的所述目标容器日志。
在一些实施例中,所述目标eBPF组件挂载在所述目标物理机的内核函数上;在所述目标服务组件执行所述将所述目标容器日志路径以及所述目标时段信息发送至目标eBPF组件步骤之前:
所述目标服务组件,还用于通过调用所述内核函数启动所述目标eBPF组件,以运行所述目标eBPF组件;
所述目标eBPF组件,还用于根据所述目标容器日志路径以及所述目标时段信息从目标日志文件中获取目标容器日志,并将所述目标容器日志存至所述目标物理机中的目标eBPF缓存空间中之后,所述方法还包括:
所述目标服务组件,还用于通过调用所述内核函数关闭所述目标eBPF组件,使得所述目标eBPF组件停止运行。
在一些实施例中,所述目标物理机的内核空间中的部署有目标eBPF验证器以及目标内核虚拟机;在所述目标服务组件执行所述通过调用所述内核函数启动所述目标eBPF组件步骤之前:
所述目标服务组件,还用于将所述用户空间中预设的目标eBPF字节码发送至所述目标eBPF验证器;
所述目标eBPF验证器,还用于对所述目标eBPF字节码进行校验处理,得到校验结果,所述校验处理包括无限循环校验处理、崩溃代码校验处理以及运行时间检验处理;
若所述结果为校验通过,则所述目标eBPF验证器,还用于将所述目标eBPF字节码发送至所述目标内核虚拟机;
所述目标内核虚拟机中的目标eBPF编译器,还用于对所述目标eBPF字节码进行编译处理,得到所述目标eBPF组件,并将所述目标eBPF组件挂载至所述目标物理机的内核函数上。
在一些实施例中,所述目标物理机在执行所述从所述集群网关中接收来前端设备的日志查询请求步骤之前,还用于:
获取go程序包,并根据所述go程序包在用户空间中构建所述目标服务组件。
第三方面,本申请实施例还提供了一种计算机设备,其包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现上述方法。
第四方面,本申请实施例还提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时可实现上述方法。
第五方面,本申请实施例提供了一种芯片,该芯片中包括与终端的收发器耦合,用于执行本申请实施例第一方面提供的技术方案。
第六方面,本申请实施例提供了一种芯片***,该芯片***包括处理器,用于支持终端实现上述第一方面中所涉及的功能,例如,生成或者处理上述第一方面提供的容器日志查询方法中所涉及的信息。在一种可能的设计中,上述芯片***还包括存储器,该存储器用于保存终端必需的程序指令和数据。该芯片***可以由芯片构成,也可以包含芯片和其他分立器件。
第七方面,本申请实施例提供了一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述第一方面提供的容器日志查询方法,也能实现第一方面提供的容器日志查询方法所具备的有益效果。
相较于现有技术,本申请实施例提供的方案中,第一方面,由于本实施例中的物理机的内核空间中部署有eBPF组件以及eBPF缓存空间,通过eBPF组件可以直接获取将与日志查询请求对应的目标容器日志,将目标容器日志存储至目标eBPF缓存空间中,用户空间中的服务组件可以从该目标eBPF缓存空间中获取目标容器日志,并将目标容器日志返回至前端设备,完成前端设备容器日志文件的查询,相对于现有技术中的ELK/EFK日志采集方案,本方案直接通过eBPF组件以及eBPF缓存空间从日志文件中获取所需的日志,不需额外的磁盘空间对容器日志进行备份,故通过本方案进行容器日志的查询可以节约存储资源;第二方面,由于本方案可以直接通过部署在内核中的eBPF组件、eBPF缓存空间以及部署在用户空间中的服务组件实现容器日志的查询,不需要调用集群组件,故通过本方案进行日志查询不会加重集群组件的负担,从而避免由于调用集群组件进行日志查询导致的集群不稳定的情况发生。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的容器日志查询方法的应用场景示意图;
图2为本申请实施例提供的容器日志查询方法的流程示意图;
图3为本申请实施例提供的K8s***的示意性框图;
图4为本申请实施例中终端的一种结构示意图;
图5为本申请实施例中服务器的一种结构示意图。
具体实施方式
本申请实施例的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块,本申请实施例中所出现的模块的划分,仅仅是一种逻辑上的划分,实际应用中实现时可以有另外的划分方式,例如多个模块可以结合成或集成在另一个***中,或一些特征可以忽略,或不执行,另外,所显示的或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,模块之间的间接耦合或通信连接可以是电性或其他类似的形式,本申请实施例中均不作限定。并且,作为分离部件说明的模块或子模块可以是也可以不是物理上的分离,可以是也可以不是物理模块,或者可以分布到多个电路模块中,可以根据实际的需要选择其中的部分或全部模块来实现本申请实施例方案的目的。
本申请实施例供了一种容器日志查询方法、相关设备及存储介质,该容器日志查询方法的执行主体可以是本申请实施例提供的K8s***,或者集成了K8s***的计算机设备,其中,该K8s***可以采用硬件或者软件的方式实现,该计算机设备可以为终端或服务器。
当该计算机设备为服务器时,该服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。
当该计算机设备为终端时,该终端可以包括:智能手机、平板电脑、笔记本电脑、桌上型电脑、智能电视、智能音箱、个人数字助理(英文全称:Personal Digital Assistant,英文简称:PDA)、台式计算机、智能手表等携带多媒体数据处理功能(例如,视频数据播放功能、音乐数据播放功能)的智能终端,但并不局限于此。
本申请实施例的方案可基于人工智能技术实现,具体来说涉及人工智能技术中的计算机视觉技术技术领域和云技术中的云计算、云存储和数据库等领域,下面将分别进行介绍。
人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用***。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互***、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
计算机视觉技术(Computer Vision,CV)计算机视觉是一门研究如何使机器“看”的科学,更进一步的说,就是指用摄影机和电脑代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图形处理,使电脑处理成为更适合人眼观察或传送给仪器检测的图像。作为一个科学学科,计算机视觉研究相关的理论和技术,试图建立能够从图像或者多维数据中获取信息的人工智能***。计算机视觉技术通常包括图像处理、模型鲁棒性检测、图像语义理解、图像检索、OCR、视频处理、视频语义理解、视频内容/行为识别、三维物体重建、3D技术、虚拟现实、增强现实、同步定位与地图构建等技术,还包括常见的模型鲁棒性检测、指纹识别等生物特征识别技术。
随着人工智能技术研究和进步,人工智能技术在多个领域展开研究和应用,例如常见的智能家居、智能穿戴设备、虚拟助理、智能音箱、智能营销、无人驾驶、自动驾驶、无人机、机器人、智能医疗、智能客服等,相信随着技术的发展,人工智能技术将在更多的领域得到应用,并发挥越来越重要的价值。
本申请实施例的方案可基于云技术实现,具体来说涉及云技术中的云计算、云存储和数据库等技术领域,下面将分别进行介绍。
云技术(Cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。云技术(Cloudtechnology)基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络***的后台服务需要大量的计算、存储资源,如视频网站、图像类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台***进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的***后盾支撑,只能通过云计算来实现。本申请实施例可通过云技术对识别结果进行保存。
云存储(cloud storage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储***(以下简称存储***)是指通过集群应用、网格技术以及分布存储文件***等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储***。在本申请实施例中,可将网络配置等信息均保存在该存储***中,便于服务器调取。
目前,存储***的存储方法为:创建逻辑卷,在创建逻辑卷时,就为每个逻辑卷分配物理存储空间,该物理存储空间可能是某个存储设备或者某几个存储设备的磁盘组成。客户端在某一逻辑卷上存储数据,也就是将数据存储在文件***上,文件***将数据分成许多部分,每一部分是一个对象,对象不仅包含数据而且还包含数据标识(ID,ID entity)等额外的信息,文件***将每个对象分别写入该逻辑卷的物理存储空间,且文件***会记录每个对象的存储位置信息,从而当客户端请求访问数据时,文件***能够根据每个对象的存储位置信息让客户端对数据进行访问。
存储***为逻辑卷分配物理存储空间的过程,具体为:按照对存储于逻辑卷的对象的容量估量(该估量往往相对于实际要存储的对象的容量有很大余量)和独立冗余磁盘阵列(RAID,Redundant Array of Independent Disk)的组别,预先将物理存储空间划分成分条,一个逻辑卷可以理解为一个分条,从而为逻辑卷分配了物理存储空间。
数据库(Database),简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。
数据库管理***(英语:Database Management System,简称DBMS)是为管理数据库而设计的电脑软件***,一般具有存储、截取、安全保障、备份等基础功能。数据库管理***可以依据它所支持的数据库模型来作分类,例如关系式、XML(Extensible MarkupLanguage,即可扩展标记语言);或依据所支持的计算机类型来作分类,例如服务器群集、移动电话;或依据所用查询语言来作分类,例如SQL(结构化查询语言,Structured QueryLanguage)、XQuery;或依据性能冲量重点来作分类,例如最大规模、最高运行速度;亦或其他的分类方式。不论使用哪种分类方式,一些DBMS能够跨类别,例如,同时支持多种查询语言。在本申请实施例中,可将识别结果存储在该数据库管理***中,便于服务器调取。
其中,需要特别说明的是,本申请实施例涉及的服务终端,可以是指向服务终端提供语音和/或数据连通性的设备,具有无线连接功能的手持式设备、或连接到无线调制解调器的其他处理设备。例如移动电话(或称为“蜂窝”电话)和具有移动终端的计算机,例如,可以是便携式、袖珍式、手持式、计算机内置的或者车载的移动装置,它们与无线接入网交换语音和/或数据。例如,个人通信业务(英文全称:Personal Communication Service,英文简称:PCS)电话、无绳电话、会话发起协议(SIP)话机、无线本地环路(Wireless LocalLoop,英文简称:WLL)站、个人数字助理(英文全称:Personal Digital Assistant,英文简称:PDA)等设备。
请参阅图1,图1为本申请实施例提供的容器日志查询方法的应用场景示意图。该容器日志查询方法应用于图1中的K8s***中,该K8s***包括集群网关10以及多个物理机,多个所述物理机中包括目标物理机,各所述物理机的用户空间中分别部署有服务组件,各所述物理机的内核空间中分别部署有eBPF扩展的伯克利包过滤器(extended BerkeleyPacket Filter,ebpf)组件以及eBPF缓存空间(eBPF Maps),本申请实施例以前端设备查询目标物理机中的容器日志为例进行举例说明,前端设备查询K8s***中其他物理机中的日志容器与查询目标物理机中日志容器的流程类似,具体本申请实施例不作赘述。
如图1所示,目标物理机的用户空间中部署有目标服务组件,内核空间中部署有目标eBPF组件以及目标eBPF缓存空间。当用户需要通过前端设备查询K8s***中某容器的日志时,通过前端设备向K8s***发送日志查询请求,其中,该日志查询请求中携带有目标容器标识以及目标时段信息,K8s***中的集群网关10接收到该日志查询请求之后,会根据该日志查询请求中的目标容器标识将该请求路由至目标物理机中,然后目标服务组件根据所述目标容器标识以及预设的第一对应关系确定目标容器日志路径,并将所述目标容器日志路径以及所述目标时段信息发送至目标eBPF组件,其中,所述第一对应关系包括容器标识与日志路径的对应关系;目标eBPF组件根据目标容器日志路径以及目标时段信息从目标日志文件中获取目标容器日志,并将所述目标容器日志存至所述目标物理机中的目标eBPF缓存空间中;最后目标服务组件从所述目标eBPF缓存空间中获取所述目标容器日志,并通过所述集群网关10将所述目标容器日志发送至所述前端设备,使得用户通过前端设备查询到所需的容器日志。
其中,本实施例中的eBPF缓存空间,允许内核空间中的eBPF组件和用户空间中的服务组件在eBPF缓存空间中读写数据。
图2是本申请实施例提供的容器日志查询方法的流程示意图。如图2所示,该方法包括以下步骤101-108。
101、集群网关接收前端设备发送的日志查询请求,所述日志查询请求中携带有目标容器标识以及目标时段信息。
在一些实施例中,当用户需要查询K8s***中的日志时,通过前端设备向K8s***发送日志查询请求,此时,K8s***中的集群网关接收到该日志查询请求。
在执行步骤101之前,需要提前完成标服务组件的部署,在一些实施例中,可以通过以下步骤进行部署:所述目标物理机获取go程序包,并根据所述go程序包在用户空间中构建所述目标服务组件。
本实施例中,go程序的性能比c程序好,所以使用go程序包构建得到目标服务组件,其性能也比较好,此外,本实施例中的目标服务组件还具有并发处理能力,当同一时间接收到多个请求时,可以通过多线程分别处理对各个请求分别进行处理。
在一些实施例中,用户可以在前端设备滚动查询日志,每滚动一次,可生成一个与滚动后页面对应的日志查询请求。
102、集群网关将所述日志查询请求路由至对应的目标物理机。
本实施例中,集群网关接收到日志查询请求之后,会将该日志查询请求路由至对应的目标物理机。
在一些实施例中,集群网关中预设有第二对应关系,该第二对应关系包括容器标识与物理机标识的对应关系,此时,当集群网关接收到日志查询请求之后,将根据所述目标容器标识以及预设的第二对应关系确定目标物理机标识,然后根据所述目标物理机标识将所述日志查询请求发送至所述目标物理机,即将该日志查询请求发送至与该目标物理机标识对应的目标物理机。
可见,在该实施例中,由于集群网关中维护有第二对应关系,集群网关可以根据该第二对应关系自动确定与目标容器标识对应的目标物理机标识,不需要用户手动指定目标物理机标识,降低了用户查询日志的工作量。
在另一些实施例中,日志查询请求中携带有目标物理机标识,该目标物理机标识可以由前端设备得到,也可以由目标用户指定得到,此时,集群网关接收到该日志查询请求之后,可以直接根据该日志查询请求中携带的目标物理机标识将所述日志查询请求发送至对应的目标物理机。
可见,在该实施例中,集群网关可以直接根据日志查询请求中的目标物理机标识进行请求的路由,不需要集群网关进一步判断该请求对应的物理机标识,降低了集群网关的工作量,且加快了请求转发的效率。
103、所述目标物理机中的目标服务组件根据所述目标容器标识以及预设的第一对应关系确定目标容器日志路径。
其中,该第一对应关系包括容器标识与日志路径的对应关系,目标容器日志路径为目标日志文件中与目标容器的日志对应的路径。
本实施例中,当集群网关将所述日志查询请求路由至对应的目标物理机,目标物理机通过用户空间中的目标服务组件接收该日志查询请求,然后获取该日志查询请求中的目标容器标识,再根据第一对应关系确定与目标容器标识对应的目标容器日志路径。
在一些实施例中,K8s***中服务组件与前端设备之间约定了交换的数据结构,具体地,使用Protocol Buffers双向流RPC协议作为前端设备与物理机中服务组件之间的通信协议,可以基于该协议为前端设备以及服务组件分别设置目标解码规则以及目标编码规则。
其中,Protocol Buffers是一种轻量级、高效的二进制数据交换格式,可以提高数据传输速度和减少内存占用。
此时,前端设备在发送日志查询请求之前,为提高数据传输速度,会使用约定的目标编码规则对日志查询请求进行编码处理,其中,该目标编码规则为基于rotocol Buffers双向流远程过程调用协议(Remote Procedure Call Protocol,RPC)生成的规则,例如可以为序列化规则,可以对日志查询请求进行序列化处理,然后将进行过编码处理的请求发送给K8s***,K8s***在通过对应的目标物理机将该请求转发给目标服务组件。
此时,目标服务组件再接收到日志查询请求之后,为了识别该请求的内容,首先需要对该请求进行解码处理,以获取该请求具体的内容,具体地,在步骤103之前,方法还包括:所述目标服务组件根据预设的目标解码规则对所述日志查询请求进行解码处理,获取所述目标容器标识以及所述目标时段信息。
其中,该目标解码规则可以为反序列化规则。
104、所述目标服务组件将所述目标容器日志路径以及所述目标时段信息发送至目标eBPF组件,所述第一对应关系包括容器标识与日志路径的对应关系,所述目标eBPF组件为所述目标物理机中的eBPF组件。
本实施例中,当目标服务组件获取到了目标容器日志路径之后,还需提取请求中的目标时段信息,然后将该目标容器日志路径以及目标时段信息传给目标eBPF组件。
在一些实施例中,本实施例中的目标eBPF组件挂载在所述目标物理机的内核函数上,为节约设备资源,eBPF组件只在被调用的时候运行,不被调用的时候处于停止运行状态,此时,目标服务组件将所述目标容器日志路径以及所述目标时段信息发送至目标eBPF组件之前,首先需要调用所述内核函数启动所述目标eBPF组件,以运行所述目标eBPF组件。
其中,目标物理机的内核空间中的部署有目标eBPF验证器以及目标内核虚拟机,为保证目标eBPF组件的安全性,将eBPF字节码加载至内核空间得到eBPF组件的步骤如下:所述目标服务组件将所述用户空间中预设的目标eBPF字节码发送至所述目标eBPF验证器;所述目标eBPF验证器对所述目标eBPF字节码进行校验处理,得到校验结果,所述校验处理包括无限循环校验处理、崩溃代码校验处理以及运行时间检验处理;若所述结果为校验通过,则所述目标eBPF验证器将所述目标eBPF字节码发送至所述目标内核虚拟机;所述目标内核虚拟机中的目标eBPF编译器对所述目标eBPF字节码进行编译处理,得到所述目标eBPF组件,并将所述目标eBPF组件挂载至所述目标物理机的内核函数上。
具体地,目标eBPF编译器可以使用即时编译器(Just In Time,JIT)技术将目标eBPF字节码编译成目标eBPF组件,该目标eBPF组件为本地机器码(Native Code)。
其中,本实施例中的目标eBPF组件运行在目标内核虚拟机内,在沙箱中操作目标eBPF组件且不需编译内核,可以提高内核的安全性以及稳定性。
105、所述目标eBPF组件根据所述目标容器日志路径以及所述目标时段信息从目标日志文件中获取目标容器日志。
其中,所述目标日志文件中存储有所述目标物理机中各容器的容器日志。
具体地,在一些实施例中,步骤105包括:
所述目标eBPF组件根据所述目标容器日志路径从所述目标日志文件中确定目标容器日志子文件;所述目标eBPF组件从所述目标容器日志子文件中获取与所述目标时段信息对应的所述目标容器日志。
即,目标eBPF组件首先从目标日志文件找到存储有目标容器的日志的目标容器日志子文件,然后再从该目标容器日志子文件中获取符合目标时段信息的日志作为目标容器日志,例如,目标时段信息为2023年8月20日10点整到2023年8月20日11点整,此时,从目标容器日志子文件中将该时段内的日志筛选出来。
106、所述目标eBPF组件将所述目标容器日志存至所述目标物理机中的目标eBPF缓存空间中。
本实施例中,为了将筛选出来的目标容器日志发送到用户空间,需要将该目标容器日志存至目标eBPF缓存空间中,目标eBPF缓存空间的数据可以与目标服务组件读写共享。
107、所述目标服务组件从所述目标eBPF缓存空间中获取所述目标容器日志。
本实施例中,目标服务器组件可以实时监测目标eBPF缓存空间中是否有新增数据(目标容器日志),当有新增数据,则实时将新增数据读取到用户空间,也可以间隔预设时长(例如1s)读取一次目标eBPF缓存空间的数据,具体读取方式本实施例不作限定。
本实施例中,当目标服务组件从所述目标eBPF缓存空间中获取所述目标容器日志之后,被读取后的目标容器日志将从目标eBPF缓存空间中删除。
108、所述目标服务组件通过所述集群网关将所述目标容器日志发送至所述前端设备。
在一些实施例中,为了提高日志的传输效率,当目标服务器组件获取到目标容器日志之后,还需要进一步根据预设的目标编码规则对所述目标容器日志进行编码操作,得到目标编码日志,并将所述目标编码日志作为所述目标容器日志,再通过集群网关将所述目标容器日志发送至所述前端设备。
其中,本实施例中目标编码规则,具体可以为序列化规则。
综上所述,本申请实施例提供的方案中,第一方面,由于本实施例中的物理机的内核空间中部署有eBPF组件以及eBPF缓存空间,通过eBPF组件可以直接获取将与日志查询请求对应的目标容器日志,将目标容器日志存储至目标eBPF缓存空间中,用户空间中的服务组件可以从该目标eBPF缓存空间中获取目标容器日志,并将目标容器日志返回至前端设备,完成前端设备容器日志文件的查询,相对于现有技术中的ELK/EFK日志采集方案,本方案直接通过eBPF组件以及eBPF缓存空间从日志文件中获取所需的日志,不需额外的磁盘空间对容器日志进行备份,故通过本方案进行容器日志的查询可以节约存储资源;第二方面,由于本方案可以直接通过部署在内核中的eBPF组件、eBPF缓存空间以及部署在用户空间中的服务组件实现容器日志的查询,不需要调用集群组件,故通过本方案进行日志查询不会加重集群组件的负担,从而避免由于调用集群组件进行日志查询导致的集群不稳定的情况发生。
此外,经验证,本实施例在物理机上部署基于go程序的服务组件、eBPF组件以及eBPF缓存空间,所需的内存空间小于2GB,0.5个vCPU(虚拟机内的CPU)且无需额外磁盘空间。现对于现有技术中ELK/EFK日志采集方案,本方案的日志采集方案的安装文件远小于ELK/EFK所需的安装文件,进一步节省了存储资源。
图1至图2中任一项所对应的实施例中所提及的任一技术特征也同样适用于本申请实施例中的图3至图5所对应的实施例,后续类似之处不再赘述。
以上对本申请实施例中一种容器日志查询方法进行说明,以下对执行上述容器日志查询方法的K8s***(例如服务器、用户终端)进行介绍。
参阅图3,如图3所示的一种K8s***的结构示意图,其可应用于容器日志查询场景。本申请实施例中的K8s***30能够实现对应于上述图1-图2中任一所对应的实施例中所执行的种容器日志查询方法的步骤。K8s***30实现的功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块,所述模块可以是软件和/或硬件。所述K8s***30可包括集群网关301以及多个物理机,多个所述物理机中包括目标物理机302(图3中未标识出除目标物理机302之外的物理机),各所述物理机的用户空间中分别部署有服务组件,各所述物理机的内核空间中分别部署有eBPF组件以及eBPF缓存空间,目标物理机302的用户空间中部署有目标服务组件3021,目标物理机302的内核空间中部署有目标eBPF组件3022以及目标eBPF缓存空间3023,其中:
所述目标物理机302,用于从所述集群网关301中接收来自前端设备的日志查询请求,所述日志查询请求中携带有目标容器标识以及目标时段信息;
所述目标物理机302中的目标服务组件3021,用于根据所述目标容器标识以及预设的第一对应关系确定目标容器日志路径,并将所述目标容器日志路径以及所述目标时段信息发送至目标eBPF组件3022,所述第一对应关系包括容器标识与日志路径的对应关系,所述目标eBPF组件3022为所述目标物理机302中的eBPF组件;
所述目标eBPF组件3022,用于根据所述目标容器日志路径以及所述目标时段信息从目标日志文件中获取目标容器日志,并将所述目标容器日志存至所述目标物理机302中的目标eBPF缓存空间3023中,所述目标日志文件中存储有所述目标物理机302中各容器的容器日志;
所述目标服务组件3021,还用于从所述目标eBPF缓存空间3023中获取所述目标容器日志,并通过所述集群网关301将所述目标容器日志发送至所述前端设备。
在一些实施例中,所述目标物理机302在执行所述从所述集群网关301中接收来前端设备的日志查询请求步骤时,具体用于:
通过所述集群网关301接收所述前端设备发送的所述日志查询请求;通过所述集群网关301根据所述目标容器标识以及预设的第二对应关系确定目标物理机302标识,所述第二对应关系包括容器标识与物理机标识的对应关系;通过所述集群网关301根据所述目标物理机302标识将所述日志查询请求发送至所述目标物理机302;或,
通过所述集群网关301接收所述前端设备发送的所述日志查询请求;通过所述集群网关301根据所述日志查询请求中携带的目标物理机302标识将所述日志查询请求发送至所述目标物理机302。
在一些实施例中,在所述目标物理机302中的目标服务组件3021执行所述根据所述目标容器标识以及预设的第一对应关系确定目标容器日志路径步骤之前:
所述目标服务组件3021,还用于根据预设的目标解码规则对所述日志查询请求进行解码处理,获取所述目标容器标识以及所述目标时段信息;
此时,在所述目标物理机302中的目标服务组件3021从所述目标eBPF缓存空间3023中获取所述目标容器日志之后,且所述通过所述集群网关301将所述目标容器日志发送至所述前端设备步骤之前:
所述目标服务器组件,还用于根据预设的目标编码规则对所述目标容器日志进行编码操作,得到目标编码日志,并将所述目标编码日志作为所述目标容器日志。
在一些实施例中,所述目标eBPF组件3022在执行所述根据所述目标容器日志路径以及所述目标时段信息从目标日志文件中获取目标容器日志步骤时,具体用于:
根据所述目标容器日志路径从所述目标日志文件中确定目标容器日志子文件;从所述目标容器日志子文件中获取与所述目标时段信息对应的所述目标容器日志。
在一些实施例中,所述目标eBPF组件3022挂载在所述目标物理机302的内核函数上;在所述目标服务组件3021执行所述将所述目标容器日志路径以及所述目标时段信息发送至目标eBPF组件3022步骤之前:
所述目标服务组件3021,还用于通过调用所述内核函数启动所述目标eBPF组件3022,以运行所述目标eBPF组件3022;
所述目标eBPF组件3022,还用于根据所述目标容器日志路径以及所述目标时段信息从目标日志文件中获取目标容器日志,并将所述目标容器日志存至所述目标物理机302中的目标eBPF缓存空间3023中之后,所述方法还包括:
所述目标服务组件3021,还用于通过调用所述内核函数关闭所述目标eBPF组件3022,使得所述目标eBPF组件3022停止运行。
在一些实施例中,所述目标物理机302的内核空间中的部署有目标eBPF验证器以及目标内核虚拟机;在所述目标服务组件3021执行所述通过调用所述内核函数启动所述目标eBPF组件3022步骤之前:
所述目标服务组件3021,还用于将所述用户空间中预设的目标eBPF字节码发送至所述目标eBPF验证器;
所述目标eBPF验证器,还用于对所述目标eBPF字节码进行校验处理,得到校验结果,所述校验处理包括无限循环校验处理、崩溃代码校验处理以及运行时间检验处理;
若所述结果为校验通过,则所述目标eBPF验证器,还用于将所述目标eBPF字节码发送至所述目标内核虚拟机;
所述目标内核虚拟机中的目标eBPF编译器,还用于对所述目标eBPF字节码进行编译处理,得到所述目标eBPF组件3022,并将所述目标eBPF组件3022挂载至所述目标物理机302的内核函数上。
在一些实施例中,所述目标物理机302在执行所述从所述集群网关301中接收来前端设备的日志查询请求步骤之前,还用于:
获取go程序包,并根据所述go程序包在用户空间中构建所述目标服务组件3021。
综上所述,本申请实施例提供的方案中,第一方面,由于本实施例中目标物理机302的内核空间中部署有目标eBPF组件3022以及目标eBPF缓存空间3023,通过目标eBPF组件3022可以直接获取将与日志查询请求对应的目标容器日志,将目标容器日志存储至目标eBPF缓存空间3023中,用户空间中的服务组件可以从该目标eBPF缓存空间3023中获取目标容器日志,并将目标容器日志返回至前端设备,完成前端设备容器日志文件的查询,相对于现有技术中的ELK/EFK日志采集方案,本方案直接通过目标eBPF组件3022以及目标eBPF缓存空间3023从日志文件中获取所需的日志,不需额外的磁盘空间对容器日志进行备份,故通过本方案进行容器日志的查询可以节约存储资源;第二方面,由于本方案可以直接通过部署在内核中的目标eBPF组件3022、目标eBPF缓存空间3023以及部署在用户空间中的服务组件实现容器日志的查询,不需要调用集群组件,故通过本方案进行日志查询不会加重集群组件的负担,从而避免由于调用集群组件进行日志查询导致的集群不稳定的情况发生。
下面从硬件处理的角度对本申请实施例中的容器日志查询进行描述。
本申请实施例还提供了一种终端,如图4所示,为了便于说明,仅示出了与本申请实施例相关的部分,具体技术细节未揭示的,请参照本申请实施例方法部分。该终端可以为包括手机、平板电脑、个人数字助理(英文全称:Personal Digital Assistant,英文简称:PDA)、销售终端(英文全称:Point of Sales,英文简称:POS)、车载电脑等任意终端,以终端为手机为例:
图4示出的是与本申请实施例提供的终端相关的手机的部分结构的框图。参考图4,手机包括:射频(英文全称:Radio Frequency,英文简称:RF)电路55、存储器520、输入单元530、显示单元540、传感器550、音频电路560、无线保真(英文全称:wireless fidelity,英文简称:Wi-Fi)模块570、处理器580、以及电源590等部件。本领域技术人员可以理解,图4中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图4对手机的各个构成部件进行具体的介绍:
RF电路55可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器580处理;另外,将设计上行的数据发送给基站。通常,RF电路55包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(英文全称:Low NoiseAmplifier,英文简称:LNA)、双工器等。此外,RF电路55还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯***(英文全称:Global System of Mobile communication,英文简称:GSM)、通用分组无线服务(英文全称:General Packet Radio Service,英文简称:GPRS)、码分多址(英文全称:Code Division Multiple Access,英文简称:CDMA)、宽带码分多址(英文全称:WidebandCode Division Multiple Access,英文简称:WCDMA)、长期演进(英文全称:Long TermEvolution,英文简称:LTE)、电子邮件、短消息服务(英文全称:Short Messaging Service,英文简称:SMS)等。
存储器520可用于存储软件程序以及模块,处理器580通过运行存储在存储器520的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器520可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器520可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元530可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元530可包括触控面板531以及其他输入设备532。触控面板531,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板531上或在触控面板531附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板531可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器580,并能接收处理器580发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板531。除了触控面板531,输入单元530还可以包括其他输入设备532。具体地,其他输入设备532可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元540可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元540可包括显示面板541,可选的,可以采用液晶显示器(英文全称:LiquidCrystal Display,英文简称:LCD)、有机发光二极管(英文全称:Organic Light-EmittingDiode,英文简称:OLED)等形式来配置显示面板541。进一步的,触控面板531可覆盖显示面板541,当触控面板531检测到在其上或附近的触摸操作后,传送给处理器580以确定触摸事件的类型,随后处理器580根据触摸事件的类型在显示面板541上提供相应的视觉输出。虽然在图4中,触控面板531与显示面板541是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板531与显示面板541集成而实现手机的输入和输出功能。
手机还可包括至少一种传感器550,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板541的亮度,接近传感器可在手机移动到耳边时,关闭显示面板541和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路560、扬声器561,传声器562可提供用户与手机之间的音频接口。音频电路560可将接收到的音频数据转换后的电信号,传输到扬声器561,由扬声器561转换为声音信号输出;另一方面,传声器562将收集的声音信号转换为电信号,由音频电路560接收后转换为音频数据,再将音频数据输出处理器580处理后,经RF电路55以发送给比如另一手机,或者将音频数据输出至存储器520以便进一步处理。
Wi-Fi属于短距离无线传输技术,手机通过Wi-Fi模块570可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图4示出了Wi-Fi模块570,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变申请的本质的范围内而省略。
处理器580是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器520内的软件程序和/或模块,以及调用存储在存储器520内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器580可包括一个或多个处理单元;优选的,处理器580可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作***、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器580中。
手机还包括给各个部件供电的电源590(比如电池),电源可以通过电源管理***与处理器580逻辑相连,从而通过电源管理***实现管理充电、放电、以及功耗管理等功能。
尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本申请实施例中,该手机所包括的处理器580还具有控制执行以上由图2所示的容器日志查询方法的流程图。
图5是本申请实施例提供的一种服务器结构示意图,该服务器620可因配置或性能不同而产生比较大的差异,可以包括一个或一个以***处理器(英文全称:centralprocessing units,英文简称:CPU)622(例如,一个或一个以上处理器)和存储器632,一个或一个以上存储应用程序642或数据644的存储介质630(例如一个或一个以上海量存储设备)。其中,存储器632和存储介质630可以是短暂存储或持久存储。存储在存储介质630的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器622可以设置为与存储介质630通信,在服务器620上执行存储介质630中的一系列指令操作。
服务器620还可以包括一个或一个以上电源626,一个或一个以上有线或无线网络接口650,一个或一个以上输入输出接口658,和/或,一个或一个以上操作***641,例如Windows Server,Mac OS X,Unix,Linux,FreeBSD等等。
上述实施例中由服务器所执行的步骤可以基于该图5所示的服务器620的结构。例如上述实施例中由图2所示的服务器的步骤可以基于该图5所示的服务器结构。例如,所述处理器622通过调用存储器632中的指令,执行以下操作:
所述目标物理机从所述集群网关中接收来自前端设备的日志查询请求,所述日志查询请求中携带有目标容器标识以及目标时段信息;
所述目标物理机中的目标服务组件根据所述目标容器标识以及预设的第一对应关系确定目标容器日志路径,并将所述目标容器日志路径以及所述目标时段信息发送至目标eBPF组件,所述第一对应关系包括容器标识与日志路径的对应关系,所述目标eBPF组件为所述目标物理机中的eBPF组件;
所述目标eBPF组件根据所述目标容器日志路径以及所述目标时段信息从目标日志文件中获取目标容器日志,并将所述目标容器日志存至所述目标物理机中的目标eBPF缓存空间中,所述目标日志文件中存储有所述目标物理机中各容器的容器日志;
所述目标服务组件从所述目标eBPF缓存空间中获取所述目标容器日志,并通过所述集群网关将所述目标容器日志发送至所述前端设备。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***,装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请实施例所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请实施例各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机计算机程序时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
以上对本申请实施例所提供的技术方案进行了详细介绍,本申请实施例中应用了具体个例对本申请实施例的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请实施例的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请实施例的限制。
Claims (10)
1.一种容器日志查询方法,其特征在于,所述方法应用于K8s***,所述K8s***包括集群网关以及多个物理机,多个所述物理机中包括目标物理机,各所述物理机的用户空间中分别部署有服务组件,各所述物理机的内核空间中分别部署有eBPF组件以及eBPF缓存空间,所述方法包括:
所述目标物理机从所述集群网关中接收来自前端设备的日志查询请求,所述日志查询请求中携带有目标容器标识以及目标时段信息;
所述目标物理机中的目标服务组件根据所述目标容器标识以及预设的第一对应关系确定目标容器日志路径,并将所述目标容器日志路径以及所述目标时段信息发送至目标eBPF组件,所述第一对应关系包括容器标识与日志路径的对应关系,所述目标eBPF组件为所述目标物理机中的eBPF组件;
所述目标eBPF组件根据所述目标容器日志路径以及所述目标时段信息从目标日志文件中获取目标容器日志,并将所述目标容器日志存至所述目标物理机中的目标eBPF缓存空间中,所述目标日志文件中存储有所述目标物理机中各容器的容器日志;
所述目标服务组件从所述目标eBPF缓存空间中获取所述目标容器日志,并通过所述集群网关将所述目标容器日志发送至所述前端设备。
2.根据权利要求1所述的方法,其特征在于,所述目标物理机从所述集群网关中接收来前端设备的日志查询请求,包括:
所述集群网关接收所述前端设备发送的所述日志查询请求;
所述集群网关根据所述目标容器标识以及预设的第二对应关系确定目标物理机标识,所述第二对应关系包括容器标识与物理机标识的对应关系;
所述集群网关根据所述目标物理机标识将所述日志查询请求发送至所述目标物理机;或,
所述集群网关接收所述前端设备发送的所述日志查询请求;
所述集群网关根据所述日志查询请求中携带的目标物理机标识将所述日志查询请求发送至所述目标物理机。
3.根据权利要求1所述的方法,其特征在于,所述目标物理机中的目标服务组件根据所述目标容器标识以及预设的第一对应关系确定目标容器日志路径之前,所述方法还包括:
所述目标服务组件根据预设的目标解码规则对所述日志查询请求进行解码处理,获取所述目标容器标识以及所述目标时段信息;
所述目标物理机中的目标服务组件从所述目标eBPF缓存空间中获取所述目标容器日志之后,且所述通过所述集群网关将所述目标容器日志发送至所述前端设备之前,所述方法还包括:
所述目标服务器组件根据预设的目标编码规则对所述目标容器日志进行编码操作,得到目标编码日志,并将所述目标编码日志作为所述目标容器日志。
4.根据权利要求1所述的方法,其特征在于,所述目标eBPF组件根据所述目标容器日志路径以及所述目标时段信息从目标日志文件中获取目标容器日志,包括:
所述目标eBPF组件根据所述目标容器日志路径从所述目标日志文件中确定目标容器日志子文件;
所述目标eBPF组件从所述目标容器日志子文件中获取与所述目标时段信息对应的所述目标容器日志。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述目标eBPF组件挂载在所述目标物理机的内核函数上;所述目标服务组件将所述目标容器日志路径以及所述目标时段信息发送至目标eBPF组件之前,所述方法还包括:
所述目标服务组件通过调用所述内核函数启动所述目标eBPF组件,以运行所述目标eBPF组件;
所述目标eBPF组件根据所述目标容器日志路径以及所述目标时段信息从目标日志文件中获取目标容器日志,并将所述目标容器日志存至所述目标物理机中的目标eBPF缓存空间中之后,所述方法还包括:
所述目标服务组件通过调用所述内核函数关闭所述目标eBPF组件,使得所述目标eBPF组件停止运行。
6.根据权利要求5所述的方法,其特征在于,所述目标物理机的内核空间中的部署有目标eBPF验证器以及目标内核虚拟机;所述目标服务组件通过调用所述内核函数启动所述目标eBPF组件之前,所述方法还包括:
所述目标服务组件将所述用户空间中预设的目标eBPF字节码发送至所述目标eBPF验证器;
所述目标eBPF验证器对所述目标eBPF字节码进行校验处理,得到校验结果,所述校验处理包括无限循环校验处理、崩溃代码校验处理以及运行时间检验处理;
若所述结果为校验通过,则所述目标eBPF验证器将所述目标eBPF字节码发送至所述目标内核虚拟机;
所述目标内核虚拟机中的目标eBPF编译器对所述目标eBPF字节码进行编译处理,得到所述目标eBPF组件,并将所述目标eBPF组件挂载至所述目标物理机的内核函数上。
7.根据权利要求1至4中任一项所述的方法,其特征在于,所述目标物理机从所述集群网关中接收来前端设备的日志查询请求之前,所述方法还包括:
所述目标物理机获取go程序包,并根据所述go程序包在用户空间中构建所述目标服务组件。
8.一种K8s***,其特征在于,所述K8s***包括集群网关以及多个物理机,多个所述物理机中包括目标物理机,各所述物理机的用户空间中分别部署有服务组件,各所述物理机的内核空间中分别部署有eBPF组件以及eBPF缓存空间,其中:
所述目标物理机,用于从所述集群网关中接收来自前端设备的日志查询请求,所述日志查询请求中携带有目标容器标识以及目标时段信息;
所述目标物理机中的目标服务组件,用于根据所述目标容器标识以及预设的第一对应关系确定目标容器日志路径,并将所述目标容器日志路径以及所述目标时段信息发送至目标eBPF组件,所述第一对应关系包括容器标识与日志路径的对应关系,所述目标eBPF组件为所述目标物理机中的eBPF组件;
所述目标eBPF组件,用于根据所述目标容器日志路径以及所述目标时段信息从目标日志文件中获取目标容器日志,并将所述目标容器日志存至所述目标物理机中的目标eBPF缓存空间中,所述目标日志文件中存储有所述目标物理机中各容器的容器日志;
所述目标服务组件,还用于从所述目标eBPF缓存空间中获取所述目标容器日志,并通过所述集群网关将所述目标容器日志发送至所述前端设备。
9.一种计算机设备,其特征在于,所述计算机设备包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现如权利要求1-7中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时可实现如权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311083647.0A CN117056387A (zh) | 2023-08-25 | 2023-08-25 | 容器日志查询方法、相关设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311083647.0A CN117056387A (zh) | 2023-08-25 | 2023-08-25 | 容器日志查询方法、相关设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117056387A true CN117056387A (zh) | 2023-11-14 |
Family
ID=88655160
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311083647.0A Pending CN117056387A (zh) | 2023-08-25 | 2023-08-25 | 容器日志查询方法、相关设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117056387A (zh) |
-
2023
- 2023-08-25 CN CN202311083647.0A patent/CN117056387A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111416845B (zh) | 一种配置边缘设备的方法、装置及存储介质 | |
CN107329985B (zh) | 一种页面的收藏方法、装置和移动终端 | |
US20180196703A1 (en) | Parallel Execution Method and Apparatus in Terminal Database | |
CN105824958A (zh) | 一种查询日志的方法、装置和*** | |
CN111125269A (zh) | 一种数据管理方法、血缘关系显示方法和相关装置 | |
CN115658348B (zh) | 微服务调用方法、相关装置及存储介质 | |
CN114694226B (zh) | 一种人脸识别方法、***及存储介质 | |
CN108984374B (zh) | 一种数据库性能的测试方法和*** | |
CN104281610A (zh) | 过滤微博的方法和装置 | |
CN114115895A (zh) | 一种代码查询方法、装置、电子设备和存储介质 | |
CN116758362A (zh) | 图像处理方法、装置、计算机设备及存储介质 | |
CN116071614A (zh) | 样本数据处理方法、相关设备及存储介质 | |
CN115546516A (zh) | 人员聚档方法、装置、计算机设备及存储介质 | |
CN115640567A (zh) | Tee完整性认证方法、装置、***及存储介质 | |
CN116563041A (zh) | 一种数据对账方法以及相关装置 | |
CN117056387A (zh) | 容器日志查询方法、相关设备及存储介质 | |
CN114691714A (zh) | 基于sql语句整合的数据获取方法、装置、设备、介质 | |
CN115525554B (zh) | 模型的自动化测试方法、***及存储介质 | |
CN115412726B (zh) | 视频真伪检测方法、装置及存储介质 | |
CN114722970B (zh) | 一种多媒体检测方法、装置及存储介质 | |
CN115909186B (zh) | 图像信息识别方法、装置、计算机设备及存储介质 | |
CN116756350A (zh) | 多媒体数据处理方法、装置、计算机设备及存储介质 | |
CN115565215B (zh) | 一种人脸识别算法切换方法、装置及存储介质 | |
CN116954631A (zh) | 模型部署方法、相关装置及存储介质 | |
CN116386647B (zh) | 音频验证方法、相关装置、存储介质及程序产品 |
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 |