Watcher 定时触发器
编辑Watcher 定时触发器
编辑定时 触发器 基于日期和时间定义监视执行何时启动。所有时间均以 UTC 时间指定。
Watcher 使用系统时钟来确定当前时间。为了确保按预期触发计划,应使用诸如 NTP 之类的时间服务来同步集群中所有节点的时钟。
请记住,节流周期可能会影响监视的实际执行时间。默认节流周期为五秒(5000 毫秒)。如果配置的计划频率高于节流周期,则节流周期将覆盖计划。例如,如果将节流周期设置为一分钟(60000 毫秒),并将计划设置为每 10 秒执行一次,则监视每分钟最多执行一次。有关节流的更多信息,请参见 确认和节流。
Watcher 提供了几种类型的定时触发器
Watcher 每小时计划
编辑一个 schedule
,它在每天的特定分钟触发。要使用 hourly
计划,请使用 minute
属性指定希望计划程序启动监视执行的分钟(或分钟数)。
如果未为 hourly
计划指定 minute
属性,则默认为 0
,并且计划每小时在整点触发——12:00
、13:00
、14:00
等。
配置每小时一次的计划
编辑要配置每小时一次的计划,请使用 minute
属性指定单个时间。
例如,以下 hourly
计划每小时在 30 分钟触发——12:30
、13:30
、14:30
……
{ "trigger" : { "schedule" : { "hourly" : { "minute" : 30 } } } }
配置每小时多次的计划
编辑要配置在每小时多次触发的 hourly
计划,请指定一个分钟数组。例如,以下计划每 15 分钟触发一次——12:00
、12:15
、12:30
、12:45
、1:00
、1:15
……
{ "trigger" : { "schedule" : { "hourly" : { "minute" : [ 0, 15, 30, 45 ] } } } }
Watcher 每日计划
编辑一个 schedule
,它每天在特定时间触发。要使用 daily
计划,请使用 at
属性指定希望计划程序启动监视执行的每日时间(或时间)。
时间以 24 小时制的 HH:mm
格式指定。您还可以使用保留值 midnight
和 noon
分别代表 00:00
和 12:00
,以及 使用对象指定时间。
如果未为 daily
计划指定 at
属性,则默认为每天午夜 00:00
触发一次。
配置每日计划
编辑要配置每天一次的计划,请使用 at
属性指定单个时间。例如,以下 daily
计划每天下午 5:00 触发一次。
{ "trigger" : { "schedule" : { "daily" : { "at" : "17:00" } } } }
配置每天多次的计划
编辑要配置在一天中多次触发的 daily
计划,请指定一个时间数组。例如,以下 daily
计划每天在 00:00
、12:00
和 17:00
触发。
{ "trigger" : { "schedule" : { "daily" : { "at" : [ "midnight", "noon", "17:00" ] } } } }
使用对象指定时间
编辑除了使用 HH:mm
字符串语法指定时间外,还可以将时间指定为具有 hour
和 minute
属性的对象。
例如,以下 daily
计划每天下午 5:00 触发一次。
{ "trigger" : { "schedule" : { "daily" : { "at" : { "hour" : 17, "minute" : 0 } } } } }
要使用对象表示法指定多个时间,请指定一个包含多个小时或分钟的数组。例如,以下 daily
计划每天在 00:00
、00:30
、12:00
、12:30
、17:00
和 17:30
触发。
{ "trigger" : { "schedule" : { "daily" : { "at" : { "hour" : [ 0, 12, 17 ], "minute" : [0, 30] } } } } }
Watcher 每周计划
编辑一个 schedule
,它每周在特定的一天和时间触发。要使用 weekly
计划,请使用 on
和 at
属性指定希望计划程序启动监视执行的日期和时间(或日期和时间)。
您可以通过名称、缩写或数字(以星期日为一周的第一天)指定星期几
-
sunday
、monday
、tuesday
、wednesday
、thursday
、friday
和saturday
-
sun
、mon
、tue
、wed
、thu
、fri
和sat
-
1
、2
、3
、4
、5
、6
和7
时间以 24 小时制的 HH:mm
格式指定。您还可以使用保留值 midnight
和 noon
分别代表 00:00
和 12:00
。
配置每周计划
编辑要配置每周一次的计划,请使用 on
属性指定日期,使用 at
属性指定时间。例如,以下 weekly
计划每周五下午 5:00 触发一次。
{ "trigger" : { "schedule" : { "weekly" : { "on" : "friday", "at" : "17:00" } } } }
您还可以使用 day
和 time
属性指定日期和时间,它们与 on
和 at
可互换。
配置每周多次的计划
编辑要配置每周多次触发的 weekly
计划,您可以指定一个日期和时间值数组。例如,以下 weekly
计划每周二下午 12:00 和每周五下午 5:00 触发。
{ "trigger" : { "schedule" : { "weekly" : [ { "on" : "tuesday", "at" : "noon" }, { "on" : "friday", "at" : "17:00" } ] } } }
或者,您可以在一个对象中指定日期和时间,该对象具有包含值数组的 on
和 minute
属性。例如,以下 weekly
计划每周二和周五下午 12:00 和 17:00 触发。
{ "trigger" : { "schedule" : { "weekly" : { "on" : [ "tuesday", "friday" ], "at" : [ "noon", "17:00" ] } } } }
Watcher 每月计划
编辑一个 schedule
,它每月在特定的一天和时间触发。要使用 monthly
计划,请使用 on
和 at
属性指定希望计划程序启动监视执行的月份日期和时间(或日期和时间)。
您将月份日期指定为 1
到 31
(含)之间的数值。时间以 24 小时制的 HH:mm
格式指定。您还可以使用保留值 midnight
和 noon
分别代表 00:00
和 12:00
。
配置每月计划
编辑要配置每月一次的计划,请使用 on
和 at
属性指定单个日期和时间。例如,以下 monthly
计划每月 10 日中午触发。
{ "trigger" : { "schedule" : { "monthly" : { "on" : 10, "at" : "noon" } } } }
您还可以使用 day
和 time
属性指定日期和时间,它们与 on
和 at
可互换。
配置每月多次的计划
编辑要配置每月多次触发的 monthly
计划,您可以指定一个日期和时间值数组。例如,以下 monthly
计划每月 10 日中午 12:00 和每月 20 日下午 5:00 触发。
{ "trigger" : { "schedule" : { "monthly" : [ { "on" : 10, "at" : "noon" }, { "on" : 20, "at" : "17:00" } ] } } }
或者,您可以在一个对象中指定日期和时间,该对象具有包含值数组的 on
和 at
属性。例如,以下 monthly
计划每月 10 日和 20 日的凌晨 12:00 和中午 12:00 触发。
{ "trigger" : { "schedule" : { "monthly" : { "on" : [ 10, 20 ], "at" : [ "midnight", "noon" ] } } } }
Watcher 每年计划
编辑一个 schedule
,它每年在特定的一天和时间触发。要使用 yearly
计划,请使用 in
、on
和 at
属性指定希望计划程序启动监视执行的月份、日期和时间(或月份、日期和时间)。
您可以通过名称、缩写或数字指定月份
-
january
、february
、march
、april
、may
、june
、july
、august
、september
、october
、november
和december
-
jan
、feb
、mar
、apr
、may
、jun
、jul
、aug
、sep
、oct
、nov
和dec
-
1
、2
、3
、4
、5
、6
、7
、8
、9
、10
、11
和12
您将月份日期指定为 1
到 31
(含)之间的数值。时间以 24 小时制的 HH:mm
格式指定。您还可以使用保留值 midnight
和 noon
分别代表 00:00
和 12:00
。
配置每年计划
编辑要配置每年一次的计划,请使用 in
属性指定月份,使用 on
属性指定日期,使用 at
属性指定时间。例如,以下 yearly
计划每年 1 月 10 日中午触发一次。
{ "trigger" : { "schedule" : { "yearly" : { "in" : "january", "on" : 10, "at" : "noon" } } } }
您还可以使用 month
、day
和 time
属性指定月份、日期和时间,它们与 in
、on
和 at
可互换。
配置每年多次的计划
编辑要配置每年触发多次的 yearly
计划,您可以指定月份、日期和时间的数组。例如,以下 yearly
计划每年触发两次:1月10日中午 12:00 和 7月20日下午 5:00。
{ "trigger" : { "schedule" : { "yearly" : [ { "in" : "january", "on" : 10, "at" : "noon" }, { "in" : "july", "on" : 20, "at" : "17:00" } ] } } }
或者,您可以在一个对象中指定月份、日期和时间,该对象具有包含值数组的 in
、on
和 minute
属性。例如,以下 yearly
计划将在 1 月 10 日、1 月 20 日、12 月 10 日和 12 月 20 日的凌晨 12:00 和中午 12:00 触发。
{ "trigger" : { "schedule" : { "yearly" : { "in" : [ "jan", "dec" ], "on" : [ 10, 20 ], "at" : [ "midnight", "noon" ] } } } }
Watcher cron 计划
编辑使用 schedule
定义一个 cron 表达式,用于指定何时执行监控。
虽然 cron 表达式功能强大,但使用其他计划类型更容易配置定期发生的计划。如果您必须使用 cron 计划,请确保使用 elasticsearch-croneval
验证它。
配置一次性 cron 计划
编辑要配置 cron
计划,只需将 cron 表达式指定为字符串值。例如,以下代码片段配置一个每天中午触发的 cron
计划。
{ ... "trigger" : { "schedule" : { "cron" : "0 0 12 * * ?" } } ... }
配置多次触发的 cron 计划
编辑要配置触发多次的 cron
计划,您可以指定一个 cron 表达式数组。例如,以下 cron
计划在工作日每隔一分钟触发一次,在周末每隔一分钟触发一次。
{ ... "trigger" : { "schedule" : { "cron" : [ "0 0/2 * ? * MON-FRI", "0 1-59/2 * ? * SAT-SUN" ] } } ... }
使用 croneval 验证 cron 表达式
编辑Elasticsearch 在 $ES_HOME/bin
目录中提供了一个 elasticsearch-croneval
命令行工具,您可以使用它来检查您的 cron 表达式是否有效并产生预期的结果。
要验证 cron 表达式,请将其作为参数传递给 elasticsearch-croneval
。
bin/elasticsearch-croneval "0 0/1 * * * ?"
Watcher 间隔计划
编辑一个 schedule
,它以固定的时间间隔触发。间隔可以设置为秒、分钟、小时、天或周。
-
"Xs"
- 每X
秒触发一次。例如,"30s"
表示每 30 秒。 -
"Xm"
- 每X
分钟触发一次。例如,"5m"
表示每 5 分钟。 -
"Xh"
- 每X
小时触发一次。例如,"12h"
表示每 12 小时。 -
"Xd"
- 每X
天触发一次。例如,"3d"
表示每 3 天。 -
"Xw"
- 每X
周触发一次。例如,"2w"
表示每 2 周。
如果您没有指定时间单位,则默认为秒。
间隔值与 Elasticsearch 中使用的标准时间值不同。您不能以毫秒或纳秒为单位配置间隔。
配置间隔计划
编辑要配置 interval
计划,请指定一个表示间隔的字符串值。如果您省略时间单位(s
、m
、h
、d
或 w
),则默认为秒。
例如,以下 interval
计划每五分钟触发一次。
{ "trigger" : { "schedule" : { "interval" : "5m" } } }