filebeat如何安装?怎样配置?
linuxe发表于 2020-10-21 11:41 次浏览
概述:Filebeat是一个日志文件托运工具,在你的服务器上安装客户端后,filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件(追踪文件的变化,不停的读),并且转发这些信息到elasticsearch、logstarsh或者redis中存放。
一、Filebeat是什么
由于原始的ELK架构中Logstash依赖JAVA环境,偏重量级,占用系统资源较高,而且每台客户端都要配置JDK也比较麻烦。所以现在通常采用ELFK架构,这个F就是Filebeat。除了偏向日志采集的Filebeat外,还有许多beat成员,比如偏向指标的metricbeat、偏向数据包的packetbeat等。ELK常见架构对比:
1、Logstash-->Elasticsearch-->Kibana(适合分析,但偏重量级)
2、Filebeat-->Elasticsearch-->Kibana(只适合查看日志,不适合分析)
3、Filebeat-->Logstash(需要开启端口监听)--> Elasticsearch--> Kibana(适合分析)
二、Elasticsearch+Filebeat+Kibana架构部署
1、下载Filebeat二进制包并解压即可
1 |
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.6.0-linux-x86_64.tar.gz |
2 |
tar zxf filebeat-6.3.0-linux-x86_64.tar.gz |
3 |
mv filebeat-6.3.0-linux-x86_64 /usr/local/ |
2、Filebeat的目录结构与配置,主要关注的就是可执行文件filebeat和配置文件filebeat.yml。
3、编辑配置文件filebeat.yml修改输入输出配置项。首先将输出直接给到ES处理,配置如下:
03 |
- type: log #除了log,还有stdin、redis、docker等类型 |
06 |
- /var/log/message.log |
07 |
# include_lines: ['^ERR','^WARN'] #只采集正则所包含的日志 |
08 |
tags: ["system"] #定义标签,采集多个日志的时候可以用标签来创建索引,也可以用logstash的type来区分 |
14 |
- /var/log/nginx/access.log |
17 |
#采集tomcat日志,使用了multiline插件 |
21 |
- /var/log/tomcat/tomcat_log.*.txt |
22 |
multiline.pattern: '^\d{2}' #匹配以2个数字开头的日志 |
23 |
multiline.negate: true |
24 |
multiline.match: after |
25 |
multiline.max_lines: 1000 #合并的最大行数,默认是500 |
29 |
output.elasticsearch: #直接输出给ES |
30 |
hosts: ["http://192.168.1.100:9200"] #集群的话写多个地址,用逗号分隔 |
32 |
- index: "system-%{[agent.version]}-%{+yyyy.MM.dd}" |
35 |
- index: "nginx-%{[agent.version]}-%{+yyyy.MM.dd}" |
4、启动Filebeat,启动速度相比Logstash会快许多,内存占用也更少
1 |
nohup /usr/local/filebeat/filebeat -e -c /usr/local/filebeat/filebeat.yml & |
5、使用Kibana查看数据并出图
三、Elasticsearch+Logstash+Filebeat架构
如果Filebeat直接把日志传给ES的话,由于其不支持正则、无法移除字段等,没办法实现数据分析,所以更优的配置是将Filebeat收集到的日志输出给一台Logstash服务器,由Logstash处理后再给ES。
1、修改Filebeat输出段的配置,将输出给到Logstash,其他配置不动
05 |
- /var/log/nginx/access.log |
10 |
- /var/log/nginx/error.log |
14 |
hosts: ["192.168.94.10:5044"] |
2、修改Logstash input相关配置,其他不动
03 |
host => '192.168.1.100' #如果配置了很多个beat,那这行可以不写,只保留port部分 |
11 |
"message" => '(?<source_ip>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}) - [a-zA-Z0-9-]+ \[(?<nginx_time>[^ ]+) \+\d+\] "(?<method>[A-Z]+) (?<request_url>[^ ]+) HTTP/\d.\d" (?<status>\d+) \d+ "(?<referer>[^"]+)" "(?<agent>[^"]+)" ".*"' |
18 |
match => ["timestamp","dd/MMM/yyyy:HH:mm:ss Z" |
19 |
target => "@timestamp" |
20 |
timezone => "Asia/Shanghai" |
23 |
convert => ["bytes","integer"] |
24 |
convert => ["response_time","float"] |
25 |
remove_field => ["message","agent","tags"] |
31 |
hosts => ["http://127.0.0.1:9200"] |
四、使用Filebeat的module快速配置
Filebeat已经为使用者提供了大量的module,比如Nginx module、MySQL module等。开启module后可以省去很多配置,包括Kibana上的出图(可以通过官方module学习出图)。下面以MySQL为例进行配置:
1、启动module
1 |
filebeat modules enable mysql |
2、配置module,只需要修改日志路径
1 |
vi /etc/filebeat/modules.d/mysql.yml |
5 |
var.paths: ["/var/log/mysql/error.log"] |
3、初始化环境,如果有安装多个module的话只用初始化一次
4、重启filebeat,需要注意的是索引名是自动创建好了的,不要自定义,然后到Kibana中看图即可
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。