利用filebeat采集日志
利用filebeat采集日志
beats是ELK体系中新增的一个工具,, 属于一个轻量的日志采集器, 前面我们使用的日志采集工具是logstash, 但是logstash占用的资源比较大, 没有beats轻量, 所以官方也推荐使用beats来作为日志采集工具。且beats可扩展, 支持自定义构建
Beats可以直接(或者通过Logstash)将数据发送到Elasticsearch,在那里你可以进一步处理和增强数据,然后在Kibana中将其可视化。
filebeat
发送到ES
output.elasticsearch:
hosts: ["192.168.10.11:9200"] #配置es服务器的ip地址
发送到kafka
output.kafka:
hosts: ["192.168.10.1:9092,192.168.10.2:9092,192.168.10.3:9092"]
topic: 'nginx'
发送到logstash
output.logstash:
# The Logstash hosts
hosts: [“192.168.10.11:5044”]
index: shopweb
发送到ES集群
1.安装
# tar xf filebeat-6.4.1-linux-x86_64.tar.gz
# mv filebeat-6.4.1-linux-x86_64 /usr/local/filebeat
2.测试
# cd /usr/local/filebeat/
# vim filebeat.yml
filebeat.prospectors:
- type: log
#enabled: false #这一句要注释掉
paths:
- /var/log/messages #指定需要收集的日志文件的路径
#output.elasticsearch: #先将这几句注释掉
# hosts: ["localhost:9200"]
output.console:
enable: true
# ./filebeat -c filebeat.yml #看看是否有在终端中打印日志数据, 有打印则代表filebeat能够正常收集日志数据
3.测试完成后,修改配置文件,让filebeat以服务的方式启动
# vim filebeat.yml
#output.console: 把这两句注释掉
# enable: true
output.elasticsearch:
hosts: ["192.168.10.11:9200"] #配置es服务器的ip地址
# ./filebeat -c filebeat.yml &
4.启动成功后, 到es服务器上查看索引, 可以看到新增了一个以filebeat开头的索引, 这就代表filesbeat和es能够正常通信了
5.可以到kibana上配置这个索引并查看了
简单配置
filebeat配置:
# vim cat test.yml
filebeat.inputs:
- type: log
paths:
- /var/log/httpd/access_log
output.logstash:
hosts: ["192.168.10.140:5044"]
logstash配置:
input {
beats {
port => 5044
}
}
其它略
采集多个日志
filebeat配置:
# cat test.yml
filebeat.inputs:
- type: log
paths:
- /var/log/httpd/access_log
fields:
filetype: web # 用于区别不同的日志
fields_under_root: true # 将自定义字段置于顶层
- type: log
paths:
- /var/log/secure
fields:
filetype: sys
fields_under_root: true
output.logstash:
hosts: ["192.168.10.140:5044"]
logstash配置:
# cat input-beat.conf
input {
beats {
port => 5044
}
}
filter {
if [filetype] == "web" {
grok {
match => {
"message" => "%{COMBINEDAPACHELOG}"
}
remove_field => ["message","beat","offset","tags","prospector"]
}
}
}
output {
if [filetype] == "web" {
elasticsearch {
hosts => ["192.168.10.130:9200"]
index => "http-%{+YYYY.MM.dd}"
}
}
else if [filetype] == "sys" {
elasticsearch {
hosts => ["192.168.10.130:9200"]
index => "syslog-%{+YYYY.MM.dd}"
}
}
}