elasticsearch 日志存储日期格式grok模式,elasticsearch,logstash,logstash-grok,elasticsearch,Logstash,Logstash Grok" /> elasticsearch 日志存储日期格式grok模式,elasticsearch,logstash,logstash-grok,elasticsearch,Logstash,Logstash Grok" />

elasticsearch 日志存储日期格式grok模式

elasticsearch 日志存储日期格式grok模式,elasticsearch,logstash,logstash-grok,elasticsearch,Logstash,Logstash Grok,我有一个日志文件,其日期时间为'yyyyMMdd\u HHmmss\u SSS'格式。我成功地用u作为分隔符解析了它,并在ES中获得了3个不同的文本字段。但我需要将其转换为ISO_8601,以便可以按日期、小时或分钟查询和可视化数据 如果您不特别需要ISO-8601,但更关心事件获取可查询的时间戳,听起来更适合您 filter { date { match => [ "logdate", "yyyyMMdd_HHmmss_SSS" ] } } 这将@timestamp字段

我有一个日志文件,其日期时间为'yyyyMMdd\u HHmmss\u SSS'格式。我成功地用u作为分隔符解析了它,并在ES中获得了3个不同的文本字段。但我需要将其转换为ISO_8601,以便可以按日期、小时或分钟查询和可视化数据

如果您不特别需要ISO-8601,但更关心事件获取可查询的时间戳,听起来更适合您

filter {
  date {
    match => [ "logdate", "yyyyMMdd_HHmmss_SSS" ]
  }
}
这将@timestamp字段设置为日期可搜索字段

然而,如果您确实需要Grok来完成这项工作,那么您可能最适合使用自定义正则表达式

(?<logyear>\d{4,})(?<logmonth>\d\d)(?<logday>\d\d)_(and so on)

这将利用单个数字捕获来构建字符串。

您好,谢谢您的回复+1日期过滤器不适合我的用例,但您的自定义正则表达式完成了这项工作。太棒了。@Raj如果@timestamp更适合您的用例,那么日期过滤器可以针对@timestamp以外的字段。这是target=>fieldname选项。谢谢@sysadmin1138。但在将新的fieldname添加为时间戳后,我无法确定如何通过“按小时按特定日期按客户编号”为登录次数创建“DataTable图”。使用自定义正则表达式Customerlogin得到的结果是:wsname。-------------------------------------11:logdate。-------------------------------------23:logHour.…22:logHour。-------------------------------------客户。计数------------------------------------------XXXXXXXXX 5我看起来像这样。Customerlogin:wsname。-------------------------------------2月11日:日志日期。2月8日:日志日期。-------------------------------------晚上11点:正常工作时间。晚上10点:正常工作时间。--------------------------------------客户。计数------------------------------------------XXXXXXXXX 5