技本功丨web服务器日志自动解析工具不是唯一的工具,但却承包了我最深沉的爱!

微信图片_20181206152739.png

曾经有个web服务器日志自动解析工具摆在我面前,我没有珍惜。等我失去的时候我才追悔莫及,人世间最痛苦的事莫过于此。

微信图片_201812061527391.png

事情就是这样发生的——

当前web服务器的多样化使得访问日志的数据清洗变得越来越复杂,企业需要投入专业的数据清洗人员编写数据清洗规则(解析规则或者解析正则),或者需要关心web服务器访问日志的生成规则。

手写web服务数据解析规则存在以下3个问题:

1、需要投入专业技术人才完成编写,成本高;

2、人工书写解析规则容易犯错;

3、解析规则生成不可复用,新的web服务需要重新编写。

如果能自动生成web服务器的日志,将大大提高web服务器日志接入和数据可视化速度。于是我打算好好研究一番,看看怎么可以实现,浣熊大神知晓后,对我说:你可以试试袋鼠云web服务器日志自动解析工具。

当时,我自我牛逼地觉得凭自己的技术实力,完全可以不用借助啥子工具。但是,当我听到浣熊大神详细介绍完袋鼠云技术团队自研的日志解析规则自动生成组件,听到它不仅适用于nginx、apcahe、iis服务器,同时兼容类似这三种服务器日志规范的其他web服务器后,我当场就震惊了!

微信图片_201812061527392.png

如果上天能够给我一个再来一次的机会,我会对袋鼠云日志团队的浣熊说四个字:请给我用,如果非要在前面加上一个期限,我希望是……一万年……

微信图片_201812061527393.png

独乐乐不如众乐乐,所以在此特地将浣熊大神的技术笔记(以下内容将详细说明web日志解析规则自动生成的过程,关键步骤有图片演示)和总结发言分享给大家,收好不谢!

微信图片_201812061527394.png

web服务器的日志往往有着一定的规范,比如nginx的日志规范如图所示

微信图片_201812061527395.png

 如上设置,日志内容将严格按照设定的字段顺序打印,缺失的字段会适用占位符,如符号‘-‘,各字段被分隔符依次分开。

以下内容的基本原理是:

1、日志取样,获取行日志分割符,把日志按照分隔符拆分;

2、依次解析分割后的字段,生成字段类型序列;

3、按照字段类型和顺序,依次给字段命名,生成解析规则;

以上过程的流程图如图所示:

微信图片_201812061527396.png

样例演示

使用如上的方法生成下图所示的nginx样例日志的解析规则:

微信图片_201812061527397.png

首先进行字段拆分,按照字段顺序生成正则序列,如下图所示,样例日志中依次包含IP、时间、URL,数字和用户浏览器标识useragent字段;

微信图片_201812061527398.png

然后按照正则序列对字段进行映射,样例日志是nginx日志,nginx日志的默认类型和字段映射关系如下:

IP->remoteAddr,

TIMESTAMP->timeLocal,

URL->request,

NUM1->status,

NUM2->bodybytesSend,

USERAGENT->useragent;

映射之后生成默认解析规则,结果如下图所示,生成结束。

然后对生成的解析规则进行多轮检验并重复以上过程,最终生成匹配度最高的解析规则。

微信图片_201812061527399.png

浣熊说

(1)本发明提供的web服务器访问日志解析规则自动生成的方法,配置简单,自动化生成解析规则,且适用于主流web服务器访问日志,减少人为编写解析规则的负担。

(2)本发明提供的web服务器访问日志自动解析系统,一键生成web访问日志数据透析仪表板,降低企业分析日志的难度。

(3)基于以上方法,袋鼠日志帮助企业实现了在分钟内搭建web服务器日志可视化场景。

微信图片_2018120615273910.png


猜你喜欢

转载自blog.51cto.com/13766600/2327061