【发布时间】:2018-09-27 06:11:05
【问题描述】:
我正在尝试在 dockerized logstash 容器中使用输入 jdbc 插件。
jdbc {
type => "logs"
jdbc_driver_library => "/opt/logstash/driver/ojdbc6.jar"
jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"
jdbc_connection_string => "jdbc:oracle:thin:@//<host>:<port>/<database>"
jdbc_user => "****"
jdbc_password => "****"
jdbc_fetch_size => 1000
schedule => "* * * * *"
statement => "select ROWIDTONCHAR ( rowid ) AS rid_obj ,CONNECTION_ID, IPADDRESS, START_DATE, ELAPSED_TIME_MS, GUI_EVENT_TYPE, GUI_EVENT_NAME, GUI_EVENT_PARAMS
from table where start_date>:sql_last_start"
clean_run => false
record_last_run => true
last_run_metadata_path => "/opt/logstash/lastrun/.logstash_jdbc_last_run"
}
元数据文件的卷映射如下:
-v - /opt/logstash/lastrun/.logstash_jdbc_last_run:/opt/logstash/lastrun/.logstash_jdbc_last_run
问题: start_date 字段是日期字段而不是时间戳字段。 sql_last_start 是一个时间戳字段。比较是否正确?表中的日期不是 UTC。我不确定如何将其转换为 logstash 可以理解的格式。
我尝试了几种比较方法,包括将日期字段转换为带有 UTC 的时间戳字段 - 均无效。
每次我重新启动 logstash 时都会检查整个文件。为了防止重复,我使用了来自
的解决方案Logstash input jdbc is duplicating results
任何意见都会有所帮助。
【问题讨论】:
-
在进一步检查日志后,我发现日期以这样的方式存储在元数据文件中 - 2015-12-18 17:14:00.236000000 Z 而在日志中显示为 2015-12 -18 17:14:00 世界标准时间。我无法追踪配置格式的位置。
-
有人遇到过这个问题吗?如果是这样,你能分享你的解决方案吗?谢谢
-
start_date列的数据格式是什么?如果你给我一些关于该专栏内容的例子,我们可以解决这个问题。
标签: jdbc elasticsearch duplicates logstash