从零进阶--教你如何使用Filebeat实现日志可视化收集
简介:
Filebeat是一个开源的文件收集器,也是一款轻量级的日志传输工具。采用go语言开发,重构logstash采集器源码,安装在服务器上作为代理来监视日志目录或特定的日志文件,并把它们发送到logstash或elasticsearch,然后在Kibana上实现可视化。
其他介绍可参考官方文档:
https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-configuration-details.html#configuration-output
一、Filebeat安装
下载地址:
源码安装:
wget
https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.4.1-linux-x86_64.tar.gz
rpm下载安装:
curl -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.4.1-x86_64.rpm
rpm -ivh filebeat-6.4.1-x86_64.rpm
下面我们以rpm安装
image.png
二、Filebeat应用
因为我的是以rpm安装的,所以我们可以在/etc/filebeat/下面发现有filebeat.yml
image.png
我们可以发现在filebeat.yml配置文件里面,主要配置的模块有两个
· Filebeat input
· Output
Filebeat: 在这个模块里面,我们可以配置监控的日志,通过这个模块,我们可以指定日志的绝对路径,日志的类型,感知更新时间等等的·一些配置。
Output:在这个模块里面,主要的作用的是,filesbetas收集的日志输出到哪里,在这里,我们可以配置elasticsearch和logstash,两者二选一就可以了。
配置收集日志目录:
/etc/filebeat/filebeat.yml
下面以获取nginx的日志为例
安装Elasticsearch GeoIP和用户代理插件
在es的服务器上:
#su - www
#cd /usr/local/elasticsearch
#bin /elasticsearch-plugin install ingest-geoip
#bin /elasticsearch-plugin install ingest-user-agent
三、Filebeat采集数据,写入到elasticsearch
修改Filebeat配置
#vim /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: log #定义日志格式
enabled: true
paths:
- /data/wwwlogs/*.log #定义日志的路径
output.elasticsearch:
hosts: ["172.25.0.30:9200"] #定义的es的url
username: "elastic" 定义es的账号,已做安全连接
password: "changeme"
setup.kibana:
host: "172.25.0.30:5601" #定义kibana的url
启动filebeat
#cd /etc/filebeat
#filebeat modules enable nginx
修改/etc/filebeat/modules.d/nginx.yml文件中的设置
#vim /etc/filebeat/modules.d/nginx.yml
# cat modules.d/nginx.yml
- module: nginx
# Access logs
access:
enabled: true
var.paths: ["/data/wwwlogs/*.log"]
# Error logs
error:
enabled: true
var.paths: ["/data/wwwlogs/error.log"]
#filebeat setup
# service filebeat start
Starting filebeat (via systemctl): [ OK ]
进去kibana添加filebeat
image.png
image.png
下一步就可以创建完毕了
image.png
创建完毕后
我们直接跳到Discover,查看我们获取的数据
image.png
可以发现我们是已经获取到nginx的完整的数据了
继续查看我们的nginx的仪表板。
image.png
我们可以发现,我已经可以通过filebeat采集到nginx的日志的数据了,并生成的数据图像,到这里我们的获取数据就完成了,elasticsearch通过filebeat获取数据就完成了。
四、Filebeat采集数据,写入到logstash
1、修改Filebeat配置
#vim /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: log #定义日志格式
enabled: true
paths:
- /data/wwwlogs/*.log #定义日志的路径
output.logstash:
# The Logstash hosts
hosts: ["172.25.0.30:5044"]
2、配置logstash
logstash服务器:
因为需要配置logstah来获取数据,所以我们需要配置logstash
#vim /etc/logstash/conf.d/filebeat.conf
input {
beats {
port => "5044" #定义输入端口
}
}
filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
date {
match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]
target => ["datetime"]
}
geoip {
source => "clientip"
}
}
output {
elasticsearch {
hosts => "172.25.0.30:9200" #定义输出的es的url。
index => "nginx_log" #定义标题索引
}
stdout { codec => rubydebug }
}
更改权限
#chown www:www /etc/logstash/conf.d/filebeat.conf
3、启动logstash,测试
#
./usr/local/src/logstash-6.3.0/bin/logstash
-f /etc/logstash/conf.d/filebeat.conf
启动之后,可以发现logstash已经从filebeat收集到数据了
image.png
查看logstash的启动状态,发现5044已经起来了。
image.png
4、添加索引,出数据
image.png
查看是否已经获取到数据
image.png
我们发现已经是可以获取到目标主机的nginx日志了。到这里我们使用logstash获取日志就完成了。
五、总结
Filebeat不仅仅可以收集nginx,还可以收集mysql、apache、redis和系统日志。从我们的搭建过程来看,可以发现filebeat配置并不是很难,不过更好的应用还是需要进一步熟悉才行。。
©著作权归作者所有:来自51CTO博客作者技术小疯子的原创作品,如需转载,请注明出处,否则将追究法律责任
每一份赞赏源于懂得