首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Zabbix触发器不适用于计数函数

Zabbix触发器不适用于计数函数
EN

Server Fault用户
提问于 2019-07-31 12:54:26
回答 1查看 1.5K关注 0票数 1

如果服务器在一天内有x次空闲内存下降到阈值以下,我将试图发出警告。

代码语言:javascript
复制
{my_template:vm.memory.size[free].count(1m,5G,lt,1d)}>5
代码语言:javascript
复制
{my_template:vm.memory.size[free].count(1m,5368709120,lt,1d)}>5

当空闲内存9G...but失败时,我也尝试过这种方法。

代码语言:javascript
复制
{my_template:vm.memory.size[free].count(1m,5G,gt,1d)}>5
EN

回答 1

Server Fault用户

发布于 2019-07-31 13:11:29

count函数的Zabbix文件指定以下选项:

计数(sec|#num,,,)

关于time_shift,这将更详细地解释它所做的事情。

有几个函数支持额外的第二个time_shift参数。此参数允许引用过去一段时间的数据。例如,avg(1h,1d)将返回一天前一小时的平均值。

你的例子在第一个参数中使用了1m,这意味着他们只看一分钟的时间周期,而通过将它移到1d,你看到的是1分钟的时间周期,准确地说是24小时前。这看起来不像是你想看的。

您似乎正确地使用了第二个和第三个参数,以及函数外部的操作符。

为了得到您所描述的触发器,我放弃了time_shift,并将第一个参数设置为1d。

这可能更接近您所描述的:

代码语言:javascript
复制
{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“。它可以使用这个公式:

代码语言:javascript
复制
max(vm.memory.size[free], 5m)<5368709120

当最后5分钟的空闲内存的最高值低于5G时,它将存储1,否则,为0。

然后,根据该新项创建一个触发器:

代码语言:javascript
复制
{my_template:foo.bar.free.memory.low.count(1d,0,gt)}>5

当在过去的一天中有超过5次这样的下降时,这个触发器就会开火。

这种方法应该真正减少假阳性,并更可靠地计算真实内存倾角。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/977419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档