CN110727568A - 一种云环境下的多源日志数据处理***及方法 - Google Patents
一种云环境下的多源日志数据处理***及方法 Download PDFInfo
- Publication number
- CN110727568A CN110727568A CN201910880320.3A CN201910880320A CN110727568A CN 110727568 A CN110727568 A CN 110727568A CN 201910880320 A CN201910880320 A CN 201910880320A CN 110727568 A CN110727568 A CN 110727568A
- Authority
- CN
- China
- Prior art keywords
- log
- plug
- data
- processing
- module
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种云环境下的多源日志数据处理***及方法。本发明***的日志源输入模块提供多源日志接入的功能;数据预处理模块提供数据分类功能;数据处理模块提供日志处理插件管理功能;数据存储模块提供后端数据存储管理功能。本发明对文本日志数据流通过二维向量<ip,path>进行标签化处理;编辑plugin_playbook.yml文件,定义日志数据流处理链路,确定日志在不同plugin之间的处理顺序;扫描并加载plugins目录下所有插件;解析plugin_playbook.yml文件,构造完整的数据流解析链路,原始日志文件根据链路标识,按序逐步流传到不同的插件处理。本发明解决了多源日志处理高度耦合、扩展性不足等问题;可用于多源日志数据处理。
Description
技术领域
本发明涉及日志数据处理技术领域,特别涉及一种云环境下的多源日志数据处理***及方法。
背景技术
随着目前各种分布式技术迅猛发展及丰富的开源分布式框架的成熟,传统的大型单体程序逐渐解构,朝面向服务的体系结构(service-oriented architecture,SOA)转变。其中,微服务架构就是其中的典型代表。但是这种架构会存在一个显著的问题,由于各服务组件均是分布式部署,当***出现异常时,对异常日志的排查的工作量将会非常繁重。因此,面对这种多源、异构的日志数据对其二次解析、结构化存储,以支持后期运维工作是非常有必要的。因而,需要一个统一、专用的平台完成上述日志管理工作;但现有日志平台存在以下几个方面的问题:
一、日志平台资源限制
目前的日志分析平台是计算密集型、网络密集型、存储密集型的综合体,因此平台对硬件资源的需求非常高,这也造成了成本高涨。
二、日志平台中各功能模块高度耦合
日志采集模块、日志处理模块、存储模块等模块之间高度耦合,不利于产品的升级迭代。
三、日志解析功能扩展性不足
日志平台中各模块之间的高度耦合,导致每个平台都针对具体语言环境,无形中提高了产品的产品代码的熟悉难度;且日志解析功能之间的杂糅,导致功能固定不易扩展或缩减功能、功能重用,进而提高了整个产品框架的升级、产品迭代成本,产品的健壮性、扩展性差。
发明内容
本发明解决的技术问题在于提供一种云环境下的多源日志数据处理***及方法;实现多源日志数据二次处理,并避免高度耦合、扩展性不足等问题。
本发明解决上述技术问题的技术方案是:
所述的***包括日志源输入模块、数据预处理模块、数据处理模块和数据存储模块;所述日志源输入模块提供多源日志接入的功能;数据预处理模块提供数据分类功能;数据处理模块提供灵活的日志处理插件的管理功能;数据存储模块提供后端数据存储管理功能。
所述日志源接入模块将不同来源的原始、异构文本格式日志统一接入日志数据流处理平台。
所述数据预处理模块对不同来源的日志在日志接收端统一、集中管理并特征标识tag;所述tag用二维向量<ip,path>表示;所述ip为网络连接默认参数,所述path为日志通用参数。
所述数据处理模块对日志数据进行二次处理,通过管理的日志处理插件实现;包括多语言插件模块、特定功能插件模块、插件管理模块;
多语言插件模块提供一个通用的核心插件库,提供Java、Python、Ruby、Go等多种语言版本的插件API,实现跨语言的通用插件平台;
插件管理模块将插件代码复制到工程目录plugins下,***通过定时扫描plugins目录实现动态加载插件,包括插件加载、卸载、异常管理和行为管理;插件加载、卸载实现特定功能插件模块的加载或卸载;插件行为管理提供一个plugin_playbook.yml文件统一规划整个数据流的处理流程。
所述的插件是指输入、输出均为json数据类型且功能完全独立的日志解析模块;模块之间可灵活组合、可共用,具体的组合方式通过解析plugin_playbook.yml文件实现。
所述的插件分成四部分,包括:一、标签tag,判断日志数据来源是否符合要求;二、前置插件,表明该插件处理哪些插件的后续数据;三、插件内部核心处理逻辑,实现日志解析的核心业务;四、后续接入插件,表示该插件的输出数据交由下一阶段哪些后续插件处理。
所述的方法包括步骤如下:
步骤1:云平台搭建日志数据流二次处理***;
步骤2:接入不同来源的文本日志数据;
步骤3:对不同来源的文本日志数据流通过二维向量<ip,path>进行标签化处理;
步骤4:编辑plugin_playbook.yml文件,定义日志数据流处理链路,确定日志在不同插件之间的处理顺序;
步骤5:插件管理模块扫描并加载plugins目录下所有插件;
步骤6:解析plugin_playbook.yml文件,构造完整的数据流解析链路,原始日志文件根据链路标识,按序逐步流传到不同的插件处理;
步骤7:将处理后的日志存储到后端数据处理模块。
本发明提供一种云环境下多源日志数据流二次处理***及方法,本发明***基于云环境搭建,因而可以充分利用云环境特点弹性配置云主机资源,降低***维护成本。在数据预处理端对来源日志进行集中管理并用ip、path组成的二维向量唯一标识日志来源,降低软件运维工作量且同时达到对日志采集端进行过多的侵入性操作。日志处理部分从整个工作流中解耦成一个独立模块单独管理,并将日志解析交由不同完全独立的plugin组合使用完成,plugin的加载、卸载通过动态扫描plugins实现,无需重启整个服务,使软件具插件具有动态加载特性,提高产品灵活性。通过定义plugin统一规范,提供语言版本API,使***具有跨语言特性。日志处理部分功能具有高内聚、低耦合、高可扩展特性,更加有利于产品迭代。日志处理部分,提供数据链处理剧本plugin_playbook.yml定义日志流处理链,使得日志处理流程简单、直观、流程可控、简化异常追踪。
附图说明
下面结合附图对本发明进一步说明:
图1是本发明***框架图;
图2是本发明方法流程图;
图3是本发明插件逻辑结构图。
具体实施方式
见图1所示,本发明多源日志数据流二次处理的***包括4个功能模块:1、日志源输入模块,提供多源日志接入的功能;2、数据预处理模块,提供数据分类功能;3、数据处理模块,提供灵活的日志处理插件的管理功能;4、数据存储模块,提供后端数据存储管理的功能。
1、日志源接入模块
日志源接入模块将不同来源的文本格式日志统一接入日志数据流处理平台。此时,接入的是有不同服务组件产生的原始、异构日志。
2、数据预处理模块
数据预处理模块,对不同来源的日志在日志接收端统一、集中管理并特征标识tag。本发明中采用二维向量<ip,path>表示该tag。由于日志源中存在大量的异构数据,因此无法采用统一的方式处理数据,因而需要通过打标签特征识别需要处理的日志。
3、数据处理模块
数据处理模块对日志数据进行二次处理,通过管理的日志处理插件实现;包括支持的多语言Plugin模块、特定功能Plugin模块、Plugin管理模块。
plugin是指plugin的输入、输出均为json数据类型且功能完全独立的日志解析模块,模块之间可灵活组合,可共用,具体的组合方式通过解析plugin_playbook.yml文件实现。
多语言Plugin模块,是***通过提供一个通用的corepluginlib规范,实现提供Java、Python、Ruby、Go等多种语言版本的plugin API,实现一种跨语言的通用plugin平台。
plugin管理模块,通过将插件代码复制到plugins目录下实现动态加载插件;该模块会定时、动态扫描该目录,从而实现动态加载。plugin管理包括plugin加载、卸载、异常管理和行为管理。plugin加载、卸载实现特定功能Plugin模块的加载或卸载。plugin行为管理是提供一个plugin_playbook.yml文件(这里称日志处理链剧本)统一规划整个数据流的处理流程,通过该剧本文件实现对plugin的行为管理。
4、数据存储模块
数据存储模块提供开放的后端数据存储架构。
见图2所示,本发明多源日志数据流二次处理方法基本步骤如下:
步骤1:云平台创建多核CPU、高RAM云服务器用于部署日志数据流二次处理***;
步骤2:接入不同来源的文本日志数据;
步骤3:对不同来源的文本日志数据流通过二维向量<ip,path>进行标签化处理;
步骤4:编辑plugin_playbook.yml文件,定义日志数据流处理链路,以确定日志在不同plugin之间的处理顺序;
步骤5:Plugin管理模块扫描并加载plugins目录下所有插件;
步骤6:解析plugin_playbook.yml文件,构造完整的数据流解析链路,原始日志文件根据链路标识,按序逐步流传到不同的插件处理单元;
步骤7:将二次处理后的日志存储到后端数据处理模块。
本发明通过二维向量<ip,path>作为特征标识tag标识日志来源,向量中ip为网络连接默认参数,path为日志通用参数。因此可以说根本未引入额外参数表示日志来源,使用极简参数方式标识日志来源的唯一性。通过在接收端进行集中、统一配置即可标识唯一标识不同的日志来源,简化日志采集端配置步骤,减少运维人员人为侵入采集端额外配置;相比于传统方式更具有技术优势。传统对于日志采集的方式配置标识时,通常在采集端配置id、tag等额外参数标识日志采集源,或者无法唯一识别日志来源,这种方式通常对采集端的人为侵入性较大、且还需额外标识参数,增加配置复杂度。
传统的日志处理平台中的日志采集、处理模块代码耦合程度非常高,可以认为是定制化的日志处理平台,对于通用性、可维护性、可扩展性极度不友好。本发明将日志接收与二次处理解耦成两个功能模块分别管理,为产品升级迭代提供了架构支持。日志二次处理以plugin的方式加载、卸载具有特定功能的plugin,给该模块带来了极强的灵活性、可扩展性。plugin仅通过scan工程目录plugins下,即可识别新插件的引入、旧插件的移除,实现动态加载插件。
本发明使用core plugin lib统一定义plugin规范,并提供多语言版本的pluginAPI,同时也方便开发者在遵循该规范的基础上实现特定语言的plugin API,使插件的开发具有跨语言的特性。插件是一个完全独立的功能模块,以查询ip地理位置信息的GeoIPplugin插件为例,开发者可以实现以java、python等不同版本的插件,并且将相关的依赖统一打包到GeoIP目录下即可。
如图3所示,本发明提供一种灵活的plugin逻辑架构,plugin分成4部分:一、标签tag,判断日志数据来源是否符合要求;二、前置插件,表明该插件处理哪些插件的后续数据;注:仅debug模式有效;三、plugin内部核心处理逻辑,实现日志解析的核心业务;四、后续接入插件,表示该插件的输出数据交由下一阶段哪些后续插件处理;注:仅debug模式有效。插件的输入输出均为json数据,为插件之间的数据传输提供了保证。
本发明日志数据流处理链提供灵活的日志处理数据链定义方式;主要表现在:一、使用插件数据链剧本plugin_playbook.yml定义日志数据经过不同插件的处理流程;plugin_playbook.yml文件从标签(tag)、前置插件名称(pre_plugin,具有唯一性)、输入字段、输出字段,四个维度以数组形式定义一个插件处理的日志来源、该插件接到哪些插件后面作为后续处理、具体输入、输出字段。二、动态定义单独plugin的前驱、后置插件(该功能仅在***debug模式下有效),主要为方便开发人员进行插件的开发调试,实现单个插件的灵活动态数据流处理链定义。
Claims (8)
1.一种云环境下的多源日志数据处理***,其特征在于:所述的***包括日志源输入模块、数据预处理模块、数据处理模块和数据存储模块;所述日志源输入模块提供多源日志接入的功能;数据预处理模块提供数据分类功能;数据处理模块提供灵活的日志处理插件的管理功能;数据存储模块提供后端数据存储管理功能。
2.根据权利要求1所述的***,其特征在于:所述日志源接入模块将不同来源的原始、异构文本格式日志统一接入日志数据流处理平台。
3.根据权利要求1所述的***,其特征在于:所述数据预处理模块对不同来源的日志在日志接收端统一、集中管理并特征标识tag;所述tag用二维向量<ip,path>表示;所述ip为网络连接默认参数,所述path为日志通用参数。
4.根据权利要求2所述的***,其特征在于:所述数据预处理模块对不同来源的日志在日志接收端统一、集中管理并特征标识tag;所述tag用二维向量<ip,path>表示;所述ip为网络连接默认参数,所述path为日志通用参数。
5.根据权利要求1至4任一项所述的***,其特征在于:所述数据处理模块对日志数据进行二次处理,通过管理的日志处理插件实现;包括多语言插件模块、特定功能插件模块、插件管理模块;
多语言插件模块提供一个通用的核心插件库,提供Java、Python、Ruby、Go等多种语言版本的插件API,实现跨语言的通用插件平台;
插件管理模块将插件代码复制到工程目录plugins下,***通过定时扫描plugins目录实现动态加载插件,包括插件加载、卸载、异常管理和行为管理;插件加载、卸载实现特定功能插件模块的加载或卸载;插件行为管理提供一个plugin_playbook.yml文件统一规划整个数据流的处理流程。
6.根据权利要求5所述的***,其特征在于:所述的插件是输入、输出均为json数据类型且功能完全独立的日志解析模块;模块之间可灵活组合、可共用,具体的组合方式通过解析plugin_playbook.yml文件实现。
7.根据权利要求5所述的***,其特征在于:所述的插件分成四部分,包括:一、标签tag,判断日志数据来源是否符合要求;二、前置插件,表明该插件处理哪些插件的后续数据;三、插件内部核心处理逻辑,实现日志解析的核心业务;四、后续接入插件,表示该插件的输出数据交由下一阶段哪些后续插件处理。
8.一种云环境下的多源日志数据处理方法,其特征在于:所述的方法包括步骤如下:
步骤1:云平台搭建日志数据流二次处理***;
步骤2:接入不同来源的文本日志数据;
步骤3:对不同来源的文本日志数据流通过二维向量<ip,path>进行标签化处理;
步骤4:编辑plugin_playbook.yml文件,定义日志数据流处理链路,确定日志在不同插件之间的处理顺序;
步骤5:插件管理模块扫描并加载plugins目录下所有插件;
步骤6:解析plugin_playbook.yml文件,构造完整的数据流解析链路,原始日志文件根据链路标识,按序逐步流传到不同的插件处理;
步骤7:将处理后的日志存储到后端数据处理模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910880320.3A CN110727568A (zh) | 2019-09-18 | 2019-09-18 | 一种云环境下的多源日志数据处理***及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910880320.3A CN110727568A (zh) | 2019-09-18 | 2019-09-18 | 一种云环境下的多源日志数据处理***及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110727568A true CN110727568A (zh) | 2020-01-24 |
Family
ID=69219190
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910880320.3A Pending CN110727568A (zh) | 2019-09-18 | 2019-09-18 | 一种云环境下的多源日志数据处理***及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110727568A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112463772A (zh) * | 2021-02-02 | 2021-03-09 | 北京信安世纪科技股份有限公司 | 日志处理方法、装置、日志服务器及存储介质 |
CN113064869A (zh) * | 2021-03-23 | 2021-07-02 | 网易(杭州)网络有限公司 | 日志处理方法、装置、发送端、接收端设备及存储介质 |
-
2019
- 2019-09-18 CN CN201910880320.3A patent/CN110727568A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112463772A (zh) * | 2021-02-02 | 2021-03-09 | 北京信安世纪科技股份有限公司 | 日志处理方法、装置、日志服务器及存储介质 |
CN113064869A (zh) * | 2021-03-23 | 2021-07-02 | 网易(杭州)网络有限公司 | 日志处理方法、装置、发送端、接收端设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110297689B (zh) | 智能合约执行方法、装置、设备及介质 | |
CN108845940B (zh) | 一种企业级信息***自动化功能测试方法和*** | |
US8832714B1 (en) | Automated service interface optimization | |
US11366713B2 (en) | System and method for automatically identifying and resolving computing errors | |
US11934287B2 (en) | Method, electronic device and computer program product for processing data | |
CN111144839A (zh) | 一种项目构建方法、持续集成***及终端设备 | |
CN110764760B (zh) | 用于绘制程序流程图的方法、装置、计算机***和介质 | |
Zaccarelli et al. | Stream2segment: An open‐source tool for downloading, processing, and visualizing massive event‐based seismic waveform datasets | |
CN113076253A (zh) | 一种测试方法和测试装置 | |
KR20100002259A (ko) | 관련된 제품 정보를 갖는 소프트웨어 카탈로그를 파퓰레이트하기 위한 방법 및 시스템 | |
CN110727568A (zh) | 一种云环境下的多源日志数据处理***及方法 | |
US20190324763A1 (en) | Insertion of custom activities in an orchestrated application suite | |
CN113297081B (zh) | 一种持续集成流水线的执行方法和装置 | |
CN111796855B (zh) | 一种增量版本更新方法、装置、存储介质及计算机设备 | |
CN113419740A (zh) | 程序数据流的分析方法、装置、电子设备及可读存储介质 | |
US20110246967A1 (en) | Methods and systems for automation framework extensibility | |
CN115291928A (zh) | 多种技术栈的任务自动集成方法、装置及电子设备 | |
CN113821486B (zh) | pod库之间依赖关系的确定方法及其装置、电子设备 | |
US20100153326A1 (en) | Rules based fetching of operating platform status | |
CN112835606B (zh) | 灰度发布方法、装置、电子设备、介质 | |
CN110674024A (zh) | 电子设备集成测试***及其方法 | |
CN113918525A (zh) | 数据交换调度方法、***、电子设备、介质及程序产品 | |
Behnamghader et al. | A scalable and efficient approach for compiling and analyzing commit history | |
US10958514B2 (en) | Generating application-server provisioning configurations | |
US9720660B2 (en) | Binary interface instrumentation |
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 |