【问题标题】:Unable to parse date and time from csv log into logstash无法将 csv 日志中的日期和时间解析到 logstash
【发布时间】:2019-04-01 15:51:11
【问题描述】:

我想组合日志文件中的两个字段并将结果用作logstash 的时间戳。

日志文件为 csv 格式,日期格式有些混乱。日期和时间的格式如下:

Datum => 17|3|19
Zeit => 19:21:50

我尝试了以下代码。

filter {
  csv {
    separator => ","
    columns => [ "Datum", "Zeit" ]
  }

  mutate {
     merge => { "Datum" => "Zeit" }
  }

  date {
    match => [ "Datum", "d M yy HH:mm:ss" ]
  }

}

合并部分似乎适用于这个结果

 "Datum" => [
        [0] "17|3|19",
        [1] "23:32:37"
    ]

但是对于日期的转换,我收到以下错误消息:


"_dateparsefailure"

有人可以帮帮我吗?

【问题讨论】:

  • 不是我的语言,但我认为如果您调用“日期”函数,它不会包含时间。在 python 中它的“日期时间”。
  • 您应该在 mutate#merge 之后使用 mutate#join 从数组中获取字符串。另外我认为在 date#match 中,您需要将| 保留在模式中(如d|M|yy)。
  • @ZF007 在logstash中,date filter 将使用提供的模式(这里是d M yy HH:mm:ss)解析提供的字段(这里是Datum),它支持日期和时间。
  • @baudsp 为简短的解释欢呼……无需让我了解。刚刚为 SO 可行性策划了问题 ;-)
  • 谢谢@baudsp。现在我又进了一步。时间和日期字段现在已成功合并。不幸的是,日期仍然无法解析。结果现在看起来像这样:"Datum" => "17|3|19, 23:32:37", [0] "_dateparsefailure"

标签: logstash elastic-stack logstash-configuration


【解决方案1】:

带有以下字段的事件:

"Datum" => "17|3|19"
"Zeit" => "19:21:50"

我有一个工作配置:

mutate {
     merge => { "Datum" => "Zeit" }
}

mutate {
    join => {"Datum" => ","}
}

date {
    match => [ "Datum", "d|M|yy,HH:mm:ss" ]
}

这给了我输出:"@timestamp":"2019-03-17T18:21:50.000Z"

【讨论】:

  • 非常感谢@baudsp。现在它起作用了。你真的让我很开心:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-07
  • 2015-06-17
  • 1970-01-01
相关资源
最近更新 更多