Logstash分析器错误,时间戳格式不正确

Logstash分析器错误,时间戳格式不正确,logstash,logstash-grok,logstash-configuration,logstash-file,Logstash,Logstash Grok,Logstash Configuration,Logstash File,谁能告诉我我做错了什么,或者为什么Logstash不想解析ISO8601时间戳 我收到的错误消息是 失败的操作。。。“错误”=>{“类型”=>“映射程序解析异常”, “原因”=>“未能分析[时间戳]”, 由“=>{”类型“=>”非法参数引起的“\u异常”,“原因”=>”无效 格式:\“2017-03-24 12:14:50\”在\“17-03-24”处格式不正确 12:14:50\“”} 示例日志文件行(IP地址中的最后一个字节故意替换为000) GROK模式(用于验证) 日志存储配置(输入端)

谁能告诉我我做错了什么,或者为什么Logstash不想解析ISO8601时间戳

我收到的错误消息是

失败的操作。。。“错误”=>{“类型”=>“映射程序解析异常”, “原因”=>“未能分析[时间戳]”, 由“=>{”类型“=>”非法参数引起的“\u异常”,“原因”=>”无效 格式:\“2017-03-24 12:14:50\”在\“17-03-24”处格式不正确 12:14:50\“”}

示例日志文件行(IP地址中的最后一个字节故意替换为000)

GROK模式(用于验证)

日志存储配置(输入端):


因此,我很确定这是由字段
timestamp
映射到Elasticsearch中它没有解析到的类型引起的。如果你发布你的索引映射,我很乐意看一看

注意:通过添加
remove\u字段
可以快速解决此问题,因为如果
日期
过滤器成功,该字段的值将被拉入
@时间戳
。现在,在两个字段中存储了相同的值。那么您就不必担心字段的映射了。:)


您可以发布该索引的Elasticsearch映射(特别是
时间戳
)字段吗?谢谢。首先,我看到索引中有两个字段,“@timestamp”和“timestamp”。事实上,后者被映射到一种不同于我在这里发送的格式。
2017-03-24 12:14:50 87.123.123.000 12345678.domain.com GET /smil:stream_17.smil/chunk_ctvideo_ridp0va0r600115_cs211711500_mpd.m4s - HTTP/1.1 200 750584 0.714 "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36" https://referrer.domain.com/video/2107 https fra1 "HIT, MISS" 12345678.domain.com
RAW %{TIMESTAMP_ISO8601:timestamp}%{SPACE}%{IPV4:clientip}%{SPACE}%{HOSTNAME:http_host}%{SPACE}%{WORD:verb}%{SPACE}\/(.*:)?%{WORD:stream}%{NOTSPACE}%{SPACE}%{NOTSPACE}%{SPACE}%{WORD:protocol}\/%{NUMBER:httpversion}%{SPACE}%{NUMBER:response}%{SPACE}%{NUMBER:bytes}%{SPACE}%{SECOND:request_time}%{SPACE}%{QUOTEDSTRING:agent}%{SPACE}%{URI:referrer}%{SPACE}%{WORD}%{SPACE}%{WORD:location}%{SPACE}%{QUOTEDSTRING:cache_status}%{SPACE}%{WORD:account}%{GREEDYDATA}
input {
    file {
      path => "/subfolder/logs/*"
      type => "access_logs"
      start_position => "beginning"
    }
}
filter {
    # skip first two lines in log file with comments
    if [message] =~ /^#/ {
        drop { }
    }

    grok {
        patterns_dir => ["/opt/logstash/patterns"]
        match => { "message" => "%{RAW}" }
    }

    date {
        match => [ "timestamp" , "yyyy-MM-dd HH:mm:ss" ]
        locale => "en"
    }

    # ... (rest of the config omitted for readability)
}
date {
    match => [ "timestamp" , "yyyy-MM-dd HH:mm:ss" ]
    locale => "en"
    remove_field => [ "timestamp" ]
}