Zabbix中“处理器负载过高”触发器的最佳configuration

我监视约。 10个Linux服务器,每个Zabbix有4个CPU核心。
最近触发了“处理器负载过高”的许多误报。
“处理器负载过高”的触发expression式是:

{Template OS Linux:system.cpu.load[percpu,avg1].avg(5m)}>5 

这是默认的。

然后我提高了5到12来减less警报,但不知何故,这并不是解决这个问题的最好办法。 所以我做了一些Googlesearch,并构build了一个新的触发器。

 {Template OS Linux:system.cpu.util[,user].max(5m)}>75 

我会问社区:

  1. 新的expression会反映真实的CPU过载比原来的更好吗?
  2. 你会做不同的/更好/更优化吗?
  3. 你将如何撰写一个expression,这将做到这一点:
    触发器将在以下情况下触发

    • 在perCPU队列中等待的进程平均5分钟将超过3
    • 过去5分钟内CPU的最大利用率将高于75%

我在一些文章中跟着例子,并尝试过

 ({Template OS Linux:system.cpu.load[percpu,avg1].avg(5m)}>3 & {Template OS Linux:system.cpu.util[,user].max(5m)}>75) 

但我失败了
Zabbix服务器返回错误:
触发器expression式不正确。 从“&{Template OS Linux:system.cpu.util [,user] .max(5m)}> 75)”开始检查expression式部分。
由于我不是Zabbix(还)的一些嗨专家,评论将非常令人满意。 谢谢。

为什么在你的情况下,“处理器负载太高”误报? 这对我来说是真正的症状 – CPU已经饱和。

恕我直言:只使用

 {Template OS Linux:system.cpu.load[percpu,avg1].avg(5m)}>5 

但门槛取决于你的服务器 – 它是怎么做的。 但是> 5的价值对我来说是可疑的。 例如:CPU使用率可能很低,但是CPU负载很高 – 在这种情况下,它可能是“慢”IO磁盘操作的症状(您将需要检查CPU Iowait使用情况,磁盘队列长度等指标)。 您新的组合触发器expression式不能捕捉到这种情况。

我推荐Netflix高级性能架构师关于使用率/饱和度的文章: http : //www.brendangregg.com/usemethod.html

我会build议这样的事情:

 {Template OS Linux:system.cpu.load[percpu,avg15].avg(15m)}>1.8 

其目的是让您的警报响应时间更慢,而不是提高到更高的阈值。 通常在5或10分钟之后清除的一连串活动并不是什么大问题,根据你在那里做什么可能是完全正常的。 但是,如果重负载持续很长一段时间,那就是你想知道的时间。 根据你典型的工作负载看起来,将阈值1.8调高或调低一点。

就你在这里的expression而言:

 {Template OS Linux:system.cpu.util[,user].max(5m)}>75 

我不build议在这种情况下使用max()函数,因为即使是一瞬间的高活动,它也会很敏感,除非这是你真正想要的,但是不要抱怨得到很多警报。

最后,是的,你可以使用布尔expression式,并有一个文档页面来帮助你。 看一下这个:

https://www.zabbix.com/documentation/3.2/manual/config/triggers/expression#operators