ELK系统使用filebeat替代logstash进行日志采集
最近部署ELK时发现logstash非常吃内存资源,就找了找相关资料,发现很多大佬都推荐filebeat做日志采集。
filebeat是一个ELK官方推出的轻量级日志收集工具,用go语言编写,相比logstash占用资源更少,安装也更方便,可以通过包管理直接安装。缺点是不具备logstash的filter
filebeat官方文档
测试了一下,8线程8GB内存下,logstash常驻内存660M(JAVA),filebeat常驻内存不到30M(GO),还不到logstash的零头。。。
考虑logstash可能对生产应用存在影响,决定采用filebeat替换logstash进行日志采集,然后将日志输出至redis,filter由ELK端logstash完成
为了方便查询以及后期编写filter,可以给日志打tag,然后通过匹配不同tag适配相应的filter(未测试),具体配置如下:
[root@20redis ~]# cat /etc/filebeat/filebeat.yml
filebeat.prospectors:
- input_type: log
paths:
- /tmp/test_filebeat.log
tags: "test_filebeat"
output.redis:
hosts: ["1.1.1.36:6379"]
key: "redis"
附logstash及filebeat内存占用对比
logstash内存占用
[root@test ~]# ps -ef | grep -v grep | grep logstash | awk '{print $2}'
12628
[root@test ~]# cat /proc/12628/status | grep -i vm
VmPeak: 6252788 kB
VmSize: 6189252 kB
VmLck: 0 kB
VmHWM: 661168 kB
VmRSS: 661168 kB
VmData: 6027136 kB
VmStk: 88 kB
VmExe: 4 kB
VmLib: 16648 kB
VmPTE: 1888 kB
VmSwap: 0 kB
filebeat内存占用
[root@test ~]# cat /proc/12750/status /proc/12751/status | grep -i vm
VmPeak: 11388 kB
VmSize: 11388 kB
VmLck: 0 kB
VmHWM: 232 kB
VmRSS: 232 kB
VmData: 10424 kB
VmStk: 88 kB
VmExe: 864 kB
VmLib: 0 kB
VmPTE: 16 kB
VmSwap: 0 kB
VmPeak: 25124 kB
VmSize: 25124 kB
VmLck: 0 kB
VmHWM: 15144 kB
VmRSS: 15144 kB
VmData: 15496 kB
VmStk: 88 kB
VmExe: 4796 kB
VmLib: 0 kB
VmPTE: 68 kB
VmSwap: 0 kB