天天看點

Filebeat入門

filebeat是一個日志檔案托運工具,在你的伺服器上安裝用戶端後,filebeat會監控日志目錄或者指定的日志檔案,追蹤讀取這些檔案(追蹤檔案的變化,不停的讀),并且轉發這些資訊到elasticsearch或者logstarsh中存放。

以下是filebeat的工作流程:當你開啟filebeat程式的時候,它會啟動一個或多個探測器(prospectors)去檢測你指定的日志目錄或檔案,對于探測器找出的每一個日志檔案,filebeat啟動收割程序(harvester),每一個收割程序讀取一個日志檔案的新内容,并發送這些新的日志資料到處理程式(spooler),處理程式會集合這些事件,最後filebeat會發送集合的資料到你指定的地點。

filebeat的基本原理其實就是有一群prospector,每個prospector手下管着一批harvester,每個harvester負責監視一個日志檔案,把變動的内容由spooler彙總之後交給logstash或者elasticsearch。如果想快速搭建一個可以工作的filebeat,無非有三點:

1.說明要監視哪些檔案

1、定義你的日志檔案的路徑(一個或多個)

對于大多數的基本filebeat配置,你可以定義一個單一探測器針對一個單一的路徑,例如:

ps:若收取日志格式為json的log,請開啟此配置

json.keys_under_root: true

在這個例子中,探測器會收集/var/log/*.log的所有比對檔案,這意味這filebeat會手機所有的/var/log下以.log結尾的檔案,此處還支援​​golang glob​​支援的所有模式。

在預定義級别的子目錄中擷取所有檔案,可以使用這個配置:/var/log/*/*.log,這會找到/var/log下所有子目錄中所有的以.log結尾的檔案。但它并不會找到/var/log檔案夾下的以.log結尾的檔案。現在它還不能遞歸的在所有子目錄中擷取所有的日志檔案。

2.說明收集的日志發給誰

如果你設定輸出到elasticsearch中,那麼你需要在filebeat的配置檔案中設定elasticsearch的ip位址與端口。

如果直接發送給elasticsearch,可以設定如下:

如果需要發給logstash,可以注釋掉elasticsearch的配置,然後設定logstash如下:

當然,也需要在logstash的配置中指明要從該端口(5044)監聽來自filebeat的資料:

這裡的配置舉例是把filebeat、logstash、elasticsearch安裝在了一台機器上,實際使用中肯定是分開部署的,需要根據實際情況修改配置檔案中的ip位址及端口号。

3.讓elasticsearch知道如何處理每個日志事件。

在elasticsearch中,索引模闆是用于定義字段應如何分析的設定和映射。

推薦的filebeat索引模闆檔案已經在filebeat的安裝包中了,如果你允許預設的模闆加載到配置檔案filebeat.yml中,filebeat會在成功連結elasticsearch後自動加載這些模闆。如果模闆已經存在了,除非你配置了filebeat.yml,否則它不會被複寫。

如果你不想自動加載索引模闆,或者你想加載你自己的索引模闆,你可以在filebeat的配置檔案中改變模闆的配置,如果你選擇了關閉自動加載模闆,你需要手動加載模闆。更多的資訊請看:

​​配置模闆加載​​:隻支援輸出到elasticsearch

​​手動加載模闆​​:需要輸出到logstash時 #實測并不需要手動加載,或配置任何,一樣可以輸出到logstash

配置模闆加載

預設上,filebeat自動加載推薦的模闆檔案,filebeat.template.json,如果禁用輸出到elasticsearch,你可以配置filebeat.yml中的template.name和template.path選項:

output.elasticsearch:

  hosts: ["localhost:9200"]

  template.name: "filebeat"

  template.path: "filebeat.template.json"

  template.overwrite: false

預設上,如果索引裡已經有這個模闆,新的并不會覆寫舊的。若是想覆寫現有的模闆,在配置檔案中設定template.overwrite:ture。

若禁用自動加載模闆,注釋掉elasticsearch輸出下模闆的那一部分。

如果使用logstash輸出,則不支援自動加載模闆的選項。

手工加載模闆

如果你禁止了模闆的自動加載,你需要運作接下來的指令來加載模闆:

curl -xput 'http://localhost:9200/_template/filebeat' -d@/etc/filebeat/filebeat.template.json

這裡的location:9200是elasticsearch監聽的ip和端口

注:如果你已經使用filebeat輸出索引資料到elasticsearch中,這些索引可能包含舊的文檔,在你加載了索引模闆後,你可以從filebeat-*中删除舊的文檔,以強制kibana檢視新的索引文檔。

指令如下:

curl -xdelete 'http://localhost:9200/filebeat-*'

預設的elasticsearch需要的index template在安裝filebeat的時候已經提供,路徑為/etc/filebeat/filebeat.template.json,可以使用如下指令裝載該模闆:

當然,也不能忘了,每次修改完filebeat的配置後,需要重新開機filebeat才能讓改動的配置生效。

繼續閱讀