2017-11-07 20 views
0

Logstash JDBC 입력 플러그인 내 데이터를 가져올 때 나는이 예외를 얻고 구문 분석 할 때 : 이미 내 시간대를 변환하고 있기 때문에Logstash : TZInfo :: AmbiguousTime 예외 JDBC 열 Logstash

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" 

따라서 오전 1시 반은 11 월 5 일에 두 번 일어난, 나는 Logstash 어떻게 해야할지하지 않습니다 의심하고 무한 루프에 빠지지.

해결 방법으로

, 나는 jdbc_default_timezone 매개 변수를 제거하고 대신에 나는 다음과 같이 SELECT 문에 UTC에서 제 값을 변환 :

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

하지만 모두를 수정해야하기 때문에이 해결 방법은 성가신 내 logstash는 날짜 열을 입력합니다.

두 가지 가능한 시간 중 하나를 선택하거나 더 세련된 방식으로 선택하도록 할 수있는 방법이 있습니까?

답변

0

Logstash JDBC Input 플러그인의 알려진 버그 인 것 같습니다. P2 향상으로 플래그가 지정됩니다. 질문 (MS SQL 버전)에서 위에서 설명한, 또는 https://github.com/logstash-plugins/logstash-input-jdbc/issues/121

한편, 해결 방법은 SQL 쿼리의 UTC 모든 날짜와 타임 스탬프를 변환하는 것입니다 오라클 버전이 같은 :

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

또한 적용 가능한 경우 입력 파일과 필터에서 jdbc_default_timezone 매개 변수를 제거해야합니다.