2 自定义间隔

概述

可以create自定义规则来指定监控项的检查时间。 实现这一功能的两种方法是:灵活间隔(允许重新定义默认的update间隔)和调度(可在特定时间或时间序列执行监控项检查)。

灵活间隔

灵活间隔允许为特定时间段重新定义默认更新间隔。 灵活间隔由 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 Month days 1-31 1-31
wd Week days 1-7 1-7
h Hours 0-23 0-23
m Minutes 0-59 0-59
s Seconds 0-59 0-59

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

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

在 Zabbix 前端中,多个调度间隔需要分别输入在不同的行中。 在 Zabbix API 中,它们会用分号 ; 作为分隔符合并为一个字符串。

如果某个时间被多个间隔匹配,则只执行一次。 例如,wd1h9;h9 在周一 9:00 只会执行一次。

示例:

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 每 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 执行
对齐 proxies 和 agent 的时区

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

因此,当对由Zabbix proxy或agent主动监控项监控的监控项应用调度间隔时,建议将相应proxies或agent的时区设置为与Zabbix server相同,否则queue可能会错误地报告监控项延迟。

Zabbix proxy或agent的时区可通过在systemd单元file中设置环境变量TZ来实现:

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



[comment]: # ({/6806cc58-4cc438e8})