![在 Zabbix 被动检查中提交 NULL 值](https://linux22.com/image/627611/%E5%9C%A8%20Zabbix%20%E8%A2%AB%E5%8A%A8%E6%A3%80%E6%9F%A5%E4%B8%AD%E6%8F%90%E4%BA%A4%20NULL%20%E5%80%BC.png)
最近我在 Zabbix 中配置了一些被动检查。现在,我发现有些检查在某些时间段内失败了,但查看图表时这一点并不清楚。似乎该值在上周保持稳定,但实际性能下降了,没有人意识到这一点。
有没有办法向 Zabbix 发送 NULL 来指示数据获取失败?并为这种情况添加触发器?我目前正在使用命令行工具zabbix_sender
上传结果,但可以更改为其他方法。
相比之下,munin 在收到最后一个值后 10 分钟停止绘图,并且缺失的值也不会影响平均值的计算。
在这里您可以看到“缺失数据”的显示方式:
在图表中(我标记了‘缺失数据’):
在‘最新数据’表中(该行显示为灰色,但‘上次检查’值几乎显示当前时间)
顺便说一句:同样的问题也出现在icmppingsec[]
检查中,如果出现错误,检查结果只会返回 0。这对绘图没什么帮助,但至少可以避免误报。
答案1
您使用的事实zabbix_sender
表明这些项目属于“Zabbix trapper”类型。使用 trapper 项目,您上面描述的图形行为是可以预期的。
常规项目(例如“Zabbix 代理”和“Zabbix 代理(活动)”)已配置更新间隔,因此前端知道预计数据会每 30 秒出现一次。如果在 4 个更新间隔左右的时间段内没有数据,则绘图工具不会绘制此时间段的线。因此,在您的情况下,如果项目属于任何其他类型,则不会绘制标记线。
但是,对于 trapper items,没有更新间隔,因此前端不知道数据预计以何种频率出现。数据可能每分钟、每天或不定期出现。因此,当前的解决方案是连接图中的每两个点,并将第一个和最后一个值延伸到图的边界。
未来可能会改进以下行为:https://support.zabbix.com/browse/ZBX-3356。
答案2
事实上,这是有可能的。但是这可能会在未来的版本中改变,因为我认为这是 Zabbix 中的一个错误:
如果将项目类型更改为“Zabbix 代理(活动)”(而不是“Zabbix trapper”),则可以设置“更新间隔(以秒为单位)”,并且即使使用 zabbix_sender 而不是代理,它也会按预期工作。
原因是:Zabbix agent 和 zabbix_sender 使用相同的协议(只有一些细微的差别,例如字符串“发件人数据”对阵“代理数据”在“请求”字段中)。此外,Zabbix 似乎不检查代理数据的来源,也不检查协议字符串,因此 zabbix_sender 甚至可以在任何主机上运行以推送活动的 zabbix 代理结果 - 并且过了一段时间(我测量了大约 2-3 倍的更新间隔),如果没有数据,图形线会按预期停止。
此解决方案的唯一缺点是:您不能再使用“允许的主机”选项。