我监视约。 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
我会问社区:
你将如何撰写一个expression,这将做到这一点:
触发器将在以下情况下触发
我在一些文章中跟着例子,并尝试过
({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