【问题标题】:logstash generate @timestamp from parsed messagelogstash 从解析的消息生成@timestamp
【发布时间】:2015-02-27 07:50:24
【问题描述】:

我有包含一系列此类消息的文件:

component+branch.job                                 2014-09-04_21:24:46   2014-09-04_21:24:49

它是字符串,一些空格,第一个日期和时间,一些空格和第二个日期和时间。目前我正在使用这样的过滤器:

filter {
  grok {
    match => [ "message", "%{WORD:componentName}\+%{WORD:branchName}\.%{WORD:jobType}\s+20%{DATE:dateStart}_%{TIME:timeStart}\s+20%{DATE:dateStop}_%{TIME:timeStop}" ]
  }
}

我想将该消息的 dateStart 和 timeStart 转换为 @timestamp。

我发现有date 过滤器,但我不知道如何在两个单独的字段上使用它。

我也尝试过这样的过滤器:

  date {
    match => [ "message", "YYYY-MM-dd_HH:mm:ss" ]
  }

但它没有按预期工作。

【问题讨论】:

标签: logstash logstash-grok


【解决方案1】:

根据 Magnus Bäck 的建议,我为我的问题创建了解决方案。解决方案是将解析后的数据变为一个字段:

mutate {
  add_field => {"tmp_start_timestamp" => "20%{dateStart}_%{timeStart}"}
}

然后按照我在问题中的建议进行解析。

所以最终的解决方案是这样的:

filter {
  grok {
    match => [ "message", "%{WORD:componentName}\+%{WORD:branchName}\.%{DATA:jobType}\s+20%{DATE:dateStart}_%{TIME:timeStart}\s+20%{DATE:dateStop}_%{TIME:timeStop}" ]
  }
  mutate {
    add_field => {"tmp_start_timestamp" => "20%{dateStart}_%{timeStart}"}
  }
  date {
    match => [ "tmp_start_timestamp", "YYYY-MM-dd_HH:mm:ss" ]
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-29
    • 2021-09-25
    • 2015-06-18
    相关资源
    最近更新 更多