Zabbix4.2新功能实践2-数据节流Throttling

Zabbix4.2增加了一个Item预处理功能:Throttling(节流)功能。通过此功能可以实现以下几个效果:
1.减少Item重复数据的存储。
2.对高频率采集数据进行压缩存储。
总结起来就是可以减少Item采集的重复数据存储,具体使用方法及用途通过以下几个实验说明

配置Throttling

配置Item的Throttling功能,可在item的预处理配置
1

分别有二个选项

Discard unchanged 丢弃不变化的数据
Discard unchanged with heartbeat 带心跳检查丢弃不变化的数据

Discard unchanged 为直接丢弃重复的数据,如item采集的前一个数据和目前数据重复,则只保存前一个数据,直接丢弃后续采集的数据
Discard unchanged with heartbeat 为配置一个心跳时间,此时间内至少会存储一个不变的采集数据

配置Discard unchanged

以我之前写的agent为例,目前有一个Item为采集服务器cpu型号的item如下
2
配置Throttling如下
3
现在改变item的采集数据
4
数据变化后,Throttling功能没有生效!!!Item依然保存数据.如采集数据不发生变化时,只存储了第一个数据,后续数据已不再存储。查看Agent日志如下
5
显示Zabbix Server还在采集数据,说明数据已采集到zabbix server只是丢弃了,没有进行存储。

配置Discard unchanged with heartbeat

配置Discard unchanged with heartbeat
6
如下配置之后,Item的采集周期为1分钟,心跳配置为5分钟,如数据不发生变化,每5分钟会有一个数据被存储,由于数据重复,可视为对重复数据进行了压缩存储。
7
如数据发生变化时,可以看到配置的策略已不生效,数据按照Item采集周期被采集和存储。
8
如配置Discard unchanged的时间为30秒
9
即小于Item采集周期,数据还是以Item的采集周期为准,进行采集和存储。
10

结论

1.配置Discard unchanged之后,如采集数据发生变化,Throttling配置不生效,正常采集存储数据。数据不变化时,采集正常执行,但只存储一个数据,但不影响告警等功能。
2.配置Discard unchanged with heartbeat之后,在心跳周期内至少存储一个数据,如数据发生变化,则配置的心跳时间不生效,以指标采集周期为准,采集存储数据。

使用场景

1.高频率采集情况下,如秒级别采集,配置合适的心跳,即能保证不错过变化的采集数据和告警,又能降低数据存储压力。
2.对一般采集数据不发生变化的采集指标,配置之后可起到数据“压缩”功能,降低数据存储压力。

如果觉得我的文章对您有用,请关注我的公众号,有更多技术干货!
微信