elasticsearch,logstash,kibana,Datetime,elasticsearch,Logstash,Kibana" /> elasticsearch,logstash,kibana,Datetime,elasticsearch,Logstash,Kibana" />

Datetime 日志存储配置文件中的日期分析错误

Datetime 日志存储配置文件中的日期分析错误,datetime,elasticsearch,logstash,kibana,Datetime,elasticsearch,Logstash,Kibana,我有以下日志存储配置文件 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}

我有以下日志存储配置文件

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 }
} 
我对此配置的输入是 虚拟计算机来自李奥·梅西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"]
  }
}
过滤器{
格罗克{
匹配=>[
“信息”,
“%{WORD:client}%{WORD:app}(?\S+)%{GREEDYDATA:message}”
]
覆盖=>[“消息”]
}
日期{
匹配=>[“时间戳”,“YYYY-MM-dd HH:MM:ss”]
删除_字段=>[“时间戳”]
}
}

有关“覆盖”选项的解释,请参阅我对的回答。

我喜欢输入“虚拟计算机来自梅西2013-05-15-23:19:27这是废话日志…”我想得到@timestamp=2013-05-15-23:19:27你能帮我吗?如果你使用的是我提供的配置,很难想象你会得到这样的结果。您测试的确切输入字符串是什么?