我被赋予了监视某些 MySQL 服务器数据库中特定值的任务,如果该值在过去 10 分钟内没有发生变化,我需要发出通知。
我添加了UserParameter_mysql.conf
以下行:
UserParameter=mysql.query, echo "select id from resolved_clicks order by id desc limit 1" | mysql -N -u zabbix -pPASSWORD aggregator
并且从 Zabbix 服务器运行检查时,它会正确返回值:
[root@zabbix ~]# zabbix_get -s IP -k mysql.query
7957178672
[root@zabbix ~]#
下一步是创建一个项目,我已经完成了,现在我正在尝试配置触发器。如果该值在过去 10 分钟内没有更新,触发器应该会发出通知。我该如何配置触发器来反映这种情况?谢谢!
编辑#1:这是我刚刚创建的触发器的最新数据: 我的问题是:
1. What's the meaning of change?
2. How can I know from looking on the Change row how many seconds
have passed since the last 2 checks?
3. How can I test that the trigger is operating successfully without
having to reproduce the problem?
答案1
您的问题不是 100% 清楚,因此我涵盖了两种可能性:
如果你想检查数据是否未从 Zabbix 代理到达,请使用nodata
功能。
返回:
1 - 如果在以秒为单位的时间段内未收到数据。时间段不应少于 30 秒。0
- 否则
例如,如果 10 分钟内未收到任何数据,则会触发触发器:
{mysql.query.nodata(600)}=1
如果您想检查值是否没有改变,请使用delta
。
返回一个时间段内的最大值与最小值之间的差值(“max()”减去“min()”)。时间段以秒为单位设置,或以第一个参数中的收集值数量(以 # 井号开头)设置。
例如,如果值 10 分钟内没有改变,触发器就会触发:
{mysql.query.delta(600)}=0
最后,您可能想要重命名您的项目。mysql.query
非常通用,并且已被常见的 MySQL 模板使用。类似的东西aggregator.highest_click_id
可能更合适。