ELK+filebeat
一、filebeat概述
1、filebeat概念:
filebeat日志收集工具和logstash相同
filebeat是一款轻量级的日志收集工具,可以在非JAVA环境下运行。
因此,filebeat常被用在非JAVAf的服务器上用于替代Logstash,收集日志信息。
实际上,Filebeat几乎可以起到与Logstash相同的作用,
可以将数据转发到Logstash、Redis或者是Elasticsearch中进行直接处理。
为什么要用filebeat来收集日志?为什么不直接使用lohstash收集日志?
因为logstash是jvm跑的,资源消耗比较大,启动一个logstash就需要消耗500M左右的内存
(这就是为什么logstash启动特别慢的原因)。
而filebeat只需要10M左右的内存资源。
常用的ELK日志采集方案中,大部分的做法就是将所有节点的日志内容通过filebeat发送到logstash,
lostash根据配置文件进行过滤,然后将过滤之后的文件传输到elasticsearch中,最后通过kibana展示。
2、filebeat的优缺点
优点:
filebeat是一个轻量级的日志收集工具,所使用的系统资源比logstash部署和启动时使用的资源要小的多
filebeat可以运行在非java环境。他可以代替logstash在非Java环境上收集日志
filebeat收集的数据可以发往多个主机。远程收集
缺点:
filebeat无法实现数据的过滤,一般是结合logstash的数据过滤功能一块使用
logstash 500M firebeat 10M
yml格式严格执行缩进
3、filebeat结合logstash带来的好处?
1、通过logstash,具有基于磁盘的自适应缓冲系统,该系统将吸收传入的吞吐量,
从而减轻Elasticsearch持续写入数据的压力。
2、从其它数据源(例如数据库,s3对象存储或消息传递队列)中提取
3、将数据发送到多个目的地,例如S3,HDFS(hadoop分部署文件系统)或写入文件
4、使用数据流逻辑组成更复杂的处理管道。
4、工作流程图:
二、filebeat+ELK实验部署
架构:
ES节点两个:
node1:192.168.183.10
node2:192.168.183.20
日志节点(logstash、kibana、filebeat):192.168.183.30
1.安装 Filebeat
#上传软件包 filebeat-6.7.2-linux-x86_64.tar.gz 到/opt目录
tar zxvf filebeat-6.7.2-linux-x86_64.tar.gz
mv filebeat-6.7.2-linux-x86_64/ /usr/local/filebeat
#时间同步
yum install ntpdate -y
ntpdate ntp.aliyun.com
2.设置 filebeat 的主配置文件
cd /usr/local/filebeat
vim filebeat.yml
filebeat.inputs:
-
type: log
enabled: true
paths:
-
/usr/local/nginx/logs/access.log
-
/usr/local/nginx/logs/error.log
tags: ["nginx_23"]
fields:
service_name: 20.0.0.23_nginx
log_type: nginx
from: 20.0.0.23
-
Elasticsearch output模块全部注释掉
因为filebeat只能收集日志,不能过滤日志,所以需要先发给logstash过滤处理日志,再由logstash发送给elasticsearch。这里不直接发送给elasticsearch
Logstash output
配置logsatsh
input {
beats { port => "5044" }
}
output {
if "nginx_23" in [tags] {
elasticsearch {
hosts => ["20.0.0.21:9200","20.0.0.22:9200"]
index =>"%{[fields][service_name]}-%{+YYYY.MM.dd}"
}
}
stdout {
codec => rubydebug
}
}
启动 filebeat:
nohup ./filebeat -e -c filebeat.yml > filebeat.out &
-e:输出到标准输出,禁用syslog/文件输出
-c:指定配置文件
nohup:在系统后台不挂断地运行命令,退出终端不会影响程序的运行
给所要操作的日志访问权限
chmod 777 access.log error.log
启动logstash配置:****
logstash -f nginx_23.conf --path.data /opt/test1 &
filebeat 远程收集日志
工作过程:
filebeat和logstash不部署在同一节点上
filebeat先在节点上收集日志,在远程发送给logstash。
在节点上安装filebeat
配置filebeat文件:
Filebeat inputs
Elasticsearch output(全部注释掉)
Logstash output
output.logstash:
The Logstash hosts
hosts: ["20.0.0.23:5045"] #指定 logstash 的 IP 和端口
配置logstash(去logstash节点)
启动 filebeat(filebeat节点)
cd /usr/local/filebeat
nohup ./filebeat -e -c filebeat.yml > filebeat.out &
去logstash节点启动
logstash -f nhm.conf --path.data /opt/test2 &
logstash可以使用任意端口,只要没被占用都可以使用,推荐1024之后开始
如何对logstash做性能上的优化
logstash启动是在jvm虚拟机上启动的,启动一次至少占500M内存
pipeline.workers: 2
logstash的工作线程,默认值就是cpu数,4核给2, 8核 给4 给一半即可
pipeline.batch.size 125
一次性能够批量处理检索事件的大小默认125。性能好可以给 200
pipline.batch.delay: 50
查询更新的延迟。50毫秒,可以自行调整。生产中15 、10。看机器性能
gstash可以使用任意端口,只要没被占用都可以使用,推荐1024之后开始
如何对logstash做性能上的优化
logstash启动是在jvm虚拟机上启动的,启动一次至少占500M内存
pipeline.workers: 2
logstash的工作线程,默认值就是cpu数,4核给2, 8核 给4 给一半即可
pipeline.batch.size 125
一次性能够批量处理检索事件的大小默认125。性能好可以给 200
pipline.batch.delay: 50
查询更新的延迟。50毫秒,可以自行调整。生产中15 、10。看机器性能