为什么使用Filebeat给Logstash收集日志
Logstash本身也是能收集日志的,只不过占用的cup和内存比较多,不是安全传输,是框架级别。filter功能过滤分析,过滤能力强,使用面很广。
Filebeat收集日志是占用的CPU和内存给Logstash少很多,性能给Logstash好很多,收集日志速度比Logstash快很多。
即使Logstash既能过滤也可以收集日志,但是我们考虑而资源占用和性能问题,果断的选择使用Filebeat给Logstash收集日志。
那这样,Filebeat能都代替Logstash呢?
必然是不能的,Filebeat的过滤功能弱于Logstash,虽然使用Filebeat收集日志,但过滤还是使用自己的更强大。
具体操作:
1、先将Filebeat安装好。
2、配置logstash.conf文件
input {
beats {
port => 5041 //配置文件输入的端口号。
}
}
output {
stdout {
codec => rubydebug
}
elasticsearch {
hosts => "elasticsearch 的ip:9200"
index => "log-%{+YYYY.MM.dd}"
}
}
3、配置filebeat.yml文件
在开头配置输入*.log的位置。
filebeat.inputs:
# Each - is an input. Most options can be set at the input level, so
# you can use different inputs for various configurations.
# Below are the input specific configurations.
- type: log
# Change to true to enable this input configuration.
enabled: true
# Paths that should be crawled and fetched. Glob based paths.
paths:
- /var/log/*.log
//日志的具体位置。
output.logstash:
# The Logstash hosts
hosts: ["Logstash的IP:5041"]
//5041端口号要和logstash输入的端口号一致。
4、执行命令进行测试
在filebeat安装的目录下执行
sudo ./filebeat -e -c filebeat.yml -d "publish"
在logstash安装目录下执行
bin/logstash -f logstash.conf
A、在/var/log目录下新建T.log文件并写入”tw”。
a、filebeat输出的信息是
2018-09-16T16:11:02.533+0800
INFO
log/harvester.go:251
Harvester started for file: /var/log/1.log
b、logstash输出的信息是
通过以上的配置让Filebeat收集日志扔给Logstash来过滤,然后再扔给Elasticsearch。
ELK使用Filebeat给Logstash采集日志,成功!