Zabbix中“处理器负载过高”触发器的优化配置

Reb*_*Reb 2 linux performance-monitoring cpu-usage zabbix

我监控大约。10 台 Linux 服务器,每台带有 Zabbix 的 4 个 CPU 内核。
我最近收到了许多来自“处理器负载过高”触发器的误报。
“处理器负载太高”触发表达式是:

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

这是默认的。

然后我将 5 加到 12 以减少警报,但不知何故认为这不是处理它的最佳方法。因此我做了一些谷歌搜索并构建了一个新的触发器。

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

我会问社区:

  1. 新表达式会比原始表达式更好地反映真正的 CPU 过载吗?
  2. 你会以某种不同的/更好/更优化的方式做吗?
  3. 你将如何编写一个表达式,它会这样做:
    触发器将在以下情况下触发:

    • 在 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)
Run Code Online (Sandbox Code Playgroud)

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

Jan*_*raj 5

为什么在您的情况下“处理器负载过高”误报?这对我来说是真实的症状 - CPU 饱和了。

恕我直言:仅使用

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

但阈值取决于您的服务器 - 它在做什么以及如何做。但是 >5 值对我来说是可疑的。示例:CPU 使用率可能很低,但 CPU 负载很高 - 在这种情况下,这可能是“缓慢”IO 磁盘操作的症状(您需要检查指标 CPU iowait 使用率、磁盘队列长度等)。您的新组合触发器表达式没有捕捉到这种情况。

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