我有一个日志文件,其日期时间格式为'yyyyMMdd_HHmmss_SSS'。我成功地使用_作为分隔符解析它并在ES中获得3个不同的文本字段。但我需要将其转换为ISO_8601,以便按日期或按小时或分钟查询和可视化数据。
答案 0 :(得分:1)
如果您不特别需要ISO-8601,但更关心获取可查询时间戳的事件,the date
filter听起来更适合您。
filter {
date {
match => [ "logdate", "yyyyMMdd_HHmmss_SSS" ]
}
}
这会将@timestamp
字段设置为可日期搜索的字段。
但是,如果你确实需要Grok来完成这项工作,那么你可能最适合使用自定义正则表达式。
(?<logyear>\d{4,})(?<logmonth>\d\d)(?<logday>\d\d)_(and so on)
这利用一位数的捕获来构建你的字符串。