【问题标题】:Zabbix trigger to detect no dataZabbix 触发器检测无数据
【发布时间】:2014-01-17 18:19:11
【问题描述】:

我需要能够检测轮询的 Zabbix 代理项不返回数据的触发器。 对于 zabbix 陷阱项目,此功能由 nodata() 函数(Zabbix 文档中的心跳丢失检测)涵盖,但我需要 Zabbix 代理项目支持类似的功能。

例如,一个已经定义了Zabbix agent UserParameter: UserParameter=custom.mssqlping,/usr/local/scripts/mssqlping.sh.

脚本 mssqlping.sh 返回 0/1。我需要覆盖 mssqlping.sh 脚本损坏并返回 empy 字符串的情况,该字符串未存储在 zabbix 中,因为它不是数字。

如何检测定期轮询的项目数据不再出现?

【问题讨论】:

  • 经过多年的 Zabbix 监控实施,我已经达到了 ZEN 级别,现在,使用项目预处理可以轻松解决问题,它通过将非数字字符串替换为我自己的数字错误值来对非数字字符串做出反应!

标签: zabbix


【解决方案1】:

造成问题的不是它没有存储,而是它不再被视为有效项目,因此您无法从中触发任何东西。有很多与之相关的错误报告。 AFAIk 你的选择:

  1. 调整脚本以在出错时返回数值
  2. 使用2.2's "internal events" 检测“变得不受支持”事件
  3. 制作和外部脚本,将直接查询数据库并自行通知您或通过 zabbix 的陷阱触发条件

【讨论】:

  • 感谢您的澄清。我会检查内部事件。谢谢和问候。
  • 多年后的附加信息 - 现在预处理规则可以检查无效的传入号码并将其替换为我自己的错误号码(例如 2)这可以防止项目不受支持
【解决方案2】:

或者这里的选项是基于nodata()触发

来自:https://www.zabbix.com/forum/zabbix-help/41652-zabbix-trigger-timeout?p=245422#post245422

{myserver:example.iregexp("/string/",1m)}=1 AND {myserver:example.nodata(1m)}=0

更多阅读:https://zabbix.org/wiki/Trigger_examples

【讨论】:

  • nodata() 函数是正确的方法。但是当用作AND {myserver:example.nodata(1m)}=0 时,触发器只会在数据丢失时停止触发。如果它应该警告您丢失数据,您需要像{myserver:example.nodata({$TIMEOUT.MACRO})}=1 这样的条件。在单独的触发器中或作为逻辑 OR 添加到现有触发器中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多