elasticsearch,timezone,logstash,Datetime,elasticsearch,Timezone,Logstash" /> elasticsearch,timezone,logstash,Datetime,elasticsearch,Timezone,Logstash" />

Datetime 修改Logstash中的时区

Datetime 修改Logstash中的时区,datetime,elasticsearch,timezone,logstash,Datetime,elasticsearch,Timezone,Logstash,我有一个从MySQL表获取数据的logstash。数据包含一个时间戳字段,该字段保存在MySQL数据库的时区中,即UTC。因此,如果我将“10:27:15”保存为我的应用程序中的时间,DB中的行包含“08:27:15Z”,因为我在欧洲/罗马tz,偏移量为2小时。 当我使用MySQL插件将其输入logstash/es时,记录再次被“取消分区”,我的数据包含“06:27:15Z”。 我正在尝试对我的数据应用正确的TZ,以便在ES中获得“08:27:15Z”。 我试过了,那就是复制一个字段,然后应用T

我有一个从MySQL表获取数据的logstash。数据包含一个时间戳字段,该字段保存在MySQL数据库的时区中,即UTC。因此,如果我将“10:27:15”保存为我的应用程序中的时间,DB中的行包含“08:27:15Z”,因为我在欧洲/罗马tz,偏移量为2小时。
当我使用MySQL插件将其输入logstash/es时,记录再次被“取消分区”,我的数据包含“06:27:15Z”。
我正在尝试对我的数据应用正确的TZ,以便在ES中获得“08:27:15Z”。 我试过了,那就是复制一个字段,然后应用TZ重新解析它。
问题是我得到了一个“\u dateparsefailure”解析
“tztstamp”=>“2016-03-31T06:17:47.000Z”

使用
match=>[“tztstamp”,“ISO8601”]

这是正确的格式。我还尝试了其他为此目的而构建的格式,但没有成功。
服务器使用欧洲/罗马时区运行。“@timezone”字段将自动填充正确的UTC时间(即现在的2小时)。
有没有办法把我的时间调整到ES中?
要添加“可视”示例,请在DB中添加此示例
变成

如果我不做任何事情,据我所知,logstash正在“欧洲/罗马”时区的机器上运行。 在您的示例中,
tstamp
(2016-03-31 08:17:47)字段没有时区信息,因此logstash认为它位于“欧洲/罗马”。 要让Logstash知道正确的时区,您必须为
date
过滤器指定
TimeZone
选项:

date {
    match => [ "tstamp", "yyyy-MM-dd HH:mm:ss"]
    timezone => "UTC"
}
另外,由于tstamp不是ISO8601格式,因此您将获得
\u dateparsefailure

“2016-03-31T06:17:47.000Z”实际上是ISO8601。截图来自phpmyadmin。