如果服务器在一天内有x次空闲内存下降到阈值以下,我将试图发出警告。
{my_template:vm.memory.size[free].count(1m,5G,lt,1d)}>5{my_template:vm.memory.size[free].count(1m,5368709120,lt,1d)}>5当空闲内存9G...but失败时,我也尝试过这种方法。
{my_template:vm.memory.size[free].count(1m,5G,gt,1d)}>5发布于 2019-07-31 13:11:29
count函数的Zabbix文件指定以下选项:
计数(sec|#num,,,)
关于time_shift,这将更详细地解释它所做的事情。
有几个函数支持额外的第二个time_shift参数。此参数允许引用过去一段时间的数据。例如,avg(1h,1d)将返回一天前一小时的平均值。
你的例子在第一个参数中使用了1m,这意味着他们只看一分钟的时间周期,而通过将它移到1d,你看到的是1分钟的时间周期,准确地说是24小时前。这看起来不像是你想看的。
您似乎正确地使用了第二个和第三个参数,以及函数外部的操作符。
为了得到您所描述的触发器,我放弃了time_shift,并将第一个参数设置为1d。
这可能更接近您所描述的:
{my_template:vm.memory.size[free].count(1d,5368709120,lt)}>5但是,需要注意的是,count函数在很大程度上依赖于在指定的时间段内收集了多少个数据点,这取决于项目监视间隔。
在下面的示例中,Zabbix列出了过去24小时为内存收集的数据。由于间隔设置为30秒,这就提供了2880个数据点。

当您说要在count函数返回>5之后触发触发器时,这意味着当超过5/2880个数据点满足标准时,触发器就会触发。
这可以是>5分散布在整个一天,或>5个连续点,这意味着它发生了一次,2.5分钟。
也许更好的方法是创建一个新的计算项。让我们称之为"5分钟内存浸“。我会给它钥匙"foo.bar.free.memory.low“。它可以使用这个公式:
max(vm.memory.size[free], 5m)<5368709120当最后5分钟的空闲内存的最高值低于5G时,它将存储1,否则,为0。
然后,根据该新项创建一个触发器:
{my_template:foo.bar.free.memory.low.count(1d,0,gt)}>5当在过去的一天中有超过5次这样的下降时,这个触发器就会开火。
这种方法应该真正减少假阳性,并更可靠地计算真实内存倾角。
https://serverfault.com/questions/977419
复制相似问题