概述
Filebeat是Beats家族的成員之一,是個輕量級的日志采集工具,通過收集日志信息,可以轉發到 Elasticsearch 或者 Logstash進行索引存儲。
工作原理
當啟動Filebeat時,它會啟動一個或多個輸入來定位日志文件。對於每個日志文件,都將啟動一個harvester(收割機),harvester讀取單個日志文件以獲取新的內容,並將新的日志數據發送到libbeat,libbeat聚合數據並發送到配置的output端,例如elasticsearch等等。

環境
CentOS 7.3
Filebeat 7.6.0
Elasticsearch 7.6.0
官網:https://www.elastic.co/cn/beats/filebeat
官方文檔:https://www.elastic.co/guide/en/beats/filebeat/current/index.html
安裝配置
#解壓
tar -zxvf filebeat-7.6.0-linux-x86_64.tar.gz -C /usr/local
cd /usr/local/filebeat-7.6.0-linux-x86_64/
#創建個測試的配置文件(控制台輸入輸出)
touch test.yml
test.yml文件內容如下:
filebeat.inputs:
- type: stdin
enabled: true
setup.template.settings:
index.number_of_shards: 2
output.console:
pretty: true
enable: true
啟動命令
./filebeat -e -c test.yml
- -e:輸出到標准輸出,默認輸出到syslog和logs下
- -c:指定配置文件
- -d:輸出debug信息
控制台測試
控制台輸入test,會帶出輸出信息:
輸出如下:
test
{
"@timestamp": "2020-08-27T03:33:53.893Z",
"@metadata": {
"beat": "filebeat",
"type": "_doc",
"version": "7.6.0"
},
"ecs": {
"version": "1.4.0"
},
"host": {
"name": "cluster01"
},
"agent": {
"version": "7.6.0",
"type": "filebeat",
"ephemeral_id": "88c02c64-b16b-4e1e-9768-eb832433f43f",
"hostname": "cluster01",
"id": "7f16be81-9321-40e6-8867-124f0bee0da0"
},
"message": "test",
"log": {
"offset": 0,
"file": {
"path": ""
}
},
"input": {
"type": "stdin"
}
}
讀取文件
mkdir logs
cd logs
#創建2個日志文件
touch 1.log 2.log
- 修改配置文件input部分,並重新啟動
filebeat.inputs:
- type: log
enabled: true
paths: ["/usr/local/filebeat-7.6.0-linux-x86_64/logs/*.log"]
- 往log文件追加數據,查看filebeat控制台輸出
#追加數據
echo "hello world" > 1.log
#輸出如下
{
"@timestamp": "2020-08-27T04:14:03.103Z",
"@metadata": {
"beat": "filebeat",
"type": "_doc",
"version": "7.6.0"
},
"host": {
"name": "cluster01"
},
"agent": {
"id": "7f16be81-9321-40e6-8867-124f0bee0da0",
"version": "7.6.0",
"type": "filebeat",
"ephemeral_id": "b25e7ac5-5e98-4c4e-b53a-882a7c7bb419",
"hostname": "cluster01"
},
"log": {
"offset": 0,
"file": {
"path": "/usr/local/filebeat-7.6.0-linux-x86_64/logs/1.log"
}
},
"message": "hello world",
"input": {
"type": "log"
},
"ecs": {
"version": "1.4.0"
}
}
輸出到elasticsearch
- 把output部分替換如下,重新啟動filebeat
#elasticsearch主機地址
output.elasticsearch:
hosts: ["192.168.25.132:9200","192.168.25.133:9200","192.168.25.134:9200"]
- 繼續往log文件追加數據
echo es-msg > 2.log
echo es-msg1 > 1.log
監聽到信息,Filebeat連接ElasticSearch並創建索引

打開es-head,紅框部分這2個索引,是Filebeat創建的,其中filebeat-7.6.0-2020.08.27-000001存放的是消息數據


