实时日志处理方法与装置与流程

文档序号:16207872发布日期:2018-12-08 07:20阅读:195来源:国知局
实时日志处理方法与装置与流程
本公开涉及数据处理
技术领域
,具体而言,涉及一种实时日志处理方法与装置。
背景技术
在日常的工作中,系统常会出现异常故障,此时通过系统监控系统查看线上系统运行状况、机器基础指标、和接口等性能指标往往无法准确定位故障。从以往的经验来看,如果系统技术指标层面没有问题,那么出问题的地方往往是一些业务层面的故障,如线上可用红包酒店数量下降,用户红包数下降等。而排查这些问题往往很让人头痛,因为没有实时的数据来支持这样的分析,只有通过一天后一些数据统计来推测出来问题,这样就浪费了大量宝贵的时间,甚至可能造成严重的经济损失。因此,急需一种能够对业务数据进行实时收集分析的方法,从具体业务层面上分析系统故障问题所在。同时,对于产品的一些需求,也可以打一些点,来辅助分析需求的合理性,从而为后续需求评估做数据支持。此外,由于不同业务系统需要统计的数据可能有很多种,作为系统设计不可能为每一种是业务场景都设计一套分析流程。因此需要一套通用的、可配置的实时多维度日志处理方法。需要说明的是,在上述
背景技术
部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。技术实现要素:本公开的目的在于提供一种实时日志处理方法与装置,用于至少在一定程度上克服由于相关技术的限制和缺陷而导致的一个或多个问题。根据本公开实施例的第一方面,提供一种实时日志处理方法,包括:获取日志流,筛选出符合预设格式的日志;读取日志,根据日志生成第一统计单元,第一统计单元包括至少一个公共维度与一个属于一指标的统计维度;读取数据库,判断数据库中是否存在第二统计单元,第二统计单元除统计维度的维度值外均与第一统计单元相同;如果不存在第二统计单元,在数据库中创建第二统计单元,第二统计单元与第一统计单元相同;如果存在第二统计单元,将第一统计单元的统计维度的维度值累加进第二统计单元的统计维度的维度值;展示数据库中至少一个统计维度的维度值。在本公开的一种示例性实施例中,根据日志生成第一统计单元包括:根据配置表与日志生成第一统计单元,配置表包括需统计的指标名称与统计维度名称。在本公开的一种示例性实施例中,读取数据库包括:判断是否达到预设条件;如果达到预设条件,读取数据库;如果未达到预设条件,将第一统计单元保存在缓冲区。在本公开的一种示例性实施例中,数据库包括多个槽,在数据库中创建第二统计单元包括在数据库的一个槽中创建第二统计单元。在本公开的一种示例性实施例中,展示数据库中至少一个统计维度的维度值包括:响应客户端查询指令按维度图表化展示维度值。根据本公开的一个方面,提供一种实时日志处理装置,包括:日志筛选模块,用于获取日志流,筛选出符合预设格式的日志;日志提取模块,用于读取日志,根据日志生成第一统计单元,第一统计单元包括至少一个公共维度与一个属于一指标的统计维度;维度统计模块,用于读取数据库,在数据库中创建与第一统计单元相同的第二统计单元或将第一统计单元的统计维度的维度值累加进第二统计单元的统计维度的维度值;维度展示模块,用于展示数据库中至少一个统计维度的维度值。在本公开的一种示例性实施例中,日志提取模块包括:配置表,用于提供需统计的指标名称与统计维度名称。在本公开的一种示例性实施例中,维度统计模块包括:写入判断模块,用于在达到预设条件时读取数据库以及在未达到预设条件时将第一统计单元保存在缓冲区。根据本公开的一个方面,提供一种实时日志处理装置,包括:存储器;以及耦合到所属存储器的处理器,处理器被配置为基于存储在存储器中的指令,执行如上述任意一项的方法。根据本公开的一个方面,提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现如上述任意一项的实时日志处理方法。本公开的实时日志处理方法通过提取预设类型的日志,统计其统计维度的维度值并图表化展示统计结果,实现了日志分析自动化,提高了系统分析效率;此外,通过使用配置表设置需统计的指标与维度,使得本方法可以根据设置的指标和维度将维度统计结果实时展示出来,增强了本方法的灵活性,扩大了本方法的使用范围。因此,本方法能够帮助业务人员分析线上系统各个维度的信息,从而解决问题,提高工作效率。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。附图说明此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1示意性示出本公开示例性实施例中实时日志处理方法的流程图。图2示意性示出本公开示例性实施例中展示实时日志维度统计结果的展示示意图。图3示意性示出本公开示例性实施例中展示实时日志维度统计结果的另一种展示示意图。图4示意性示出本公开示例性实施例中展示实时日志维度统计结果的再一种展示示意图。图5示意性示出本公开示例性实施例中另一种实时日志处理方法的流程图。图6示意性示出本公开一个示例性实施例中一种实时日志处理装置的方框图。图7示意性示出本公开一个示例性实施例中另一种实时日志处理装置的方框图。具体实施方式现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。此外,附图仅为本公开的示意性图解,图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。下面结合附图对本公开示例实施方式进行详细说明。图1示意性示出本公开示例性实施例中一种实时日志处理方法的流程图。参考图1,实时日志处理方法100可以包括:步骤s102,获取日志流,筛选出符合预设格式的日志。步骤s104,读取日志,根据日志生成第一统计单元,第一统计单元包括至少一个公共维度与一个属于一指标的统计维度;步骤s106,读取数据库,判断数据库中是否存在第二统计单元,第二统计单元除统计维度的维度值外均与第一统计单元相同;步骤s108,如果不存在第二统计单元,在数据库中创建第二统计单元,第二统计单元与第一统计单元相同;步骤s110,如果存在第二统计单元,将第一统计单元的统计维度的维度值累加进第二统计单元的统计维度的维度值;步骤s112,展示数据库中至少一个统计维度的维度值。本实施例的实时日志处理方法通过自动提取预设类型的日志,统计其维度值并图表化展示统计结果,实现了日志分析自动化,提高了系统分析效率。下面对方法100的各步骤进行详细说明。步骤s102,获取日志流,筛选出符合预设格式的日志。本公开的预设格式可以根据具体需求设置。在一些实施例中,预设格式可以为业务代码需要监控的部分的日志格式,可以通过使用log4j将该预设格式的日志写入本地磁盘。具体步骤可以为:在aos配置logagent获取日志流,并将获取到的日志流发送到kafka集群。使用storm集群中的spout从kafka集群中拉取数据,判断日志格式是否符合预设格式,若不符合预设格式即将其丢掉,若符合预设格式则进入步骤s104。其中,aos为基于javaee技术体系的标准功能可复用、通用模块可配置的应用基础平台;logagent是部署在每台服务器上的一个deamon进程,可以作为日志数据的传输通道对外提供http服务拉取日志;log4j是apache的一个开源日志操作包,通过使用一个配置文件来灵活地进行配置log4j,可以控制日志信息输送的目的地、每一条日志的输出格式以及通过定义每一条日志信息的级别控制日志的生成过程而不需要修改应用的代码;kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据;storm是一个开源的分布式实时计算框架,适用于处理潜在无限的流式数据。表1是本公开示例性实施例中预设格式的日志的字段示例。参考表1,预设格式的日志可以包括业务线、频道、日期时间、服务器ip地址、机器名以及指标数组等字段。表1:字段类型说明busilinestring业务线appnamestring频道logtimestring日期时间hostipstring服务器ip地址hostnamestring机器名metricslist指标数组,详见指标说明。表2是表1中指标数组的具体内容。参考表2,指标数组可以包括指标名称、维度以及当前指标值等字段。表2:字段类型说明namestring指标名称dimensionmap维度valueinteger维度值预设格式的日志的字段可以有多种,本公开对此不作特殊限定。步骤s104,读取日志,根据日志生成第一统计单元,第一统计单元包括至少一个公共维度与一个属于一指标的统计维度。表3是根据如表1所示的日志生成的第一统计单元的示例格式。参考表3,第一统计单元可以包含关于一条日志的业务线、频道、指标名称、维度名称、日期时间、记录数以及值总和等字段。表3:在上表中,第一统计单元被以key-value形式存储,key为维度名,value为维度值。其中,业务线、频道以及日期时间等字段记录公共维度,指标名称为统计维度所属的指标,维度名称为统计维度的名称,维度值为统计维度的维度值。为了可以根据实际需求灵活修改统计对象,在本公开的一种示例性实施例中,根据日志生成第一统计单元包括:根据配置表与日志生成第一统计单元,配置表包括需统计的指标名称与统计维度名称,也包含了每个指标和其统计维度的对应关系。表4是本示例性实施例中配置表的示意说明。参考表4,配置表可以包括业务线、频道、指标名称以及维度描述等字段,用以提供统计范围信息。其中维度描述字段可以包括维度表索引,如{"version":1,"type":2}。可以理解的是,本配置表仅为示例性,本领域相关技术人员可根据实际情况自行设置具体内容。表4:字段类型说明businesslinestring业务线appnamestring频道metricnamestring指标名称dimensionmap维度描述步骤s106,读取数据库,判断数据库中是否存在第二统计单元,第二统计单元除统计维度的维度值外均与第一统计单元相同。步骤s108,如果不存在第二统计单元,在数据库中创建第二统计单元,第二统计单元与第一统计单元相同。步骤s110,如果存在第二统计单元,将第一统计单元的统计维度的维度值累加进第二统计单元的统计维度的维度值。即将第一统计单元作为key放入map中,当map中已存在相同的key时,将所有相同的key的维度值进行累加。表5是第二统计单元格式的示例说明。参考表5,与第一统计单元不同的是,“维度值”字段以“值总和”字段代替,用于记录该key相同的统计维度的维度值的总和。在一些示例性实施例中,第二统计单元还可以包括“记录数”字段,用于记录累加的第一统计单元的数量。表5:字段类型说明businesslinestring业务线appnamestring频道metricnamestring指标名称dimensionstring维度名称datetimedate日期时间countinteger记录数suminteger值总和需要注意的是,表1至表5中所示的各字段仅为示例性说明,实际应用中,还可以设置其他字段,本公开对此不作特殊限制。步骤s112,展示数据库中至少一个统计维度的维度值。在本公开的一种示例性实施例中,展示数据库中至少一个统计维度的维度值既可以包括响应客户端查询指令按维度图表化展示统计结果,也可以包括实时图表化展示统计结果。图2、图3和图4是本公开示例性实施例中展示实时日志维度统计结果的三种展示示意图。参考图2,可以通过饼图或其他统计图表的方式根据统计结果展示维度百分比,展示的触发条件包括但不限于用户基于ui界面查询。参考图3,可以通过用户点选确定统计结果展示的形式和范围,例如如图所示的以曲线图形式展示“每分钟计数”维度的维度值的变化。参考图4,不但可以展示如图4所示的每分钟计数的总数,还可以按更细化的设置展示某一具体子维度的维度值的变化。可以理解的是,上述三种图表仅为示意性的,具体展示统计结果的形式与方法可以在本公开构思基础上自由设置,本公开不以此为限。图5是本公开示例性实施例中另一种实时日志处理方法的流程图。参考图5,方法500可以包括:步骤s502,获取日志流,筛选出符合预设格式的日志。步骤s504,读取日志,根据日志生成第一统计单元,第一统计单元包括至少一个公共维度与一个属于一指标的统计维度。步骤s506,判断是否达到预设条件。步骤s508,如果未达到预设条件将第一统计单元保存在缓冲区延迟队列中。步骤s510,如果达到预设条件,读取数据库,判断数据库中是否存在第二统计单元,第二统计单元除统计维度的维度值外均与第一统计单元相同;步骤s512,如果不存在第二统计单元,在数据库中创建第二统计单元,第二统计单元与第一统计单元相同;步骤s514,如果存在第二统计单元,将第一统计单元的统计维度的维度值累加进第二统计单元的统计维度的维度值;步骤s516,展示数据库中至少一个统计维度的维度值。在本公开的一种示例性实施例中,读取数据库可以包括判断是否达到预设条件;如果达到预设条件,读取数据库;如果未达到预设条件,将第一统计单元保存在缓冲区。上述预设条件可以包括时间或待写入条目数等限制条件,本公开对此不作限定。在本公开的一种示例性实施例中,预设条件例如可以为每分钟。通过采用每分钟将统计结果写入数据库的方式,既能保证实时性,又能减少数据库写入压力。此外,由于线上数据量较大,传统的关系型数据库不太适合这种场景,在本公开的一种示例性实施例中可以采用mongodb数据库兼顾大数据量存储和快速查询。在本公开的一种示例性实施例中,数据库包括多个槽,在数据库中创建第二统计单元包括在数据库的一个槽中创建第二统计单元。为了避免所有数据都存入一个表,参照数据库分表原则,引入“槽”的概念。一个“槽”即为数据库中的一个表,是预先建好的。通过配置表配置需要统计的指标和维度值后,系统可以自动为其分配“槽”。分配策略例如可以为根据数据库表的大小和增长率等维度,将新增的指标优先分配给使用较少的槽。当使用分槽存储策略时,第一统计单元的相应字段可以为{业务线}-{频道}-{指标}-{维度}-{时间}-{数据表槽id}。本示例性实施例的实施日志处理方法通过使用缓存和分表对统计结果进行存储,有效提高了大数据实时处理的效率,减轻了数据库使用压力。对应于上述方法实施例,本公开还提供一种实时日志处理装置,可以用于执行上述方法实施例。图6示意性示出本公开一个示例性实施例中一种实时日志处理装置的方框图。参考图6,实时日志处理装置600可以包括:日志筛选模块602,用于获取日志流,筛选出符合预设格式的日志;日志提取模块604,用于读取日志,根据日志生成第一统计单元,第一统计单元包括至少一个公共维度与一个属于一指标的统计维度;维度统计模块606,用于读取数据库,在数据库中创建与第一统计单元相同的第二统计单元或将第一统计单元的统计维度的维度值累加进第二统计单元的统计维度的维度值;维度展示模块608,用于展示数据库中至少一个统计维度的维度值。在本公开的一种示例性实施例中,日志提取模块包括:配置表610,用于提供需统计的指标名称与统计维度名称。在本公开的一种示例性实施例中,维度统计模块包括:写入判断模块612,用于在达到预设条件时读取数据库以及在未达到预设条件时将第一统计单元保存在缓冲区。由于装置600的各功能已在其对应的方法实施例中予以详细说明,本公开于此不再赘述。根据本公开的再一个方面,提供一种实时日志处理装置,包括:存储器;以及耦合到所属存储器的处理器,处理器被配置为基于存储在存储器中的指令,执行如上述任意一项的方法。该实施例中的装置的处理器执行操作的具体方式已经在有关该实时日志处理方法的实施例中执行了详细描述,此处将不做详细阐述说明。图7是根据一示例性实施例示出的一种装置700的框图。装置700可以是智能手机、平板电脑等移动终端。参照图7,装置700可以包括以下一个或多个组件:处理组件702,存储器704,电源组件706,多媒体组件708,音频组件710,传感器组件714以及通信组件716。处理组件702通常控制装置700的整体操作,诸如与显示,电话呼叫,数据通信,相机操作以及记录操作相关联的操作等。处理组件702可以包括一个或多个处理器718来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件702可以包括一个或多个模块,便于处理组件702和其他组件之间的交互。例如,处理组件702可以包括多媒体模块,以方便多媒体组件708和处理组件702之间的交互。存储器704被配置为存储各种类型的数据以支持在装置700的操作。这些数据的示例包括用于在装置700上操作的任何应用程序或方法的指令。存储器704可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。存储器704中还存储有一个或多个模块,该一个或多个模块被配置成由该一个或多个处理器718执行,以完成上述任一所示方法中的全部或者部分步骤。电源组件706为装置700的各种组件提供电力。电源组件706可以包括电源管理系统,一个或多个电源,及其他与为装置700生成、管理和分配电力相关联的组件。多媒体组件708包括在装置700和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。音频组件710被配置为输出和/或输入音频信号。例如,音频组件710包括一个麦克风(mic),当装置700处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器704或经由通信组件716发送。在一些实施例中,音频组件710还包括一个扬声器,用于输出音频信号。传感器组件714包括一个或多个传感器,用于为装置700提供各个方面的状态评估。例如,传感器组件714可以检测到装置700的打开/关闭状态,组件的相对定位,传感器组件714还可以检测装置700或装置700一个组件的位置改变以及装置700的温度变化。在一些实施例中,该传感器组件714还可以包括磁传感器,压力传感器或温度传感器。通信组件716被配置为便于装置700和其他设备之间有线或无线方式的通信。装置700可以接入基于通信标准的无线网络,如wifi,2g或3g,或它们的组合。在一个示例性实施例中,通信组件716经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件716还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。在示例性实施例中,装置700可以被一个或多个应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。在本公开的一种示例性实施例中,还提供了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现如上述任意一项的实时日志处理方法。该计算机可读存储介质例如可以为包括指令的临时性和非临时性计算机可读存储介质。本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本
技术领域
中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和构思由权利要求指出。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1