Logstash - 自定义时间戳错误

时间:2017-03-26 15:59:54

标签: date timestamp logstash logstash-grok

我正在尝试在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"}
   }

 }

1 个答案:

答案 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" ]
    }
}