一、Filebeat简介:
Filebeat是一个开源的轻量级日志收集器,用于将日志数据发送到指定的中央服务系统。主要分为三个部分。
Prospector 负责检测指定日志目录或文件,并对检测到的每个日志文件,filebeat启动一个收割进程(harvester),Filebeat目前支持两种Prospector类型:log和stdin,每个Prospector类型可以在配置文件中定义多个。 Harvester 负责读取单个文件内容,harvester负责文件的打开和关闭,并将读取到的新内容发送到处理程序(spooler) Spooler 集合harvester发送的数据,并将数据发送到指定地点。 Filebeat保持每个文件的状态,并频繁地将Harvester上次读取文件的位置从注册表更新到磁盘,确保将全部的日志数据读取出来。
如果output出行故障,Filebeat会将最后的文件读取位置保存下来,直到output恢复快速地对文件进行读取;如果Filebeat故障重启,会从注册表恢复重启之前的状态信息,让Filebeat继续从之前已知的位置开始进行读取。
二、CPU过高原因分析:
考虑可能造成Filebeat CPU的原因:
1、配置问题
配置统一采用运维打包filebeat,并且采用 yum源安装。并对比filebeat国内外服务发现配置完全一样,未做其他变更。
2、日志量过大
日志量均在可控范围内,海外项目数据量均偏少:
韩国妖尾项目日增数据量为:217407条左右
放开三国3项目日增数据量为:20385029条。
放开那三国3cpu占用量较少出现过高问题。
3、版本不兼容问题
检查filebeat和kafka属于兼容版本,且为官方样例版本。
4、网络波动问题
和运维对接分析,考虑之前PJ及其他国际服项目,采用外网服务,网络波动相对较大。考虑往kafka发送阶段,filebeat获取kafka topic元数据相对缓慢,频繁获取可能导致负载过高。
5、向运维相关人员寻求分析CPU过高问题
检查配置海外节点均为4核左右,负载在0.3~1.7之间,CPU普遍占用量在20%~170%之间,整体负载低于50%以下,认为在合理范围内。
三、性能监控与对比分析:
①基于Filebeat配置优化处理:
max_procs: 2 参数限制核数为1核或者2核,CPU使用量在控制在可控范围内,配置后,发现CPU使用有所下降,负载在0.2~1.0之间,使用量在20%及以上,依然过高。
②各项目对比分析:
挑选国服放三3和日本PJ项目进行具体对比分析:
a、发现三国3采集的数据存在定时归档行为,海外项目归档行为人为不定期归档,数据目录过多。考虑是否为不归档造成CPU使用量过高。
b、协商运维同学对日本PJ项目aliyunjp-pj-data-logic-237-6节点的历史数据进行归档打包并压缩处理,处理后经top命令发现CPU恢复正常范围,负载明显减低,均处于20%以下,图示如下;
三、基于go tool pprof插件,针对韩国妖尾项目检测filebeat的CPU具体占用情况。
1、filebeat启动添加pprof功能:--httpprof 0.0.0.0:6060
2、运维安装go tool相关环境,top -cum命令查看消耗cpu的几个进程。
pirate 22429 19105 0 15:50 pts/5 00:00:00 grep --color=auto filebeat pirate 26545 1 99 12:09 ? 07:03:57 /home/pirate/programs/filebeat/filebeat -c filebeat.yml --httpprof 0.0.0.0:6060 [pirate@kor-krft-data-40-157 ~]$ go tool pprof http://localhost:6060/debug/pprof/profile Fetching profile over HTTP from http://localhost:6060/debug/pprof/profile top Saved profile in /home/pirate/pprof/pprof.filebeat.samples.cpu.002.pb.gz File: filebeat Build ID: 929062942e72425e2e93652bda4c5e296694c954 Type: cpu Time: Oct 23, 2023 at 3:52pm (KST) Duration: 30s, Total samples = 3.41s (11.37%) Entering interactive mode (type "help" for commands, "o" for options) (pprof) (pprof) top -cum Showing nodes accounting for 0.91s, 26.69% of 3.41s total Dropped 95 nodes (cum <= 0.02s) Showing top 10 nodes out of 178 flat flat% sum% cum cum% 0 0% 0% 1.89s 55.43% github.com/elastic/beats/filebeat/input.(*Runner).Run 0 0% 0% 1.89s 55.43% github.com/elastic/beats/filebeat/input.(*Runner).Start.func1 0 0% 0% 1.89s 55.43% github.com/elastic/beats/filebeat/input/log.(*Input).Run 0 0% 0% 1.75s 51.32% github.com/elastic/beats/filebeat/input/log.(*Input).scan 0.01s 0.29% 0.29% 1.71s 50.15% github.com/elastic/beats/filebeat/input/log.(*Input).getFiles 0 0% 0.29% 1.33s 39.00% path/filepath.Glob 0 0% 0.29% 1.33s 39.00% path/filepath.glob 0.01s 0.29% 0.59% 1.06s 31.09% runtime.systemstack 0.89s 26.10% 26.69% 0.91s 26.69% syscall.Syscall6 0 0% 26.69% 0.68s 19.94% syscall.fstatat
Syscall6简介:
1、在 pprof 中,Syscall6 函数类型通常会出现在 CPU profile 的结果中,用于显示程序在运行过程中调用 Syscall6 函数的情况。Syscall6 的出现可能意味着某些操作需要与操作系统进行交互,例如文件读写、网络通信等。 2、通过查看 Syscall6 函数相关的调用栈信息,可以帮助分析和优化程序中与系统调用相关的性能问题。可以关注调用频率高的 Syscall6 函数,以确定是否存在潜在的性能瓶颈或效率低下的代码逻辑。
详细的可以通过"go tool pprof --http="0.0.0.0:8086" /home/pirate/programs/filebeat/pprof.filebeat.samples.cpu.002.pb.gz"命令显示上述cpu.002.pb.gz web界面。(注:需要安装一些go等相关环境)
pprof web主页面(有堆栈、内存、CPU各项参数,可以具体分析CPU占用相关函数等)
标签:Filebeat,pprof,占用,filebeat,pirate,日志,CPU From: https://www.cnblogs.com/-courage/p/17789082.html