我正在尝试0 1/12 * * *
cron表达式,但它每天仅触发一次。以下是我的配置之一。
input {
jdbc {
jdbc_connection_string => "jdbc:redshift://xxx.us-west-2.redshift.amazonaws.com:5439/xxx"
jdbc_user => "xxx"
jdbc_password => "xxx"
jdbc_validate_connection => true
jdbc_driver_library => "/mnt/logstash-6.0.0/RedshiftJDBC42-1.2.10.1009.jar"
jdbc_driver_class => "com.amazon.redshift.jdbc42.Driver"
schedule => "0 1/12 * * *" #01:00,13:00, tried from https://crontab.guru/#0_1/12_*_*_*
statement_filepath => "conf/log_event_query.sql"
use_column_value => true
tracking_column => dw_insert_dt
last_run_metadata_path => "metadata/logstash_jdbc_last_run_log_event"
}
}
output {
elasticsearch {
index => "logs-ics_%{+dd_MM_YYYY}"
document_type => "log_event"
document_id => "%{log_entry_id}"
hosts => [ "x.x.x.x:xxxx" ]
}
}
我还在https://www.freeformatter.com/cron-expression-generator-quartz.html的0 0 1/12 ? * * *
下面尝试过,但是lostash不支持这种类型。
已使用Original cron。
请帮助我获得一个cron表达式,该表达式可以根据以下日期在logstash中使用,并且还有一个在线页面可以测试我未来的logstash cron表达式吗?
1st at 2018-08-01 01:00:00
then at 2018-08-01 13:00:00
then at 2018-08-02 01:00:00
then at 2018-08-02 13:00:00
then at 2018-08-03 01:00:00
答案 0 :(得分:0)
您的日程安排格式似乎不正确。
要执行每十二小时一次的任务,请使用*/12
,而不要使用1/12
:
0 */12 * * * # Every twelve hours at minute 0 of the hour.
您的日程安排看起来更像是尝试在1点和12点运行任务,但是要这样做,您将使用逗号,如下所示:
0 1,12 * * * # Run at one and twelve hours at minute 0.
如果您需要使用rufus扩展名来在非默认计算机时钟的特定时区安排运行时间,则rufus扩展名还可以添加时区(例如Asia / Kuala_Lumpur)。
您的上述代码未向我们显示您正在运行的SQL查询。该查询可能正在触发,但是如果查询没有结果,则不会在logstash中获得任何输入。无论如何,您的调度语法都需要从1/12
更改为*/12
才能执行您想要的操作。
更一般地,根据logstash jdbc输入插件文档,调度格式被认为是cron-like。 logstash jdbc输入插件使用ruby Rufus调度程序。该计划格式的文档位于:https://github.com/jmettraux/rufus-scheduler#parsing-cronlines-and-time-strings
Logstash 6.0 JDBC插件文档在这里:https://www.elastic.co/guide/en/logstash/6.0/plugins-inputs-jdbc.html
希望这会有所帮助。