簡述
Filebeat是elastic公司beats系列工具中的一個,主要用于收集本地日志。
在服務器上安裝后,filebeat會監控日志目錄或者指定的日志文件,追蹤讀取這些文件(追蹤文件的變化,不停的讀),并且轉發這些信息到配置文件中指定的輸出端(例如:elasticsearch,logstarsh或kafka)。
Filebeat使用go語言開發,使用時沒有其他依賴,比logstash-forworder輕量,不會占用部署服務器太多的資源。
filebeat的工作流程:當你開啟filebeat程序的時候,它會啟動一個或多個探測器(prospectors)去檢測你指定的日志目錄或文件,對于探測器找出的每一個日志文件,filebeat啟動收割進程(harvester),每一個收割進程讀取一個日志文件的新內容,并發送這些新的日志數據到處理程序(spooler),處理程序會集合這些事件,最后filebeat會發送集合的數據到你指定的地點。
安裝及使用
- 安裝
可以使用系統的支持的命令(deb for Debian/Ubuntu, rpm for Redhat/Centos/Fedora
)進行安裝,也可以下載壓縮包進行安裝。本文中選擇使用壓縮包的方式。
首先下載壓縮包,我的操作系統環境是centos7.3 64bit,所以選擇下載filebeat-6.2.4-linux-x86_64.tar.gz。讀者可依據自己的操作系統環境選擇正確的版本。下載地址:https://www.elastic.co/downloads/beats/filebeat
tar xzf filebeat-6.2.4-linux-x86_64.tar.gz
2.配置filebeat
配置filebeat需要編輯filebeat的配置文件,不同安裝方式,配置文件的存放路徑有一些不同, 對于 rpm 和 deb的方式, 配置文件路徑的是 /etc/filebeat/filebeat.yml,對于壓縮包的方式,配置文件存在在解壓目錄下(例如:我是在home目錄下進行的解壓,那么配置文件的路徑就應該是~/filebeat-6.2.4-linux-x86_64/filebeat.yml)。
由于我的預期目標是將filebeat收集的日志發送到kafka,所以配置output就選擇了kafka。讀者可根據自己的使用場景,配置output。
- 定義日志文件路徑
- type: log
# Change to true to enable this prospector configuration.
enabled: true
# Paths that should be crawled and fetched. Glob based paths.
paths:
- /var/log/*.log
例子中的配置將對/var/log目錄下所有以.log結尾的文件進行采集。
- 定義輸出到kafka
.kafka:
# initial brokers for reading cluster metadata
hosts: ["kafka1:9092", "kafka2:9092", "kafka3:9092"]
# message topic selection + partitioning
topic: log
3.啟動
cd filebeat-6.2.4-linux-x86_64
./filebeat -e -c filebeat.yml
本文中只是為滿足需求對filebeat進行了最基本的配置。filebeat的很多重要的配置和特性并沒有體現(例如:模塊,多行消息),讀者如果需要更深入的了解請參考:https://www.elastic.co/guide/en/beats/filebeat/current/configuring-howto-filebeat.html。
歡迎大家在評論區討論使用過程的心得和疑惑。