我正在尝试为 FortiAnalyzer 制作一个解析器。我收到下一种格式的日志(来自 Fortinet 文档的示例):2020-05-12 17:01:16 log_id=0001010018 type=event subtype=system pri=information desc="User login/logout successful" user="admin" userfrom ="JSON(10.100.55.254)" msg="用户'admin',配置文件'Super_User' 从 JSON(10.100.55.254) 注销" session_id=5108 adminprof="Super_User"
所以变量=值。大约有 30-40 个变量,它们的顺序可能会有所不同。
所以我用下一种方式解析信息:
| parse kind=regex (name_of_my_column) with * "log_id" * "=" Log_ID: string "type=" Type: string "subtype=" Subtype: string 等等……当我在一个查询中写 17 个变量时,它给出我的错误:
解析:正则表达式模式超出了允许的最大匹配组。实际 = 17,限制 = 16
当我开始新行时 | parse kind=regex 函数,前一个变量 (#16) 包含变量 #16 之后的所有信息
变量 #17 具有正确的信息。
有人可以提出建议吗,我应该在查询中添加什么才能以正确的方式查看结果?
我也尝试使用 |extend 函数,但我认为,在我的情况下这不是正确的方法,因为变量可以在日志中的不同位置。
将感谢任何建议。
parse-kv
运算符.
例如:
print input = ```2020-05-12 17:01:16 log_id=0001010018 type=event subtype=system pri=information desc="User login/logout successful" user="admin" userfrom="JSON(10.100.55.254)" msg="user 'admin' with profile 'Super_User' logout from JSON(10.100.55.254)" session_id=5108 adminprof="Super_User"```
| parse-kv input as (log_id:string, type:string, subtype:string, pri:string, ['desc']:string, user:string, userfrom:string, msg:string, session_id:long, adminprof:string) with (pair_delimiter=' ', kv_delimiter='=', quote='"')
| project-away input
log_id | 类型 | 亚型 | 初 | 描述 | 用户 | 用户来自 | 消息 | session_id | 管理员教授 |
---|---|---|---|---|---|---|---|---|---|
0001010018 | 活动 | 系统 | 资讯 | 用户登录/注销成功 | 管理员 | JSON(10.100.55.254) | 配置文件为“Super_User”的用户“admin”从 JSON(10.100.55.254) 注销 | 5108 | 超级用户 |