【问题标题】:Logstash: TZInfo::AmbiguousTime exception when parsing JDBC column LogstashLogstash:解析 JDBC 列 Logstash 时出现 TZInfo::AmbiguousTime 异常
【发布时间】:2017-11-07 19:52:48
【问题描述】:

使用 Logstash JDBC 输入插件获取数据时出现此异常:

error:
  26413962
  Sequel::InvalidValue
  TZInfo::AmbiguousTime: 2017-11-05T01:30:00+00:00 is an ambiguous local time.

这可能是因为我已经在我的 JDBC 插件中使用这个参数转换了我的时区:

   jdbc_default_timezone => "America/New_York"

因此,11 月 5 日凌晨 1:30 发生了两次,我怀疑 Logstash 不知道该做什么,它陷入了无限循环。

作为一种解决方法,我删除了 jdbc_default_timezone 参数,而是在 select 语句中将我的值转换为 UTC,如下所示:

 DATEADD(hh, DATEDIFF(hh, GETDATE(), GETUTCDATE()), th.[DueDate]) as DueDate 

但是这种解决方法很烦人,因为我需要修改所有的 logstash 输入日期列。

有没有办法强制它选择两个可能的时间中的任何一个,或者更优雅的方式?

【问题讨论】:

    标签: logstash logstash-configuration logstash-jdbc


    【解决方案1】:

    这似乎是 Logstash JDBC 输入插件中的一个已知错误,它被标记为 P2 增强。 https://github.com/logstash-plugins/logstash-input-jdbc/issues/121

    同时,解决方法是将 SQL 查询中的所有日期和时间戳转换为 UTC,如上面问题(MS SQL 版本)中所述,或者对于 Oracle 版本是这样的:

    select from_tz(cast(<column> as timestamp), 'CET') at time zone ('EST') "@timestamp"
        from <table>
        where ...
    

    如果适用,我们还需要删除输入文件和过滤器中的 jdbc_default_timezone 参数。

    【讨论】:

      猜你喜欢
      • 2018-06-23
      • 1970-01-01
      • 1970-01-01
      • 2015-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-03
      • 2021-03-31
      相关资源
      最近更新 更多