我有以下logstash配置文件
input {
tcp { type => "tcp_test" port => 1514 add_field => [ "log_type", "romote_log" ]}
}
filter {
if [type] == "tcp_test" {
grok {
type => tcp_test
match => [ "message", "%{WORD:client} %{WORD:app}" ]
}
date{
match => ["timestamp", "yyyy-MM-dd-HH:mm:ss"]
locale=>"en"
target => "@timestamp"
}
}
}
output {
elasticsearch { host => localhost }
}
我对此配置的输入是
dummy_computer from_leo_messi 2013-05-15-23:19:27这是等等等等。.
我在kibana中的输出是
我只想要 2013-05-15-23:19:27 作为时间戳。
我怎样才能做到这一点 ?
最佳答案
您的日期过滤器正在尝试解析“时间戳”字段,但是没有此类字段。您必须相应地调整grok过滤器。这有效:
filter {
grok {
match => [
"message",
"%{WORD:client} %{WORD:app} (?<timestamp>\S+) %{GREEDYDATA:message}"
]
overwrite => ["message"]
}
date {
match => ["timestamp", "YYYY-MM-dd-HH:mm:ss"]
remove_field => ["timestamp"]
}
}
有关“覆盖”选项的说明,请参阅我对logstash, syslog and grok的回答。
关于datetime - Logstash配置文件中的日期解析错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26968576/