如何将数据库版本保存为logstash中的sql_last_version变量



我想做的是在每次执行log.conf文件后保存sql_last_value参数中行的最大版本,如下所示。

这是我的log.conf为logstash:

input {
jdbc {
jdbc_connection_string => "jdbc:postgresql://postgres:5432/test"
jdbc_driver_library => "/home/postgresql-42.2.18.jar"
# last_run_metadata_path => "/usr/share/logstash/.logstash_jdbc_last_run"
jdbc_driver_class => "org.postgresql.Driver"
jdbc_user => "postgres"
jdbc_password => "postgres"
parameters => { "sql_last_version" => 400 }
schedule => "*/5 * * * * *"
statement => "SELECT * FROM test where xmin::text::int >= :sql_last_version ORDER BY xmin::text::int "
}
}
filter{

}
output {   
stdout {
codec => json_lines
}
}
例如,这是我的表:
test=# select *,xmin from test where xmin::text::int >= 400 order by xmin::text::int;
id |   name   | xmin 
----+----------+------
1 | Robert   |  300
2 | Jessica  |  400
3 | Jennifer |  500
4 | Jack     |  600
(4 rows)

我希望存储600作为last_version参数。

我敢肯定,如果错误或没有,我没有想法在这里,请帮助。我对日志存储完全是个新手。

提前感谢。

该参数名为sql_last_value,您可以这样使用它:

input {
jdbc {
jdbc_connection_string => "jdbc:postgresql://postgres:5432/test"
jdbc_driver_library => "/home/postgresql-42.2.18.jar"
# last_run_metadata_path => "/usr/share/logstash/.logstash_jdbc_last_run"
jdbc_driver_class => "org.postgresql.Driver"
jdbc_user => "postgres"
jdbc_password => "postgres"
schedule => "*/5 * * * * *"
use_column_value => true
tracking_column => "xmin"
statement => "SELECT * FROM test where xmin::text::int >= :sql_last_value ORDER BY xmin::text::int "
}
}

以下是我所做的修改:

  • 你不需要parameters设置
  • 您缺少use_column_value设置
  • 您缺少tracking_column设置
  • SQL查询需要引用sql_last_value而不是sql_last_version

第一次运行后,600将存储在sql_last_value中,并在下一次调用中使用,仅检索xmin值为>= 600的记录(这意味着将再次获取最后一条记录)

相关内容

  • 没有找到相关文章

最新更新