2 自定义时间间隔

概述

可以创建有关监控项检查时间的自定义规则。 有两种方法可以实现这一点:灵活间隔,用于重新定义默认更新间隔;以及 计划,通过它可以在特定时间或一系列特定时间执行监控项检查。

灵活时间间隔

灵活时间间隔允许为特定时间段重新定义默认更新间隔。
灵活时间间隔由 IntervalPeriod 定义,其中:

  • Interval – 指定时间段内的更新间隔。
    支持时间后缀,例如 30s、1m、2h、1d。
  • Period – 灵活时间间隔生效的时间段(有关 Period 格式的详细说明,请参见时间段

如果多个灵活时间间隔发生重叠,则在重叠时间段内使用最小的 Interval 值。
请注意,如果重叠的灵活时间间隔中的最小值为“0”,则不会执行轮询。
在灵活时间间隔之外,将使用默认更新间隔。

请注意,如果灵活时间间隔等于该时间段的长度,则监控项将只被检查一次。
如果灵活时间间隔大于该时间段,则监控项可能会被检查一次,也可能完全不会被检查(因此不建议使用此类配置)。
如果灵活时间间隔小于该时间段,则监控项至少会被检查一次。

如果灵活时间间隔设置为“0”,则在该灵活时间间隔期间不会轮询监控项,并会在该时间段结束后按照默认的 Update interval 恢复轮询。
示例:

Interval Period Description
10 1-5,09:00-18:00 监控项将在工作时间内每 10 秒检查一次。
0 1-7,00:00-7:00 监控项在夜间不会被检查。
0 7-7,00:00-24:00 监控项在星期日不会被检查。
60 1-7,12:00-12:01 监控项将每天在 12:00 检查一次。请注意,这曾被用作计划检查的变通方法,建议对此类检查使用计划时间间隔。

调度间隔

调度间隔用于在特定时间检查监控项。 灵活间隔旨在重新定义监控项的默认更新间隔,而调度间隔则用于指定独立的检查计划,并行执行。

调度间隔定义为:md<filter>wd<filter>h<filter>m<filter>s<filter>,其中:

  • md - 每月日期
  • wd - 星期几
  • h - 小时
  • m - 分钟
  • s – 秒

<filter> 用于为其前缀指定值(日期、小时、分钟、秒),定义如下:[<from>[-<to>]][/<step>][,<filter>],其中:

  • <from><to> 定义匹配值的范围(包含边界值)。 如果省略 <to>,则过滤器匹配 <from> - <from> 范围。 如果 <from> 也被省略,则过滤器匹配所有可能的值。
  • <step> 定义在该范围内跳过的数值步长。 默认情况下,<step> 的值为 1,这意味着将匹配所定义范围内的所有值。

虽然过滤器定义是可选的,但必须至少使用一个过滤器。 过滤器必须定义范围,或者定义 <step> 值。

空过滤器在未定义更低级别过滤器时匹配“0”,否则匹配所有可能的值。 例如,如果省略小时过滤器,则仅匹配“0”点,前提是分钟和秒过滤器也都被省略;否则,空的小时过滤器将匹配所有小时值。

各过滤器前缀对应的有效 <from><to> 值如下:

Prefix Description <from> <to>
md 每月日期 1-31 1-31
wd 星期几 1-7 1-7
h 小时 0-23 0-23
m 分钟 0-59 0-59
s 0-59 0-59

<from> 值必须小于或等于 <to> 值。 <step> 值必须大于或等于 1,并且小于或等于 <to> - <from>

个位数的每月日期、小时、分钟和秒值可以带前导 0。 例如,md01-31h/02 是有效间隔,但 md01-031wd01-07 无效。

在 Zabbix 前端中,多个调度间隔需分别输入在单独的行中。 在 Zabbix API 中,它们会连接为一个字符串,并以分号 ; 作为分隔符。

如果某个时间同时匹配多个间隔,则只执行一次。 例如,wd1h9;h9 在星期一上午 9 点只会执行一次。

示例:

Interval Will be executed
m0-59 每分钟
h9-17/2 从 9:00 开始每 2 小时一次(9:00、11:00 ...)
m0,30 or m/30 每小时的 hh:00 和 hh:30
m0,5,10,15,20,25,30,35,40,45,50,55 or m/5 每五分钟
wd1-5h9 每周一到周五的 9:00
wd1-5h9-18 每周一到周五的 9:00、10:00、...、18:00
h9,10,11 or h9-11 每天的 9:00、10:00 和 11:00
md1h9m30 每月 1 日的 9:30
md1wd1h9m30 如果每月 1 日是星期一,则在 9:30 执行
h9m/30 每天的 9:00、9:30
h9m0-59/30 每天的 9:00、9:30
h9,10m/30 每天的 9:00、9:30、10:00、10:30
h9-10m30 每天的 9:30、10:30
h9m10-40/30 每天的 9:10、9:40
h9,10m10-40/30 每天的 9:10、9:40、10:10、10:40
h9-10m10-40/30 每天的 9:10、9:40、10:10、10:40
h9m10-40 每天的 9:10、9:11、9:12、... 9:40
h9m10-40/1 每天的 9:10、9:11、9:12、... 9:40
h9-12,15 每天的 9:00、10:00、11:00、12:00、15:00
h9-12,15m0 每天的 9:00、10:00、11:00、12:00、15:00
h9-12,15m0s30 每天的 9:00:30、10:00:30、11:00:30、12:00:30、15:00:30
h9-12s30 每天的 9:00:30、9:01:30、9:02:30 ... 12:58:30、12:59:30
h9m/30;h10 (API-specific syntax) 每天的 9:00、9:30、10:00
h9m/30
h10 (add this as another row in frontend)
每天的 9:00、9:30、10:00
为 proxy 和 agent 对齐时区

请注意,Zabbix proxy 和 agent 在处理调度间隔时会使用其本地时区。

因此,当调度间隔应用于由 Zabbix proxy 监控的监控项或 agent active 监控项时,建议将相应 proxy 或 agent 的时区设置为与 Zabbix 服务器相同,否则,队列 可能会错误地报告监控项延迟。

Zabbix proxy 或 agent 的时区可以通过在 systemd 单元文件中使用环境变量 TZ 来设置:

[Service]
...
Environment="TZ=Europe/Amsterdam"