Filebeat中文指南

Filebeat中文指南

下面的博客是公司裏使用filebeat的實例,能夠直接借鑑,有問題能夠向我反饋。html

Filebeat 快速開始: http://www.cnblogs.com/kerwinC/p/8866471.htmljava

1、概述

Filebeat是一個日誌文件託運工具,在你的服務器上安裝客戶端後,filebeat會監控日誌目錄或者指定的日誌文件,追蹤讀取這些文件(追蹤文件的變化,不停的讀),而且轉發這些信息到elasticsearch或者logstarsh中存放。web

如下是filebeat的工做流程:當你開啓filebeat程序的時候,它會啓動一個或多個探測器(prospectors)去檢測你指定的日誌目錄或文件,對於探測器找出的每個日誌文件,filebeat啓動收割進程(harvester),每個收割進程讀取一個日誌文件的新內容,併發送這些新的日誌數據處處理程序(spooler),處理程序會集合這些事件,最後filebeat會發送集合的數據到你指定的地點。json

(我的理解,filebeat是一個輕量級的logstash,當你須要收集信息的機器配置或資源並非特別多時,使用filebeat來收集日誌。平常使用中,filebeat十分穩定,筆者沒遇到過宕機。)服務器

2、Filebeat入門

開始配置使用filebeat以前,你須要安裝並配置好這些依賴程序:併發

Elasticsearch 做爲存儲和索引這些數據。app

Kibana 做爲展現平臺。curl

Logstash(可選)去插入數據到elasticsearch。elasticsearch

詳見 beat和elastic的入門工具

在安裝完畢elastic集羣以後,閱讀接下來的選項學習怎樣安裝,配置,與運行filebeat。

第一步:安裝filebeat 請選擇你係統中的下載安裝命令來下載安裝filebeat。(deb for Debian/Ubuntu, rpm for Redhat/Centos/Fedora, mac for OS X, and win for Windows).

若是你使用yum或者apt,你能夠從咱們的安裝倉庫中更方便的安裝或更新到新版本。

deb:

curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.1.1-amd64.deb

sudo dpkg -i filebeat-5.1.1-amd64.deb

rpm:

curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.1.1-x86_64.rpm

sudo rpm -vi filebeat-5.1.1-x86_64.rpm

mac:

curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.1.1-darwin-x86_64.tar.gz

tar xzvf filebeat-5.1.1-darwin-x86_64.tar.gz

win:

略。

第二步:配置filebeat 編輯配置文件來配置filebeat,對於rpm或者deb來講,配置文件是/etc/filebeat/filebeat.yml這個文件,對於MAC或者win來講,請查看你的解壓文件中。

這裏有一個簡單的filebeat的配置文件filebeat.yml的樣本,filebeat會使用不少默認的選項。

#---------------prospectors塊----------------

filebeat.prospectors:

  • input_type: log paths:
    • /var/log/*.log #- c:\programdata\elasticsearch\logs*

讓咱們來配置filebeat:

一、定義你的日誌文件的路徑(一個或多個)

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

#---------------prospectors塊----------------

1 2 3 4 filebeat.prospectors:

  • input_type: log paths:
    • /var/log/*.log<br> #json.keys_under_root: true 若收取日誌格式爲json的log,請開啓此配置   

在這個例子中,探測器會收集/var/log/*.log的全部匹配文件,這意味這filebeat會手機全部的/var/log下以.log結尾的文件,此處還支持Golang Glob支持的全部模式。

在預約義級別的子目錄中獲取全部文件,可使用這個配置:/var/log//.log,這會找到/var/log下全部子目錄中全部的以.log結尾的文件。但它並不會找到/var/log文件夾下的以.log結尾的文件。如今它還不能遞歸的在全部子目錄中獲取全部的日誌文件。

若是你設置輸出到elasticsearch中,那麼你須要在filebeat的配置文件中設置elasticsearch的IP地址與端口。

#-----------------elastic output(通常都不直接輸出到elastic,不建議配置)-----------

output.elasticsearch: hosts: ["192.168.1.42:9200"]   

若是你設置輸出到logstarsh,那麼請參考第三步,配置filebeat使用logstarsh

第三步:配置filebeat或elasticsearch使用logstarsh

若是要使用logstash對filebeat收集起來的數據執行其餘處理,你須要配置filebeat使用logstash。

你須要編輯filebeat的配置文件,註釋elasticsearch的選項,並打開logstash的配置的註釋:

#----------------------------- Logstash output --------------------------------

output.logstash: hosts: ["127.0.0.1:5044"]

hosts選項須要指明logstash服務所監聽的地址和它的端口。

注:若要測試你的配置文件,切換到你安裝好的filebeat的可執行文件的目錄,而後在命令行運行如下選項:./filebeat -configtest -e ,確保您的配置文件在默認配置文件目錄下,見 目錄佈局。

在使用這個配置以前,你須要提早設置好logstash來接收數據。

若是想不經過logstash直接入庫到elasticsearch,可註釋掉logstash入庫部分,直接打開elasticsearch入庫部分便可。不建議直接寫入es。

output.elasticsearch:

hosts: ["localhost:9200"]

第四步:啓動filebeat

rpm安裝:

sudo /etc/init.d/filebeat start

如今,filebeat已經準備好讀取你的日誌文件併發送到你定義的輸出中了!

2018.04.17 更新 Filebeat 快速開始: http://www.cnblogs.com/kerwinC/p/8866471.html

Filebeat 快速開始

Filebeat能夠作什麼 條目 filebeat 編寫語言 GO 是否支持多輸出 支持 是否支持多輸入 支持 是否支持修改日誌內容 支持 是否會丟數據 不會 對多行文件的合併 支持 對多層目錄的模糊匹配 支持 安裝配置 簡單 內存佔用 10MB filebeat安裝 系統版本:Centos7.2

filebeat版本:5.5.1。

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.5.1-x86_64.rpm

安裝命令

rpm -Uvh filebeat-5.5.1-x86_64.rpm

配置文件路徑

/etc/filebeat/filebeat.yml

日誌文件路徑

/var/log/filebeat

注意 每次新啓動都會生成一個新的filebeat,上次啓動的會被mv爲filebeat.1

啓動命令

systemctl restart filebeat

配置文件模板

注意!文件格式爲yml,對格式(縮進必須使用空格,注意不要遺漏「-」)有嚴格要求。

複製代碼 #=========================== Filebeat prospectors 文件探測器 ============================= filebeat.prospectors:  #文件探測器

  • input_type: log  #探測類型,日誌文件 paths: #路徑

    • /data/w/www//logs/request.log  #注意,通配符的存在使得相同目錄結構的工程日誌都會被收集到。 #json.keys_under_root: true 若收取日誌格式爲json的log,請開啓此配置 document_type: request #日誌類型,也就是elastic索引的type,請見文章隨後詳細解釋1 fields: topic: log_common #增長fields.topic:"application_log"字段,用於kafka的多topic配置。
  • input_type: log  paths: 

    • /data/w/www/*/logs/dubbo-access-consumer.log multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}\ [0-9]{2}:[0-9]{2}:[0-9]{2}' #對於多行的的日誌處理,請見文章隨後的詳細解釋2 multiline.negate: true multiline.match: after document_type: dubbo_consumer topic: application_log  

#----------------------------- kafka output -------------------------------- output.kafka:  #輸出到kafka hosts: ["kafka4.dp.data.cn1.wormpex.com:9092", "kafka5.dp.data.cn1.wormpex.com:9092", "kafka6.dp.data.cn1.wormpex.com:9092"] #kafka-broker地址 topic: '%{[fields.topic]}' #輸出到哪一個topic(就是日誌探測哪裏定義的fields.topic,利用變量自動發送到不一樣topic) partition.round_robin: reachable_only: false required_acks: 1 compression: gzip max_message_bytes: 100000000 #單條日誌大小不超過10MB(筆者公司日誌出現過單條好幾MB的狀況。。。) #----------------------------- Logstash output -------------------------------- #output.logstash:

# The Logstash hosts

hosts: ["logstash1.ops.sys.cn1.wormpex.com:5044"] #logstash須要開啓input beta插件,啓動監聽5044端口

複製代碼 註解:

註解1:fields.topic

  定義了這種類型的日誌將要發到哪一個topic裏面,在kafka配置中的topic做爲變量使用。

註解2:multiline.pattern

  公司有java工程作web服務器的同窗都知道,在咱們生產中,java常常會在日誌中打印堆棧信息,相似:

2018-04-17 15:12:25.185 IndexNotFoundException[no such index] at org.elasticsearch.cluster.metadata.IndexNameExpressionResolver$WildcardExpressionResolver.resolve(IndexNameExpressionResolver.java:566) at org.elasticsearch.cluster.metadata.IndexNameExpressionResolver.concreteIndices(IndexNameExpressionResolver.java:133) at org.elasticsearch.cluster.metadata.IndexNameExpressionResolver.concreteIndices(IndexNameExpressionResolver.java:77) at org.elasticsearch.action.admin.indices.delete.TransportDeleteIndexAction.checkBlock(TransportDeleteIndexAction.java:75) 若直接按行收集的話,在kibana裏展現沒有上下文,使人沒法觀看。 此配置的功能就是把堆棧信息合併到帶有日期的開頭的日誌中,並做爲一條發送出去,這樣在kibana裏展現就清晰可見了。

相關文章
相關標籤/搜索