一、概述
Filebeat是一個日志文件托運工具,做為一個agent安裝到服務(wù)器上,filebeat會監(jiān)控日志目錄或者指定的日志文件,追蹤讀取這些文件(追蹤文件的變化,不停的讀),并且轉(zhuǎn)發(fā)這些信息到elasticsearch或者logstarsh中存放。
*Filebeat包含兩個主要的組件,prospectors(探測器)和harvesters(收割機)。
1. harvesters(收割機)
harvesters負(fù)責(zé)一行一行地讀取日志文件,并將內(nèi)容發(fā)送到指定的輸出。
2. prospectors(探測器)
prospectors負(fù)責(zé)管理所有的harvesters,和發(fā)現(xiàn)所有的需要讀取的日志源。
如果輸入源是log(日志),prospectors根據(jù)配置路徑,查找驅(qū)動器上的所有匹配的日志文件,并為每個文件啟動一個收割機。
此組件一般情況下默認(rèn)就行,不用做配置。
*Filebeat內(nèi)置了很多模塊,封裝了日志的收集和過濾操作。
二、支持的模塊
activemq、apache、auditd、aws、azure、cef、cisco、coredns
elasticsearch、envoyproxy、googlecloud、haproxy、ibmmq、icinga
iis、iptables、kafka、kibana、logstash、misp、mongodb、mssql
mysql、nats、netflow、nginx、o365、okta、osquery、panw
postgresql、rabbitmq、redis、santa、suricata、system、traefik、zeek
三、模塊收集日志
*這里以system為例
(一)輸出到Elasticsearch中
- 配置啟動system模塊
filebeat modules enable system
filebeat modules list

- 找到日志文件
- 配置vim /etc/filebeat/modules.d/system.yml文件
這里system模塊默認(rèn)了路徑,一般都是在/var/log/mesagge和/var/log/secure
也可以自己配置路徑,只需去掉var.paths的注釋,然后添加路徑,支持同時寫多個路徑。(注意縮進)
var.paths:
- 路徑1
- 路徑2
- 配置filebeat.yml
(1) 配置輸出源
*從7.0版本以后,只能配置一個輸出源
index表示es的索引
when.eaquals表示比較
when.eaquals
event:
module: "system"
#表示event字段下的module字段為system時,使用這個索引。module字段就表示模塊,可以設(shè)置其他字段來判斷。
還有when.contains #包含
(2) 配置kibana

setup.kibana:
host: "19.130.244.160:5601"
setup.template.name: "logstash-"
setup.template.pattern: "logstash-*"
setup.template.overwrite: true
setup.template.enabled: true
setup.ilm.enabled: false
- 啟動filebeat
systemctl start filebeat
systemctl status filebeat
(二) 輸出到logstash(模板收集的日志也可輸出到logstash)
- 配置filebeat配置文件
(1) 去除kibana配置
(2) 配置輸出源(端口可自定義,默認(rèn)5044)

- 啟動filebeat
systemctl restart filebeat
systemctl status filebeat
四、使用file輸入源收集日志
filebeat.inputs:
- type: log
enabled: true
paths:
- 日志路徑1(可使用通配符*)
- type: log
enabled: true
paths:
- 日志路徑2(可使用通配符*)
五、Febeat常用配置說明
yml配置文件嚴(yán)格控制縮進,如果配置頂格,那么應(yīng)用到全局,如果存在縮進,則只應(yīng)用到此縮進層級。以下配置根據(jù)需要選取
filebeat.inputs:
- type: log
enabled: true
paths:
- 日志路徑1(可使用通配符*)
tags: ["標(biāo)記1","標(biāo)記2"] #向日志中添加tags標(biāo)記,tags字段為數(shù)組類型
fields:
test1: test1_value #向日志中添加test1字段,默認(rèn)在fields字段下
test2: 2
encoding: utf-8 #指定編碼
fields_under_root: true #默認(rèn)為false,為true是將添加的字段放在根路徑,不放在fields字段下
include_lines: ["^正則表達式1","^正則表達式2"] #只收集開頭匹配上此正則表達式的行
exclude_files: ["^正則表達式1","^正則表達式2"] #排除,不收集開頭匹配上此正則表達式的行
#多行匹配,將多行日志合并成一條日志,比如java日志、tomcat的catalina日志等。
multiline.pattern: '正則表達式' #多行匹配使用的正則表達式
multiline.negate: true #開啟匹配模式,為true則以匹配上的為分隔,為false則以不匹配上的為分隔。
multiline.match: after #上一條配置為true,則將匹配不上的追加在匹配上的后面;
#為false,則將匹配上的追加在匹配不上的后面。
#此配置為before,則追加在前面。
如果想要重新從頭讀取日志文件,可以刪除/var/lib/filebeat/registry目錄,然后重啟filebeat
rm -rf /var/lib/filebeat/registry && systemctl restart filebeat

