APP下载

日志平台系统应用研究

2018-07-04四川中电启明星信息技术有限公司

电子世界 2018年12期
关键词:日志解析语法

四川中电启明星信息技术有限公司 隆 振 张 捷

0.引言

日志平台系统在这样的背景下孕育而生,它是一个集日志采集、结构化、索引、分析、展现于一体的平台系统,极大简化运维人员的日常工作,提高工作效率,使得相关人员能够很快的定位故障点并进行问题处理。同时,通过日志平台定制日志分析规则、利用定时任务对系统定时分析统计,生成报表和告警信息。实现对应用系统及相关设备的自动化监控与预警。

1.系统概述

日志平台系统由采集层、处理层、存储层、服务层及展示层5部分构成构成。

1.1 采集层

采集层支持多种Agent采集,支持Filebeat、JDBC、 RPC、Syslog等方式的数据采集。

(1)Filebeat

Filebeat 是一个日志文件托运工具,其十分轻量,并且十分稳定。Filebeat会监控日志目录或者制定的日志文件,追踪读取这些文件(追踪文件的变化,持续读取),并转发到指定的output。

(2)JDBC

基于Apache Flume框架实现,主要通过周期性的执行查询语句,从数据库中获取数据,并加以包装处理后,发送到指定的位置。

(3)RPC

RPC(Remote Procedure Call),即远程过程调用,实现包括服务消费者(即服务调用者)和服务提供者。一次RPC 的调用过程为:服务调用方调用RPC 请求到服务方,服务提供方根据调用方提供的参数执行请求方法,将执行结果返回给调用方。

(4)syslog

Unix/Linux系统中的大部分日志都是通过一种叫做syslog的机制产生和维护的。syslog是一种标准的协议,分为客户端和服务器端,客户端是产生日志消息的一方,而服务器端负责接收客户端发送来的日志消息,并做出保存到特定的日志文件中或者其他方式的处理。

1.2 处理层

处理层利用Nginx反向代理实现不信任数据过滤,并将多个收集器组合在一起,统一收集采集端发送来的数据,收集的数据被送至Kafka,Kafka是一种高吞吐量的分布式发布订阅消息系统,收集端生产的数据可以配置多个消费者,完整的消费。同时,当数据处理量不断扩大时也可以非常方便的进行横向扩展。

在日志平台系统中日志信息通过处理,可消费保存到HDFS、ElasticSearch及实时计算框架spark streaming/stome等。

1.3 存储层

日志平台系统使用HDFS和ElasticSearch来进行日志信息进行存储。HDFS上存储日志原文,用于归档。ElasticSearch则存储日志信息的索引,用于提供准实时的索引服务。随着ElasticSearch上存储的数据越来越多,也会将时间相对久远的索引信息迁移到HDFS上进行归档保存。

1.4 服务层

服务层提供日志信息的准实时检索服务、实时计算服务及离线计算服务三大服务

(1)准实时检索服务

准实时检索主要服务于技术人员对日志的分析,也适用于一些对实时性要求不太高的统计计算。检索基于ElasticSearch的全文检索及统计功能,其中全文检索提供基础语法、SQL语法、DSL语法三种方式的数据检索,方便用户定位数据,统计功能提供基于时间分段、字段统计、数值分段、时间直立方等聚合查询服务。

(2)实时计算服务

对实时性要求非常高的数据查询统计需求,采用spark streaming/stome框架,对数据进行处理,实现日志数据查询分析的秒级响应。

(3)离线计算服务

对于日志数据量特别大历史数据,采用MapReduces进行离线计算,并将计算结果存入ElasticSearch、HDFS,方便查看。

1.5 展示层

展示层包含系统配置、日志接入配置等管理用户界面和日志检索统计、告警、任务、报表功能普通用户界面。

(1)管理用户界面

实现对系统权限培训、日志接入配置、采集Agent监控、ealasticsearch索引管理、消息中间件管理等。实现日志接入配置、日志采集处理组件监控、节点扩展优化的管理功能。

在本系统中,Agent的连续通信时间间隔以曲线图的形式持续更新。计算公式为 timestamp(本次)-timestamp(临近的上一次)。理论上时间间隔应该保持为一条直线,如果出现剧烈波动,如变大,可能存在网络异常,间隔大,变小,则可能出现日志量陡增,需要考虑是否添加处理节点,平衡分担数据处理。

系统允许在没有定义解析规则的情况下,就开始介入日志。日志以原文的形式,索引到ElasticSearch中。而后针对具体的日志内容,制定具体的解析规则。日志解析的粒度跟日志的格式,及定义的解析规则密切相关。在定义解析规则后,即可将规则应用到处理端,经过一定的缓存时间后,解析规则就会生效,接下来接入的日志便可按照解析的规则提取生成字段。

(2)普通用户界面

提供日志全文检索及日志分析统计功能:其中全文检索提供三种查询语法,包括基础语法、SQL语法、DSL语法。基础语法支持模糊匹配、正则表达式、通配符、短语等查询方式;SQL语法支持基本的列表查询、聚合查询以及两个查询对象的join、union、minus三种关联查询,DSL时json格式的查询语言,基础语法与SQL语法最终在进行数据检索时也会由相关程序转换为DSL语法进行查询,所以用户可以直接编写json格式的dsl查询语言检索ealasticsearch中的日志数据。日志分析统计提供日志数据聚合分析,包含事件计数、时间分段、数值分段、字段值分类、字段数值、时间值立方等统计方式,用户可以根据实际需要灵活选择统计方式、统计字段、展示方式等,并可以将统计信息保存为定时任务或者图表。

为实现日志信息的自动化查询统计与监控高级,实现定时任务、告警、报表、dashboard等功能,其中定时任务根据用户设置的检索条件、统计规则、执行计划等信息,通过启动定时任务,日志平台将定时执行任务,并将统计结果存储在ealasticsearch中,方便查阅与二次分析;告警根据用户设置的检索条件、统计规则、执行计划、触发条件、告警信息等,通过启动告警,日志平台将定时执行告警,并将统计结果存储在ealasticsearch中,如果查询统计触发了告警规则,系统自动将告警信息以邮件或消息的形式发送给指定用户,方便用户及时发现并解决问题;报表将系统中已保存的通过组合起来,通过定时任务生成pdf格式的报表文件,并将文件存储在系统中提供下载,同时将报表文件直接发送到指定的用户邮箱中;dashboard用于将中的已存图表、告警信息、已存搜索、字段TOP值、日志事件计数等组合到一个页面中,方便实时数据查阅。

2.系统建设应用关键点

2.1 日志采集和汇聚工具选择

不同格式的日志文件分布在成百上千的服务器上,服务器可能是Linux,也可能是Windows。因此,在选择的日志采集工具应该具备以下特点:

跨平台:服务器大部分是Linux,但Windows服务器又有很多。在不同平台间切换最好能做到无缝。

可扩展:能够根据需求方便的增加功能,类似插件式,工具提供框架和基础功能,其他的功能可以通过编写插件的形式提供。

可监控:提供接口能实时监控到工具的运行状态,因为工具的错戳、挂起,就意味着日志的丢失。

容错性:程序内部出现异常时,要能做到日志的回滚。

文档齐全:开发人员持续更新,使得我们能够快速的入手,持续更新说明开发人员关注用户的反馈,并且积极修正Bug。

开源:有问题能够从代码级别分析问题,并且有社区支持。

部署简单:最好能做到“粘贴-运行”,便于运维自动化工具部署。

在比较了Filebeat、Flume和Scribe。它们三者大体功能一致,都扮演了一个数据传输者的角色,可以自定定义数据从哪里来(例如日志,文中称Source),日志到哪里去(例如存到Elastic-Search,文中称Target),同时可以对通过他的日志做一次预处理。除此之外,Flume和Scribe中间还有一层换成,可以简单的理解为一个消息队列。

2.2 日志处理解决方案

多种多样的数据来源的日志数据,按照用户设置的解析规则进行数据解析,如果解析规则有变化,需要暂停数据处理端agent,待更新规则后再次启动处理端agent。为保障日志处理的高效稳定,可以启动多个处理实例,并且可以动态添加处理实例,各处理实例间是对等关系,共同参与日志数据处理。

2.3 日志可视化展现

日志进入索引文件后,用户可以像使用搜索引擎一样使用本系统进行日志搜索,查找满足特定条件的日志。

如果用户对sqlSQL语言和DSLdsl语言有使用经验,可以使用类SQL查询语法、DSLdsl查询语法进行更为灵活的查询统计搜索框编程,达到更为灵活,高效的复杂逻辑处理更为快速的定位问题、解决问题,即搜即得。直达问题本质。

对特定事件、固定阈值等多种方式的定时监控告警。

使用电子邮件、远端接口等多种方式发送自定义告警内容。

以PDF、PNG等形式发送时日报、周报、月报。

3 系统应用展望

3.1 日志、大数据分析

通过Agent、API实时收集系统产生的事件,例如访问、点击等。

通过Spark Stream接口进行流计算,例如分析用户使用使用app的习惯,什么时候是高峰期,主要使用的功能等,便于引导产品的方向和精准运营。

对日志进行数据仓库离线归档。

使用领域:流媒体、电子商务、移动分析、游戏运营等。

3.2 日志审计

通过Agent实时手机日志到日志服务,从此不再担心误删、或被黑客删除。

通过日志查询功能,快速分析访问行为,例如查询某个账户、某个对象、某个操作的操作记录。

通过大数据计算服务队日志进行长时间存储,满足符合规定的审计需求。

适用领域:电子商务、政府平台、网站等。

3.3 问题诊断

开发过程中,对客户端、移动设备、服务端、模块等加入日志,并通过ID进行关联。

收集各个模块日志,通过云监控、流计算等实时获取访问情况。

当请求或订单发生错误是,开发无需登录服务器,直接通过日志查询功能对错误关键字、次数、关联影响等进行查询,快速定位问题,减少影响覆盖面。

适用领域:交易系统、订单系统、移动网络等。

4.结束语

采用基于分布式搜索引擎的实时日志采集与处理技术,实现自动化的系统监控,减少故障排查时间和业务中断时间,提高系统的服务响应能力和服务水平,将系统运维人员充枯燥繁琐的例行工作中解放出来,将精力投入到系统的优化与提升当中去。

同时采用多任务分布式技术对海量日志进行分析挖掘,可以建立科学的分析模型,使得对日志的分析深度与事件的识别准确度得到进一步的提升。通过日志分析预警,能提前对潜在的风险定性或定量的评估,从而采取应对措施来降低风险。这对提高应用系统的安全性、稳定性及其服务能力,保障企业生产正常开展具有重大的意义。

[1](美)拉斐尔.酷奇(Rafal Kue)等著,张世武等译.深入理解ElasticSearch(原书第2版)[M].北京:机械工业出版社,2017,5.

[2]分布式多用户能力的全文搜索引擎ElasticSearach https://www.elastic.co/.

[3]分布式式日志收集系统Apache Flume http://flume.apache.org/.

[4]高吞吐量的分布式发布订阅消息系统Apache Kafka http://kafka.apache.org/.

猜你喜欢

日志解析语法
一名老党员的工作日志
三角函数解析式中ω的几种求法
扶贫日志
跟踪导练(二)4
睡梦解析仪
Book 5 Unit 1~Unit 3语法巩固练习
游学日志
电竞初解析
相机解析
一种基于粗集和SVM的Web日志挖掘模型