It is possible to create custom rules regarding the times when an item is checked. The two methods for that are Flexible intervals, which allow to redefine the default update interval, and Scheduling, whereby an item check can be executed at a specific time or sequence of times.
Zabbix agent 2 supports custom intervals for both passive and active checks, whereas Zabbix agent supports custom intervals only for passive checks. See Zabbix agent vs agent 2 comparison.
Flexible intervals allow to redefine the default update interval for specific time periods. A flexible interval is defined with Interval and Period where:
If multiple flexible intervals overlap, the smallest Interval value is used for the overlapping period. Note that if the smallest value of overlapping flexible intervals is '0', no polling will take place. Outside the flexible intervals the default update interval is used.
Note that if the flexible interval equals the length of the period, the item will be checked exactly once. If the flexible interval is greater than the period, the item might be checked once or it might not be checked at all (thus such configuration is not advisable). If the flexible interval is less than the period, the item will be checked at least once.
If the flexible interval is set to '0', the item is not polled during the flexible interval period and resumes polling according to the default Update interval once the period is over. Examples:
Interval | Period | Description |
---|---|---|
10 | 1-5,09:00-18:00 | Item will be checked every 10 seconds during working hours. |
0 | 1-7,00:00-7:00 | Item will not be checked during the night. |
0 | 7-7,00:00-24:00 | Item will not be checked on Sundays. |
60 | 1-7,12:00-12:01 | Item will be checked at 12:00 every day. Note that this was used as a workaround for scheduled checks and starting with Zabbix 3.0 it is recommended to use scheduling intervals for such checks. |
Scheduling intervals are used to check items at specific times. While flexible intervals are designed to redefine the default item update interval, the scheduling intervals are used to specify an independent checking schedule, which is executed in parallel.
A scheduling interval is defined as: md<filter>wd<filter>h<filter>m<filter>s<filter>
where:
<filter>
is used to specify values for its prefix (days, hours, minutes, seconds) and is defined as: [<from>[-<to>]][/<step>][,<filter>]
where:
<from>
and <to>
define the range of matching values (included). If <to>
is omitted then the filter matches a <from> - <from>
range. If <from>
is also omitted then the filter matches all possible values.<step>
defines the skips of the number value through the range. By default <step>
has the value of 1, which means that all values of the defined range are matched.While the filter definitions are optional, at least one filter must be used. A filter must either have a range or the <step> value defined.
An empty filter matches either '0' if no lower-level filter is defined or all possible values otherwise. For example, if the hour filter is omitted then only '0' hour will match, provided minute and seconds filters are omitted too, otherwise an empty hour filter will match all hour values.
Valid <from>
and <to>
values for their respective filter prefix are:
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 |
The <from>
value must be less or equal to <to>
value. The <step>
value must be greater or equal to 1 and less or equal to <to>
- <from>
.
Single digit month days, hours, minutes and seconds values can be prefixed with 0. For example md01-31
and h/02
are valid intervals, but md01-031
and wd01-07
are not.
In Zabbix frontend, multiple scheduling intervals are entered in separate rows. In Zabbix API, they are concatenated into a single string with a semicolon ;
as a separator.
If a time is matched by several intervals it is executed only once. For example, wd1h9;h9
will be executed only once on Monday at 9am.
Examples:
Interval | Will be executed |
---|---|
m0-59 | every minute |
h9-17/2 | every 2 hours starting with 9:00 (9:00, 11:00 ...) |
m0,30 or m/30 | hourly at hh:00 and hh:30 |
m0,5,10,15,20,25,30,35,40,45,50,55 or m/5 | every five minutes |
wd1-5h9 | every Monday till Friday at 9:00 |
wd1-5h9-18 | every Monday till Friday at 9:00,10:00,...,18:00 |
h9,10,11 or h9-11 | every day at 9:00, 10:00 and 11:00 |
md1h9m30 | every 1st day of each month at 9:30 |
md1wd1h9m30 | every 1st day of each month at 9:30 if it is Monday |
h9m/30 | every day at 9:00, 9:30 |
h9m0-59/30 | every day at 9:00, 9:30 |
h9,10m/30 | every day at 9:00, 9:30, 10:00, 10:30 |
h9-10m30 | every day at 9:30, 10:30 |
h9m10-40/30 | every day at 9:10, 9:40 |
h9,10m10-40/30 | every day at 9:10, 9:40, 10:10, 10:40 |
h9-10m10-40/30 | every day at 9:10, 9:40, 10:10, 10:40 |
h9m10-40 | every day at 9:10, 9:11, 9:12, ... 9:40 |
h9m10-40/1 | every day at 9:10, 9:11, 9:12, ... 9:40 |
h9-12,15 | every day at 9:00, 10:00, 11:00, 12:00, 15:00 |
h9-12,15m0 | every day at 9:00, 10:00, 11:00, 12:00, 15:00 |
h9-12,15m0s30 | every day at 9:00:30, 10:00:30, 11:00:30, 12:00:30, 15:00:30 |
h9-12s30 | every day at 9:00:30, 9:01:30, 9:02:30 ... 12:58:30, 12:59:30 |
h9m/30;h10 (API-specific syntax) | every day at 9:00, 9:30, 10:00 |
h9m/30 h10 (add this as another row in frontend) |
every day at 9:00, 9:30, 10:00 |
Note that Zabbix proxies and agent 2 use their local time zones when processing scheduling intervals.
For this reason, when scheduling intervals are applied to items monitored by Zabbix proxy or agent 2 active items, it is recommended to set the time zone of the respective proxies or agent 2 the same as Zabbix server, otherwise the queue may report item delays incorrectly.
The time zone for Zabbix proxy or agent 2 can be set using the environment variable TZ
in the systemd
unit file: