我正在尝试在Logstash中输入一个时间戳字段,我正在收到dateparsefailure消息。
我的留言 -
2014-08-01; 11:00:22.123
管道文件
input {
stdin{}
#beats {
# port => "5043"
# }
}
# optional.
filter {
date {
locale => "en"
match => ["message", "YYYY-MM-dd;HH:mm:ss.SSS"]
target => "@timestamp"
add_field => { "debug" => "timestampMatched"}
}
}
output {
elasticsearch {
hosts => [ "127.0.0.1:9200" ]
}
stdout { codec => rubydebug }
}
有人能告诉我我错过了什么吗?
更新1
我提到了链接 - How to remove trailing newline from message field,现在可以了。
但是,在我的日志消息中,我有多个值而不是timestamp
<B 2014-08-01;11:00:22.123 Field1=Value1 Field2=Value2
当我将此作为输入时,它不起作用。如何读取日志的一部分并将其作为时间戳?
更新2
现在有效。
更改配置文件,如下所示
filter {
kv
{
}
mutate {
strip => "message"
}
date {
locale => "en"
match => ["timestamp1", "YYYY-MM-dd;HH:mm:ss.SSS"]
target => "@timestamp"
add_field => { "debug" => "timestampMatched"}
}
}
答案 0 :(得分:1)
我发布下面的答案和我用来解决问题的步骤,以便我可以帮助像我这样的人。
步骤1 - 我以密钥和值对
的形式阅读消息第2步 - 我修剪了导致解析异常的额外空间
第3步 - 我读取了各个字段中的时间戳值和其他字段。
input {
beats {
port => "5043"
}
}
# optional.
filter {
kv { }
date {
match => [ "timestamp", "yyyy-MM-dd HH:mm:ss,SSS" ]
remove_field => [ "timestamp" ]
}
}
output {
elasticsearch {
hosts => [ "127.0.0.1:9200" ]
}
}