【发布时间】: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