天天看點

ElasticSearch實戰系列八: Filebeat快速入門和使用---圖文詳解

本文主要介紹的是ELK日志系統中的Filebeat快速入門教程。

ELK是三個開源軟體的縮寫,分别表示:Elasticsearch , Logstash, Kibana , 它們都是開源軟體。新增了一個FileBeat,它是一個輕量級的日志收集處理工具(Agent),Filebeat占用資源少,适合于在各個伺服器上搜集日志後傳輸給Logstash,官方也推薦此工具。

Elasticsearch是個開源分布式搜尋引擎,提供搜集、分析、存儲資料三大功能。它的特點有:分布式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多資料源,自動搜尋負載等。

Logstash 主要是用來日志的搜集、分析、過濾日志的工具,支援大量的資料擷取方式。一般工作方式為c/s架構,client端安裝在需要收集日志的主機上,server端負責将收到的各節點日志進行過濾、修改等操作在一并發往elasticsearch上去。

Kibana 也是一個開源和免費的工具,Kibana可以為 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以幫助彙總、分析和搜尋重要資料日志。

Filebeat是一個輕量型日志采集器,可以友善的同kibana內建,啟動filebeat後,可以直接在kibana中觀看對日志檔案進行detail的過程。

Filebeat 是使用 Golang 實作的輕量型日志采集器,也是 Elasticsearch stack 裡面的一員。本質上是一個 agent ,可以安裝在各個節點上,根據配置讀取對應位置的日志,并上報到相應的地方去。

Filebeat 的可靠性很強,可以保證日志 At least once 的上報,同時也考慮了日志搜集中的各類問題,例如日志斷點續讀、檔案名更改、日志 Truncated 等。

Filebeat 并不依賴于 ElasticSearch,可以單獨存在。我們可以單獨使用Filebeat進行日志的上報和搜集。filebeat 内置了常用的 Output 元件, 例如 kafka、ElasticSearch、redis 等,出于調試考慮,也可以輸出到 console 和 file 。我們可以利用現有的 Output 元件,将日志進行上報。

當然,我們也可以自定義 Output 元件,讓 Filebeat 将日志轉發到我們想要的地方。

filebeat 其實是 elastic/beats 的一員,除了 filebeat 外,還有 HeartBeat、PacketBeat。這些 beat 的實作都是基于 libbeat 架構。

Filebeat 由兩個主要元件組成:harvester 和 prospector。

采集器 harvester 的主要職責是讀取單個檔案的内容。讀取每個檔案,并将内容發送到 the output。 每個檔案啟動一個 harvester,harvester 負責打開和關閉檔案,這意味着在運作時檔案描述符保持打開狀态。如果檔案在讀取時被删除或重命名,Filebeat 将繼續讀取檔案。

查找器 prospector 的主要職責是管理 harvester 并找到所有要讀取的檔案來源。如果輸入類型為日志,則查找器将查找路徑比對的所有檔案,并為每個檔案啟動一個 harvester。每個 prospector 都在自己的 Go 協程中運作。

注:Filebeat prospector隻能讀取本地檔案, 沒有功能可以連接配接到遠端主機來讀取存儲的檔案或日志。

示例圖:

ElasticSearch實戰系列八: Filebeat快速入門和使用---圖文詳解

Filebeat下載下傳位址推薦使用清華大學或華為的開源鏡像站。

下載下傳位址:

https://mirrors.huaweicloud.com/logstash

https://mirrors.tuna.tsinghua.edu.cn/ELK

ELK7.3.2百度網盤位址:

連結:https://pan.baidu.com/s/1tq3Czywjx3GGrreOAgkiGg

提取碼:cxng

将下載下傳下來的filebeat-7.3.2-linux-x86_64.gz的配置檔案進行解壓

在linux上輸入:

tar -xvf filebeat-7.3.2-linux-x86_64.tar.gz

然後移動到/opt/elk 裡面,然後将檔案夾重命名為 filebeat-7.3.2

輸入

mv filebeat-7.3.2-linux-x86_64 /opt/elk mv filebeat-7.3.2-linux-x86_64 filebeat-7.3.2

這裡簡單介紹一下 filebeat.inputs,和outputs的主要配置。

inputs主要使用的幾個配置項:

paths:必選項,讀取檔案的路徑,基于glob比對文法。

enabled:是否啟用該子產品。

exclude_lines: 排除比對清單中的正規表達式。

include_lines:包含比對清單中的正規表達式。

exclude_files: 排除的檔案,比對正規表達式的清單。

fields: 可選的附加字段。這些字段可以自由選擇,添加附加資訊到抓取的日志檔案進行過濾。

multiline.pattern: 多行合并比對規則,比對正規表達式。

multiline.match:比對可以設定為“after”或“before”。它用于定義是否應該将行追加到模式中在之前或之後比對的,或者隻要模式沒有基于negate比對。注意:在Logstash中,After等同于previous, before等同于next.

multiline.negate: 定義模式下的模式是否應該被否定。預設為false。這個配置有點繞,其實就是負負得正,如果符合上面的就配置false,否則就配置true。

一個簡單的input輸入示例:

上述這段配置表示采集<code>/home/logs/</code>目錄所有字尾名為.txt的日志。

在采集日志時,會涉及到對于應用中異常堆棧日志的處理。在上一篇博文中,我們使用了logstash實作了日志歸并,在本篇中我們也可以使用filbeat來實作合并。使用multiline.pattern、multiline.negate和multiline.match來實作,我們通過制定比對規則将以空格開頭的所有行合并到上一行,并把以Caused by開頭的也追加到上一行。

示例:

若是想采集多個目錄,第一種方式,直接在采集的目錄下再添加一行

ElasticSearch實戰系列八: Filebeat快速入門和使用---圖文詳解

第二種方式,想采集多個目錄并且輸出到不同的索引庫中,可以增加fields來表示,類似logstash的type。

ElasticSearch實戰系列八: Filebeat快速入門和使用---圖文詳解

判斷的時候,使用<code>if [fields][log-test] == "true"{ }</code> 這樣既可。

output主要作用是将資料進行輸出,比如輸出到kafka、elasticsearch或者logstash中。

這裡将資料輸出到ElasticSearch中,如果是叢集,通過逗号可以配置多個節點。

按照上述配置會将讀取的資料輸出預設的模闆索引庫中,如果我們想指定索引庫輸出的話,隻需要添加索引庫名稱即可。

輸出到Logstash配置:

在/home/logs/目錄下添加一個日志檔案, 然後在filebeat檔案夾中建立一個filebeat_test.yml檔案,然後在該檔案中添加如下配置:

使用root使用者在filebeat檔案夾輸入

./filebeat -c filebeat_test.yml test config

進行配置啟動測試

啟動指令:

./filebeat -e -c filebeat_logstash.yml

背景啟動指令:

nohup ./filebeat -c filebeat_logstash.yml &gt;/dev/null 2&gt;&amp;1 &amp;

若是背景啟動,可以在filebeat統計目錄的logs目錄檢視日志資訊。

啟動filebeat采集日志寫入到ES中,預設會使用filebeat的模闆, 如果想使用自定義模闆實作,可以檢視我上一篇博文,位址:ElasticSearch實戰系列七: Logstash實戰使用-圖文講解

示例圖如下:

ElasticSearch實戰系列八: Filebeat快速入門和使用---圖文詳解

有時候,我們想采集json檔案并直接将json檔案的資料按照格式寫入到ES對應的索引庫中,我們也可以通過filebeat去實作。

1.在filebeat的目錄下建立一個<code>filebeat_json.yml</code>的yml檔案。

配置檔案:

2.在kibana的開發工具頁面中執行如下語句:

3.建立json檔案

4.啟動filebeat,并在kibana查詢資料

ElasticSearch實戰系列八: Filebeat快速入門和使用---圖文詳解

ElasticSearch實戰系列:

ElasticSearch實戰系列一: ElasticSearch叢集+Kinaba安裝教程

ElasticSearch實戰系列二: ElasticSearch的DSL語句使用教程---圖文詳解

ElasticSearch實戰系列三: ElasticSearch的JAVA API使用教程

ElasticSearch實戰系列四: ElasticSearch理論知識介紹

ElasticSearch實戰系列五: ElasticSearch的聚合查詢基礎使用教程之度量(Metric)聚合

ElasticSearch實戰系列六: Logstash快速入門

ElasticSearch實戰系列七: Logstash實戰使用-圖文講解

原創不易,如果感覺不錯,希望給個推薦!您的支援是我寫作的最大動力!

版權聲明:

作者:虛無境

部落格園出處:http://www.cnblogs.com/xuwujing

CSDN出處:http://blog.csdn.net/qazwsxpcm

掘金出處:https://juejin.im/user/5ae45d5bf265da0b8a6761e4    

個人部落格出處:http://www.panchengming.com

如果你對生活感覺到了絕望,請不要氣餒。因為這樣隻會讓你更加絕望!

所謂的希望往往都是在絕望中萌發的,是以,請不要放棄希望!

繼續閱讀