请求协助调试Automation Anywhere时间戳的Grok匹配模式
搞定Grok解析(MM/dd/yyyy HH:mm:ss AM/PM)时间戳的问题
嘿,我来帮你解决这个Grok解析的问题!你的时间戳是带括号的(1/15/2018 3:00:32 AM),要拆分出日期、时间和AM/PM却没得到正确输出,大概率是模式没处理好特殊字符或者格式匹配有误,咱们一步步来捋清楚:
精准匹配的Grok模式
先给你一个能完美适配这个格式的Grok模式:
\(%{DATE_US:date} %{TIME:time} %{AMPM:ampm}\)
模式拆解(帮你理解每一部分)
\(:因为括号是正则里的特殊字符,所以必须加转义符\来匹配开头的左括号%{DATE_US:date}:专门匹配美式日期格式MM/dd/yyyy(比如你的1/15/2018),匹配结果会存入名为date的字段%{TIME:time}:匹配HH:mm:ss格式的时间(比如3:00:32),结果存入time字段%{AMPM:ampm}:自动识别AM/PM标识,结果存入ampm字段\):同样转义后匹配结尾的右括号
常见踩坑点(你可能犯了这些错)
- 忘记转义括号:如果你的模式里直接写
(...)而不是\(...\),Grok会把括号当成正则分组符号,而不是普通字符,直接导致匹配失败 - 日期格式选错:比如误用了
DATE_EU(欧式的dd/MM/yyyy格式),而你的是美式日期,这会让date字段解析出错误的值 - 索引字段映射问题:就算Grok匹配成功了,如果你的索引里
date字段被设成了text类型,而不是date类型,后续也没法正常使用日期相关的功能。建议在索引模板里给字段设置正确的映射:"mappings": { "properties": { "date": { "type": "date", "format": "MM/dd/yyyy" }, "time": { "type": "text" }, "ampm": { "type": "keyword" } } }
快速测试方法
你可以用Kibana自带的Grok Debugger先验证模式:
- 输入测试数据:
(1/15/2018 3:00:32 AM) - 粘贴上面的Grok模式,看看是不是能正确拆出
date、time、ampm三个字段
如果还是有问题,检查一下你的日志管道配置,确认Grok过滤器是不是正确应用到了目标字段上哦。
内容的提问来源于stack exchange,提问作者Kumar K
相关产品推荐
相关产品推荐

