简单的问题,也许有一个复杂的答案? 我有几个使用 JDBC 插件在同一主机上运行的 logstash docker 容器。 他们每个人都每分钟都在工作。 例如:
input {
jdbc {
jdbc_driver_library => "/usr/share/logstash/bin/mysql-connector-java-8.0.15.jar"
jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
# useCursorFetch needed cause jdbc_fetch_size not working??
# https://discuss.elastic.co/t/logstash-jdbc-plugin/84874/2
# https://stackoverflow.com/a/10772407
jdbc_connection_string => "jdbc:mysql://${CP_LS_SQL_HOST}:${CP_LS_SQL_PORT}/${CP_LS_SQL_DB}?useCursorFetch=true&autoReconnect=true&failOverReadOnly=false&maxReconnects=10"
statement => "select * from view_elastic_popularity_scores_all where updated_at > :sql_last_value"
jdbc_user => "${CP_LS_SQL_USER}"
jdbc_password => "${CP_LS_SQL_PASSWORD}"
jdbc_fetch_size => "${CP_LS_FETCH_SIZE}"
last_run_metadata_path => "/usr/share/logstash/codepen/last_run_files/last_run_popularity_scores_live"
jdbc_page_size => '10000'
use_column_value => true
tracking_column => 'updated_at'
tracking_column_type => 'timestamp'
schedule => "* * * * *"
}
}
注意到时间表是* * * * *
? 这就是症结所在。 我有一个盒子,通常每分钟闲置 50 秒,然后它会工作 x 秒来处理所有 10 个 logstash 容器的数据。 令人惊讶的是,如果我能找到一种方法来分配时间,以便 10 个容器按照独立的时间表工作,偏移 x 秒。
这只是一个梦吗? 喜欢世界和平,还是远离我的孩子?
谢谢
我相信
rufus cronlines(这就是调度选项(可以指定秒数。
'13 0 22 * * 1-5' 表示一周中的每一天 22:00:13