分析日志是一个大数据分析中较为常见的场景。在Unix类操作系统里,Syslog广泛被应用于系统或者应用的日志记录中。Syslog通常被记录在本地文件内,比如Ubuntu内为/var/log/syslog文件名,也可以被发送给远程Syslog服务器。Syslog日志内一般包括产生日志的时间、主机名、程序模块、进程名、进程ID、严重性和日志内容。具体的日志内容如下所示:
Jun 01 17:29:28 localhost bash[39095]: 10.212.143.73 : root : /root : ls --color=auto /var/log/messages Jun 01 17:29:30 localhost bash[39132]: 10.212.143.73 : root : /root : vim /var/log/messages Jun 01 17:29:45 localhost bash[39217]: 10.212.143.73 : root : /root : tail -2 /var/log/messages |
数据最前面为时间,主机名、进程名,可选的进程ID,用户名,最后是日志内容。
请同学们将上面的数据保存到本地,进行如下操作:
1.将日志从文件中提取,并使用正则表达式控件获取日志的内容,分别放于时间、主机名等字段中;
使用文本文件输入控件和正则表达式控件。文本文件从文档中按行获取日志信息,并将其指定为“日志”字段输出到正则表达式控件,再使用正则表达式控件进行正则表达式的字符串匹配及
文本文件输入控件的配置如下图所示
首先使用浏览选择日志文件,再用使用增加按钮添加文件到选中的文件栏中,最后再配置字段页面,如图所示。
正则表达式控件的配置如图21所示,首先选定匹配的字段为日志,再选中为每个捕获组创建一个字段,接着可以使用Test regEx创建并测试正则表达式,如图22所示,最后在捕获组字段中按测试中顺序填入捕获组的字段名称和数据类型即可。
使用的正则表达式如下:
(\w{3} \d{2} [\d:]+) ([\w]+) [\w]+\[(\d+)\]: ([\d.]+) : (\w+) : /\w+ : (.+) |
配置完成后,就可以点击左上角转换按钮进行转换。并可以在spoon界面下的执行结果栏中的Preview data中看到结果,如下图所示。
2.根据上面已经获得的数据,筛选出命令为vim的日志,将上一步捕获而来的字段保存到Excel表格中:
在上一题的基础上,使用过滤记录控件、字段选择控件和Excel输出控件。布局如下图所示。
过滤记录控件配置如图所示:
字段选择控件配置如图所示,先获取全部字段,再在移除页面选择多余字段进行删除,Excel输出控件配置可参考上面的图
配置完成后,可以运行转换,结果如图所示。
3.在第1问结果的基础上,将获取到的时间使用拆分字段控件分成月份、日期、时间三个字段。
在第一问的基础上使用拆分字段控件,具体布局如下图所示:
拆分字段控件配置如下图所示,其中分隔符中需要填入空格,并在字段栏中填入新字段的名称和数据类型。
最后运行转换,得到的结果如图所示。