一、概述
Filebeat是一個日誌文件託運工具,做爲一個agent安裝到服務器上,filebeat會監控日誌目錄或者指定的日誌文件,追蹤讀取這些文件(追蹤文件的變化,不停的讀),並且轉發這些信息到elasticsearch或者logstarsh中存放。
*Filebeat包含兩個主要的組件,prospectors(探測器)和harvesters(收割機)。
1. harvesters(收割機)
harvesters負責一行一行地讀取日誌文件,並將內容發送到指定的輸出。
2. prospectors(探測器)
prospectors負責管理所有的harvesters,和發現所有的需要讀取的日誌源。
如果輸入源是log(日誌),prospectors根據配置路徑,查找驅動器上的所有匹配的日誌文件,併爲每個文件啓動一個收割機。
此組件一般情況下默認就行,不用做配置。
*Filebeat內置了很多模塊,封裝了日誌的收集和過濾操作。
二、支持的模塊
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模塊默認了路徑,一般都是在/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字段就表示模塊,可以設置其他字段來判斷。
還有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) 配置輸出源(端口可自定義,默認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配置文件嚴格控制縮進,如果配置頂格,那麼應用到全局,如果存在縮進,則只應用到此縮進層級。以下配置根據需要選取
filebeat.inputs:
- type: log
enabled: true
paths:
- 日誌路徑1(可使用通配符*)
tags: ["標記1","標記2"] #向日志中添加tags標記,tags字段爲數組類型
fields:
test1: test1_value #向日志中添加test1字段,默認在fields字段下
test2: 2
encoding: utf-8 #指定編碼
fields_under_root: true #默認爲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