Logstash 日志存储日期解析不同

Logstash 日志存储日期解析不同,logstash,Logstash,我正在尝试创建一个筛选器来解析日志文件中的日期。过滤器的设置如下所示: filter { date { match => [ "timestamp", "yyyy-MM-dd HH:mm:ss,SSS" ] } } [2018-09-18 10:13:17,623] [main] INFO com.test.pack - Message [2018-09-18 10:13:17,634] [main] INFO com.test.pack -

我正在尝试创建一个筛选器来解析日志文件中的日期。过滤器的设置如下所示:

filter {
    date {
            match => [ "timestamp", "yyyy-MM-dd HH:mm:ss,SSS" ]
    }
}
[2018-09-18 10:13:17,623] [main] INFO  com.test.pack - Message
[2018-09-18 10:13:17,634] [main] INFO  com.test.pack - Message
[2018-09-18 10:13:17,641] [main] INFO  com.test.pack - Message
相关日志消息的结构如下所示:

filter {
    date {
            match => [ "timestamp", "yyyy-MM-dd HH:mm:ss,SSS" ]
    }
}
[2018-09-18 10:13:17,623] [main] INFO  com.test.pack - Message
[2018-09-18 10:13:17,634] [main] INFO  com.test.pack - Message
[2018-09-18 10:13:17,641] [main] INFO  com.test.pack - Message
Logstash的输出为:

{
      "host" => "hostname",
"@timestamp" => 2018-09-19T15:19:50.561Z,
   "message" => "[2018-09-18 10:13:17,623] [main] INFO com.test.pack - Message",
      "path" => "/path/to/file.log",
  "@version" => "1"
}
{
      "host" => "hostname",
"@timestamp" => 2018-09-19T15:19:50.561Z,
   "message" => "[2018-09-18 10:13:17,634] [main] INFO com.test.pack - Message",
      "path" => "/path/to/file.log",
  "@version" => "1"
}
{
      "host" => "hostname",
"@timestamp" => 2018-09-19T15:19:50.561Z,
   "message" => "[2018-09-18 10:13:17,641] [main] INFO com.test.pack - Message",
      "path" => "/path/to/file.log",
  "@version" => "1"
}

因此,logstash时间戳在日期和时间上都有所不同。日期为17日的日志消息也显示为19日。你知道我在过滤中遗漏了什么吗?

你还需要一个grok过滤器来从消息中提取时间戳。请试试这样的

filter {
    grok {
            match => {"message" => "[%{TIMESTAMP_ISO8601:timestamp}] [main] %{GREEDYDATA:restOfMessage}"}
  }
    date {
            match => [ "timestamp", "yyyy-MM-dd HH:mm:ss,SSS" ]
             timezone => "Etc/UCT"
    }
}

请在此处选择适当的时区。它可能是EST5EDT、EST、UTC或其他

您还需要一个grok过滤器i来从消息中提取时间戳。请试试这样的

filter {
    grok {
            match => {"message" => "[%{TIMESTAMP_ISO8601:timestamp}] [main] %{GREEDYDATA:restOfMessage}"}
  }
    date {
            match => [ "timestamp", "yyyy-MM-dd HH:mm:ss,SSS" ]
             timezone => "Etc/UCT"
    }
}

请在此处选择适当的时区。它可能是EST5EDT、EST、UTC或其他

这解决了日期问题,但我看到grok提取的时间戳和从日期过滤的时间戳之间有4个小时的差异。“@timestamp”=>2018-09-18T14:13:17.775Z,-----“timestamp”=>“2018-09-18 10:13:17775”您的服务器在哪个时区?东部标准时间用时区更新了答案。请试一试。时区可能是EST或EST5EDT或其他。通过使用Etc/uct进行修复。这修复了日期问题,但我看到grok提取的时间戳和从日期过滤的时间戳之间有4个小时的差异。“@timestamp”=>2018-09-18T14:13:17.775Z,-----“timestamp”=>“2018-09-18 10:13:17775”您的服务器在哪个时区?东部标准时间用时区更新了答案。请试一试。时区可以是EST或EST5EDT或其他。使用Etc/UCT固定