Filebeat CPU利用率在Zabbix和Kibana堆栈监控上有所不同
在我们的系统上运行了一个小时的性能测试。这次运行产生了如此多的日志,以至于Filebeat(7.2.1版)实际上又花了三个多小时来处理所有日志。令人困惑的是,Zabbix和Kibana堆栈监控产生的CPU利用率报告 Zabbix报告如下所示 它表明,在测试完成后(即从13:00开始)三小时内,CPU的使用率为20% 另一方面,Kibana Stack Monitoring显示CPU在同一时期的使用率为80% Kibana上的工具提示显示: 为节拍执行(用户+内核模式)所花费的CPU时间百分比 过程 因此,该用法显然仅适用于Filebeat进程。这与Zabbix报告的20%不符 值得一提的是,在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.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将其限制为一个核心?只是一个假设:
Zabbixsystem.cpu.*
项已标准化,因此20%的使用率应与两种情况相匹配:
- 1个CPU占80%,3个CPU不带负载
- 4个CPU,每个CPU负载为20%
max\u procs
它应该使用所有4个只是一个假设:
Zabbixsystem.cpu.*
项已标准化,因此20%的使用率应与两种情况相匹配:
- 1个CPU占80%,3个CPU不带负载
- 4个CPU,每个CPU负载为20%
但是,metricbeat是在80%时使用1个CPU,还是在20%时使用4个CPU?我不知道,但是根据
max_procs
它应该使用所有4个来添加,就像在Kibana堆栈监控中:Filebeat CPU利用率没有标准化,而Elasticsearch CPU利用率是标准化的。只需添加一点,就会让人感到困惑,就像在Kibana堆栈监控中:Filebeat CPU利用率没有标准化,而Elasticsearch CPU利用率是标准化的。可能真的很困惑