簡介
Filebeat是一個輕量級的日誌收集工具,安裝在客戶端,資源消耗少。Filebeat監控並收集指定路徑下的日誌文件信息,並將收集到的日誌數據發送到Elasticsearch或者Logstash。
Filebeat工作示意圖
-
Filebeat啓動後會監控一個或多個目錄下的日誌文件
-
對於監控的每一個文件,都會啓動一個Harvester進程
-
Harvester負責監控日誌文件內容,收集新增的日誌數據並將其發送到libbeat
-
libbeat會將收到的所有數據進行彙總,並輸出到Filebeat配置的輸出(Elasticsearch或者Logstash等)
工作原理
Filebeat保持每個被監控的文件狀態,並頻繁的把文件狀態從註冊表中保存到磁盤上。文件的狀態主要是用來記錄上一次Harvester讀取文件的位置,這樣能保證把全部的日誌數據讀取併發送給後端(logstash或Elasticsearch)。
-
如果Elasticsearch或LogStash不可用了,Filebeat會把最後讀取數據的文件位置保存下來,當Elasticsearch或LogStash可用時,能夠快速恢復。
-
如果Filebeat進行了重啓,則重啓後會從註冊表文件中恢復之前記錄的文件狀態信息,繼續從之前已知的位置開始讀取數據。
安裝部署
一、下載和安裝key文件
$ sudo rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
二、創建yum源文件
$ sudo vim /etc/yum.repos.d/elastic.repo
[elastic-6.x]
name=Elastic repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
三、安裝
$ sudo yum install filebeat
安裝路徑
/usr/share/filebeat/ # 安裝路徑
配置文件路徑
/etc/filebeat/ # 配置文件路徑
四、啓動
$ cd /usr/share/filebeat/bin
$ filebeat -c /etc/filebeat/filebeat.yml
五、添加啓動服務
$ sudo chkconfig -add filebeat
$ service filebeat start|stop|restart # 啓動|停止|重啓
六、配置文件
- filebeat.prospectors
filebeat.prospectors
- type: log
paths:
- /var/log/*.log # 日誌文件路徑,支持glob模板
exclude_lines: ['^DBG’] # 排除日誌文件中以DBG開頭的行
include_lines: ['^ERR’, 'WARN’] # 包含日誌文件中以ERR、WARN開頭的行
exclude_files: ['.gz$’] # 排除文件名以.gz結尾的日誌文件
fields: # 額外增加字段
level: debug
review: 1
multiline.pattern: ^\[ # 對日誌文件中多行數據進行匹配
multiline.negate: false # 是否對匹配結果取反,默認爲false
Multiline.match: after
- filebeat.config.modules
Filebeat.config.modules:
path: ${path.config}/modules.d/*.yml # 模板目錄
reload.enabled: false # 是否自定重新加載,默認false
reload.period: 10s # 重新加載間隔時間
- output
# -------------------------- Elasticsearch output ------------------------------
output.elasticsearch:
hosts: ["localhost:9200”] # elasticsearch IP和port,可支持多個
protocol: "https” # 網絡協議
username: "elastic” # elasticsearch 用戶名
password: “changeme” # elasticsearch 密碼
Logstash
# ----------------------------- Logstash output --------------------------------
output.logstash:
hosts: ["localhost:5044”] # logstash IP和port
ssl.certificate_authorities: ["/etc/pki/root/ca.pem”] # 用於HTTPS服務器驗證的根證書列表
ssl.certificate: "/etc/pki/client/cert.pem” # 用於SSL客戶端身份驗證的證書
ssl.key: "/etc/pki/client/cert.key” # 客戶端證書密鑰