Filebeat CPU利用率在Zabbix和Kibana堆栈监控上有所不同

Filebeat CPU利用率在Zabbix和Kibana堆栈监控上有所不同,kibana,zabbix,filebeat,systemctl,Kibana,Zabbix,Filebeat,Systemctl,在我们的系统上运行了一个小时的性能测试。这次运行产生了如此多的日志,以至于Filebeat(7.2.1版)实际上又花了三个多小时来处理所有日志。令人困惑的是,Zabbix和Kibana堆栈监控产生的CPU利用率报告 Zabbix报告如下所示 它表明,在测试完成后(即从13:00开始)三小时内,CPU的使用率为20% 另一方面,Kibana Stack Monitoring显示CPU在同一时期的使用率为80% Kibana上的工具提示显示: 为节拍执行(用户+内核模式)所花费的CPU时间百分比

在我们的系统上运行了一个小时的性能测试。这次运行产生了如此多的日志,以至于Filebeat(7.2.1版)实际上又花了三个多小时来处理所有日志。令人困惑的是,Zabbix和Kibana堆栈监控产生的CPU利用率报告

Zabbix报告如下所示

它表明,在测试完成后(即从13:00开始)三小时内,CPU的使用率为20%

另一方面,Kibana Stack Monitoring显示CPU在同一时期的使用率为80%

Kibana上的工具提示显示:

为节拍执行(用户+内核模式)所花费的CPU时间百分比 过程

因此,该用法显然仅适用于Filebeat进程。这与Zabbix报告的20%不符

值得一提的是,在
filebeat.yml
中,未设置
max_procs
的值,这意味着默认情况下,它使用系统中的所有逻辑CPU。(见附件)。系统中有四个内核,总共有四个逻辑CPU。来自lscpu的输出

CPU(s):                4
Thread(s) per core:    1
Core(s) per socket:    4
Socket(s):             1
我们使用systemctl运行Filebeat

有人能解释这种行为吗? 可能是Filebeat以某种方式仅使用一个核心还是systemctl将其限制为一个核心?

只是一个假设:

Zabbix
system.cpu.*
项已标准化,因此20%的使用率应与两种情况相匹配:

  • 1个CPU占80%,3个CPU不带负载
  • 4个CPU,每个CPU负载为20%
通过在线检查,在我看来(如果我错了,请纠正我,我不是麋鹿专家!)kibana/metricbeat CPU使用率在默认情况下没有标准化,因此4个CPU的上限是400%

有一个讨论和相应的解决方法

这可以解释Zabbix的标准化20%等于Kibana/Metricbeat的非标准化80%值

但是,metricbeat是在80%时使用1个CPU,还是在20%时使用4个CPU?我不知道,但根据
max\u procs
它应该使用所有4个只是一个假设:

Zabbix
system.cpu.*
项已标准化,因此20%的使用率应与两种情况相匹配:

  • 1个CPU占80%,3个CPU不带负载
  • 4个CPU,每个CPU负载为20%
通过在线检查,在我看来(如果我错了,请纠正我,我不是麋鹿专家!)kibana/metricbeat CPU使用率在默认情况下没有标准化,因此4个CPU的上限是400%

有一个讨论和相应的解决方法

这可以解释Zabbix的标准化20%等于Kibana/Metricbeat的非标准化80%值


但是,metricbeat是在80%时使用1个CPU,还是在20%时使用4个CPU?我不知道,但是根据
max_procs
它应该使用所有4个来添加,就像在Kibana堆栈监控中:Filebeat CPU利用率没有标准化,而Elasticsearch CPU利用率是标准化的。只需添加一点,就会让人感到困惑,就像在Kibana堆栈监控中:Filebeat CPU利用率没有标准化,而Elasticsearch CPU利用率是标准化的。可能真的很困惑