elasticsearch 将日志消息时间戳转换为UTC,然后将其存储在Elasticsearch中,elasticsearch,logstash,utc,elasticsearch,Logstash,Utc" /> elasticsearch 将日志消息时间戳转换为UTC,然后将其存储在Elasticsearch中,elasticsearch,logstash,utc,elasticsearch,Logstash,Utc" />

elasticsearch 将日志消息时间戳转换为UTC,然后将其存储在Elasticsearch中

elasticsearch 将日志消息时间戳转换为UTC,然后将其存储在Elasticsearch中,elasticsearch,logstash,utc,elasticsearch,Logstash,Utc,我使用Logstash收集和解析Tomcat访问日志消息,并将解析后的消息存储在Elasticsearch中。 我使用Kibana在Elasticsearch中显示日志消息。 目前我正在使用Elasticsearch 2.0.0、Logstash 2.0.0和Kibana 4.2.1 访问日志行如下所示: 02-08-2016 19:49:30.669 ip=11.22.333.444 status=200 tenant=908663983 user=0a4ac75477ed42cfb37d

我使用Logstash收集和解析Tomcat访问日志消息,并将解析后的消息存储在Elasticsearch中。 我使用Kibana在Elasticsearch中显示日志消息。 目前我正在使用Elasticsearch 2.0.0、Logstash 2.0.0和Kibana 4.2.1

访问日志行如下所示:

02-08-2016 19:49:30.669 ip=11.22.333.444  status=200  tenant=908663983 user=0a4ac75477ed42cfb37dbc4e3f51b4d2 correlationId=RID-54082b02-4955-4ce9-866a-a92058297d81  request="GET /pwa/rest/908663983/rms/SampleDataDeployment HTTP/1.1" userType=Apache-HttpClient requestInfo=- duration=4 bytes=2548 thread=http-nio-8080-exec-5 service=rms itemType=SampleDataDeployment itemOperation=READ dataLayer=MongoDB incomingItemCnt=0 outgoingItemCnt=7 
日志文件(例如02-08-2016 19:49:30.669)中显示的时间是当地时间(不是UTC!)

以下是我如何解析消息行:

filter {

        grok {
            match => { "message" => "%{DATESTAMP:logTimestamp}\s+" }
        }

        kv {}

        mutate {
            convert => { "duration" => "integer" }
            convert => { "bytes" => "integer" }
            convert => { "status" => "integer" }
            convert => { "incomingItemCnt" => "integer" }
            convert => { "outgoingItemCnt" => "integer" }

            gsub => [ "message", "\r", "" ]
        }

        grok {
            match => { "request" => [ "(?:%{WORD:method} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpVersion})?)" ] }
            overwrite => [ "request" ]  
        }

}
我希望Logstash将从日志消息(“logTimestamp”字段)读取的时间转换为UTC,然后将其存储在Elasticsearch中

有人能帮我吗

--

我已将日期筛选器添加到处理中,但我必须添加时区

有没有一种方法可以在不提供本地时区的情况下将日期转换为UTC,以便Logstash获取其运行机器的时区


这个问题背后的动机是我想在我的所有部署中,在不同的时区中使用相同的配置文件。

这就是日期{}过滤器的作用-解析包含日期字符串的字符串字段,替换[@timestamp]在UTC中具有该值的字段。

这也可以在摄取处理器中完成,如下所示:

PUT _ingest/pipeline/chage_local_time_to_iso
{
  "processors": [
    {
      "date" : {
        "field" : "my_time",
        "target_field": "my_time", 
        "formats" : ["dd/MM/yyyy HH:mm:ss"],
        "timezone" : "Europe/Madrid"
      }
    }
  ]
}
PUT _ingest/pipeline/chage_local_time_to_iso
{
  "processors": [
    {
      "date" : {
        "field" : "my_time",
        "target_field": "my_time", 
        "formats" : ["dd/MM/yyyy HH:mm:ss"],
        "timezone" : "Europe/Madrid"
      }
    }
  ]
}