【入门第3课】Splunk字段提取
前言
Splunk 是一款功能强大的搜索和分析引擎,而字段是splunk搜索的基础,提取出有效的字段就很重要。
当Spklunk开始执行搜索时,会查找数据中的字段。与预定义提取指定字段不同,Splunk可以通过用户自定义从原始数据中动态提取字段。
一、字段提取器
1.1 访问字段提取器
执行事件搜索,左边栏往下,单击提取新字段,进入字段提取器。
1.2 选择示例
在事件列表中,选择一个需要进行字段提取的示例事件。
1.3 选择方法
提供了两种字段提取的方法:正则表达式和分隔符。正则表达式主要用于非结构化数据;而基于表格的结构化数据,使用分隔符即可。
1.4 选择字段
选择需要字段提取的值,下面会出现对话框,对字段名称进行命名。一般我们也可手动编辑正则表达式进行调整。
1.5 验证
通过预览,以确认事件列表的匹配程序,从下图看到,第一次的选择字段还是有部分字段无法识别,那么我们可以进行第二次的字段提取
1.6 保存
在这一步,可以对提取名称和权限进行设置,点击完成来保存提取。
然后可以获取正则表达式
^\w+\s+\w+\s+\d+\s+\d+\s+\d+:\d+:\d+\s+\w+\d+\s+\w+\[\d+\]:\s+\w+\s+\w+\s+\w+\s+\w+\s+\w+\s+(?P<user>\w+) from (?P<ip>[^ ]+)
1.7 提取字段的例子
了解一下Linux secure日志中比较常见的登录日志,如下两条登录记录作为示例:
#失败登录
Thu Nov 05 2023 13:02:24 mailsv1 sshd[5276]: Failed password for invalid user appserver from 194.8.74.23 port 3351 ssh2
#成功登录
Thu Nov 05 2023 13:02:24 mailsv1 sshd[74181]: Accepted password for nsharpe from 10.2.10.163 port 4245 ssh2
#invalid user 登录
Thu Nov 05 2023 13:02:24 mailsv1 sshd[5276]: Failed password for invalid user appserver from 194.8.74.23 port 3351 ssh2
先做第一次的字段提取工作,我们针对1、2条进行提取,基本上他们的格式一致,提取后我们进行保存
但是“invalid user”则不能成功识别,需要针对它进行第二次的提取工作,都是提取相同的字段,保存
最后完成提取的结果如下:关于用户账号登录成功/失败的日志字段均能成功识别
最后可以在search上面验证一个字段识别的情况。
二 新字段提取
在Splunk Web中,提供了一种快速设置字段提取的方式,只需提供正则表达式,就可以直接完成新字段提取
2.1 新字段提取
(1)设置→ 字段提取→新字段提取
设置名称、sourcetype,写入正则表达式,点击保存即可。
2.2 查看字段提取规则
在字段提取页面中,搜索关键词,可找到刚才设置的字段提取规则。
三、使用搜索命令提取字段
通过搜索命令以不同方式提取字段,如rex、extract、xpath等。但这种方式仅适用于搜索过程中的返回的中间结果,无法新建字段重复使用。
sourcetype="secure-2" port "failed password"
| rex field=_raw "(?P<user>\w+)\sfrom\s(?P<ip>[^ ]+)"
| table user,ip