zabbix 监控项自定义时间间隔(调度)

背景

在对接一个云平台的监控数据时,发现有监控项获取不到数据,但通过手动执行脚本发现数据是可正常获取的。最初开始以为是执行用户的问题,切换agent执行用户以后继续执行,返回结果仍是正常的。

通过多次执行分析,若在每分钟的前20秒内执行,基本都是失败,只有在每分钟的20秒到59秒之间执行脚本才会正常返回数据。为什么会这样无法细究,这个是云平台内部的问题。在我的角度是尽可能避开监控项在这个时间段内(每分钟前20秒)执行。

解决

尝试指定监控项固定执行时间,避开每分钟前20秒执行。

现在拿一台主机中的某个监控项为例

1. 现在这台主机的ping检查,设置的就是一分钟的采集间隔。

 

image

 

可以看到这个监控项的采集时间是每分钟的第10秒。通常像这种具体的时间点分配是系统默认调度行为,系统会自动将相同间隔的监控项的执行时间错开,目的是避免所有监控项在同一时刻并发执行,提升系统性能和稳定性。

image

 

1. 如需指定具体执行时间点可以在监控项中的自定义时间间隔中配置“调度”模式。

image

 

更新间隔改为0,意思是不再用这个间隔来定义取值时间。若沿用之前的1m,那每隔一分钟之后仍会取得一个值。

自定义时间间隔选择“调度”,间隔框内写s30,意思是每分钟的第30秒执行取值。

另外需要注意的是调度的方式只能用于被动模式类型的监控项(即是由proxy或者server发起请求的类型,如“简单检查”、“Zabbix客户端”这种类型),而不能用于主动式类型的监控项(即是由监控对象主动推送数据到proxy或者server的类型,如“Zabbix客户端(主动式)”)。

3. 经过取值刷新以后,再查看监控项的取值具体时间,可以看到现在的取值变为固定的每分钟第30秒。

 

image

 

关于调度的取值配置说明:

 

调度的取值过滤器前缀的有效 <from> <to> 值分别为:

前缀

描述

<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

 

md为月,有效值为1-31

wd为周,有效值为1-7

h为时,有效值为0-23

m为分,有效值是0-59

s为秒,有效值是0-59

 

 

实际上是调度的执行间隔写法很灵活,以下是调度方式的取值间隔写法参考:

 

m0-59

每分钟执行一次

h9-17/2

9:00开始每2小时执行一次(9:0011: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

每个星期一到星期五在900,1000...18:00

h9,10,11 or h9-11

每天上午9:0010:0011:00

md1h9m30

每个月的第一天在9:30

md1wd1h9m30

如果是星期一,每个月的第一天在9:30执行

h9m/30

9:009:30执行

h9m0-59/30

9:009:30执行

h9,10m/30

9:009:3010:0010:30执行

h9-10m30

9:3010:30执行

h9m10-40/30

9:109:40执行

h9,10m10-40/30

9:109:4010:1010:40执行

h9-10m10-40/30

9:109:4010:1010:40执行

h9m10-40

9:109:119:12... 9:40执行

h9m10-40/1

9:109:119:12... 9:40执行

h9-12,15

9:0010:0011:0012:0015:00执行

h9-12,15m0

9:0010:0011:0012:0015:00执行

h9-12s30

9:00:309:01:309:02:30 ... 12:58:3012:59:30执行

h9m/30;h10 (API-指定语法)

9:009:3010:00执行

 

 

posted @ 2025-08-27 16:11  乐维_lwops  阅读(102)  评论(0)    收藏  举报