ELK--filebeat詳解

Filebeat提供了幾種不一樣的方式來啓用模塊:node

  • modules.d編輯目錄中啓用模塊配置
  • 運行Filebeat 編輯時啓用模塊
  • filebeat.yml文件編輯中啓用模塊配置

例如,要 目錄中啓用apache2mysql配置modules.d,請使用:mysql

./filebeat modules enable apache2 mysql

而後,當您運行Filebeat時,會加載modules.d目錄中指定的相應模塊配置nginx

要查看啓用和禁用模塊的列表,請運行:web

./filebeat modules list

在命令行運行Filebeat時啓用特定的模塊,可使用該--modules標誌。正則表達式

./filebeat -e --modules nginx,mysql,system

要啓用filebeat.yml配置文件中的特定模塊,能夠將條目添加到filebeat.modules列表中。redis

filebeat.modules:
-  module:nginx 
-  module:mysql 
-  module:system

配置文件中的變量:sql

每一個模塊和文件集都有變量,您能夠設置這些變量來更改模塊的默認行爲,包括模塊查找日誌文件的路徑。docker

- module: nginx
  access:
    var.paths: ["/var/log/nginx/access.log*"] #示例中的設置將設置訪問日誌文件的路徑
nginx
./filebeat -M「nginx.access.var.paths = [/ var / log / nginx / access.log *]」 
#在命令行設置變量時,變量名稱須要包含模塊和文件集名稱。您能夠指定多個覆蓋。每一個覆蓋必須以 -M
./filebeat --modules nginx -M "nginx.access.var.paths=[/var/log/nginx/access.log*]" -M "nginx.error.var.paths=[/var/log/nginx/error.log*]"#完整例子

測試配置文件是否有效:apache

./filebeat -e -c filebeat.yml -configtest -d "publish"  #能夠測試您的配置文件以驗證結構是否有效

  若是您須要在YAML文件中指定正則表達式,最好將正則表達式包裝在單引號中  json

  若是09在數值字段中使用前導零(例如,)而不用單引號包裝值,那麼YAML解析器可能會錯誤地解釋該值。

  若是該值是有效的八進制數,則將其轉換爲整數。若是不是,則轉換爲浮點數。

Filebeat使用探勘器來定位和處理文件

能夠filebeat.prospectorsfilebeat.yml配置文件部分 指定一個探測器列表

filebeat.prospectors:
- type: log
  paths:
    - /var/log/apache/httpd-*.log

- type: log
  paths:
    - /var/log/messages
    - /var/log/*.log

選項配置:

  • log:讀取日誌文件的每一行(默認)。
  • stdin:讀入標準
  • redis:從redis中讀取慢日誌條目(實驗性)。
  • udp:經過UDP讀取事件。 max_message_size
  • docker:從Docker中讀取日誌。 containers
path
應該被抓取和抓取的基於全局路徑的列表可使用如下模式:/var/log/*/*.log
recursive_glob.enabled
啓用擴展**到遞歸全局模式。啓用此功能後,**每一個路徑中的最右邊將擴展爲固定數量的全局模式。例如:/foo/**擴展到/foo,/foo/*,/foo/*/*。此功能默認啓用,設置recursive_glob.enabled爲false將其禁用
encoding
如下是W3C推薦的一些示例編碼:
utf-16be,utf-16be,big5,gb18030,gbk,hz-gb-2312,euc-kr,euc-jp,iso-2022-jp,shift-jis等等
exclude_lines
正則表達式的列表,以匹配您但願Filebeat排除的行。Filebeat刪除與列表中正則表達式匹配的全部行。
    filebeat.prospectors:
    - paths:
        - /var/log/myapp/*.log
      exclude_lines: ['^DBG']    
include_lines
正則表達式的列表,以匹配您但願Filebeat包含的行。Filebeat僅導出與列表中正則表達式匹配的行。
    filebeat.prospectors:
    - paths:
        - /var/log/myapp/*.log
      include_lines: ['^ERR', '^WARN']
exclude_files
正則表達式的列表,以匹配您但願Filebeat忽略的文件。
    exclude_files:['\ .gz $']
tags
Beat包含在tags每一個發佈事件的字段中的標籤列表。標籤能夠很容易地在Kibana中選擇特定的事件,或者在Logstash中應用條件過濾。這些標籤將被追加到通常配置中指定的標籤列表中。
    filebeat.prospectors:
    - paths: ["/var/log/app/*.json"]
      tags: ["json"]
fields
您能夠指定的可選字段將其餘信息添加到輸出。例如,您能夠添加可用於過濾日誌數據的字段。字段能夠是標量值,數組,字典或這些的任何嵌套組合。
    filebeat.prospectors:
    - paths: ["/var/log/app/*.log"]
      fields:
        app_id: query_engine_12
fields_under_root
若是此選項設置爲true,則自定義字段將做爲頂級字段存儲在輸出文檔中,而不是在fields子字典下進行分組 。若是自定義字段名稱與由Filebeat添加的其餘字段名稱衝突,則自定義字段會覆蓋其餘字段。
processors
要應用於探礦者生成的數據的處理器列表。
ignore_older
若是啓用此選項,Filebeat將忽略在指定時間範圍以前修改的任何文件。
close_*
的close_*配置選項用於以後的某一標準或時間以關閉收割機。關閉收割機意味着關閉文件處理程序。若是在收割機關閉後文件被更新,文件將在scan_frequency通過以後再被拾取。
close_inactive
啓用此選項時,Filebeat將關閉文件句柄(若是文件還沒有在指定的時間內收穫)。例如,若是您的日誌文件每隔幾秒更新一次,則能夠安全地設置close_inactive爲1m。若是存在具備徹底不一樣更新速率的日誌文件,則可使用具備不一樣值的多個探測器配置。
close_renamed
啓用此選項時,文件重命名時Filebeat會關閉文件處理程序。例如,在旋轉文件時發生這種狀況。默認狀況下,採集器保持打開狀態並持續讀取文件,由於文件處理程序不依賴於文件名。若是close_renamed啓用該選項,而且文件被重命名或移動的方式再也不與爲探礦者指定的文件模式匹配,則文件將不會被再次拾取。Filebeat不會完成讀取文件。
clean_removed
啓用此選項後,Filebeat會在刪除文件時關閉收割機。一般狀況下,文件只能在指定的時間內無效後才能被刪除close_inactive。可是,若是文件被提早刪除,而您沒有啓用close_removed,Filebeat會保持打開文件以確保收割機已經完成。若是此設置致使文件因磁盤太早從磁盤中刪除而未徹底讀取,請禁用此選項。
close_eof
啓用此選項後,Filebeat會在文件結束時當即關閉文件。當您的文件只寫入一次而不是不時更新時,這很是有用。例如,當您將每一個日誌事件寫入新文件時,都會發生這種狀況。該選項默認是禁用的。
close_timeout
該選項在輸出被阻塞的狀況下特別有用,這使得Filebeat即便對於從磁盤中刪除的文件也保持打開的文件處理程序。設置close_timeout爲5m確保文件按期關閉,以便操做系統釋放它們。
clean_*
這些clean_*選項用於清理註冊表文件中的狀態條目。這些設置有助於減少註冊表文件的大小,並能夠防止潛在的inode重用問題。
clean_inactive
啓用此選項後,Filebeat會在指定的非活動時間段過去後移除文件的狀態。若是文件已被Filebeat忽略(文件比文件早ignore_older),則只能刪除狀態。該clean_inactive設置必須大於ignore_older + scan_frequency在收集文件時確保沒有狀態被刪除。不然,該設置可能會致使Filebeat不斷從新發送完整內容,由於它將clean_inactive刪除探測器 仍然檢測到的文件的狀態。若是文件更新或再次出現,則從頭開始讀取文件。
clean_removed
啓用此選項後,Filebeat將清除註冊表中的文件(若是在最後一個已知名稱下不能在磁盤上找到)。這意味着收割機完成後重命名的文件將被刪除。該選項默認啓用。
scan_frequency
探礦者在指定收穫的路徑中檢查新文件的頻率。例如,若是您指定一個glob /var/log/*,則使用指定的頻率掃描目錄中的文件 scan_frequency。指定1以儘量頻繁地掃描目錄,而不會致使Filebeat過於頻繁地掃描。咱們不建議設置此值<1s。
harvester_buffer_sizeedit
每一個採集器在獲取文件時使用的緩衝區的大小(以字節爲單位)。默認是16384
max_bytes
單個日誌消息能夠擁有的最大字節數。以後的全部字節max_bytes被丟棄而且不被髮送。此設置對於可能變大的多行日誌消息特別有用。默認值是10MB(10485760)。
json
這些選項使得Filebeat可以解碼構造爲JSON消息的日誌。Filebeat逐行處理日誌,因此JSON解碼只在每行有一個JSON對象時才起做用。
json.keys_under_root:true 
json.add_error_key:true 
json.message_key:log
keys_under_root
默認狀況下,解碼後的JSON放在輸出文檔中的「json」鍵        
下。若是啓用此設置,則會將鍵複製到輸出文檔的頂層。默認值是false。
overwrite_keys
若是keys_under_root啓用此設置,那麼來自解碼的JSON對象的值會覆蓋Filebeat一般添加的字段(類型,源,偏移量等)以防衝突。
add_error_key
若是啓用此設置,則在出現JSON解組錯誤或者message_key在配置中定義了a 但不能使用的狀況下,Filebeat將添加「error.message」和「error.type:json」鍵。
message_key
一個可選的配置設置,用於指定應用行篩選和多行設置的JSON密鑰。若是指定,鍵必須位於JSON對象的頂層,而且與鍵關聯的值必須是字符串,不然不會發生篩選或多行聚合。
multiline
控制Filebeat如何處理跨越多行的日誌消息的選項。
tail_files
若是此選項設置爲true,Filebeat開始在每一個文件的末尾讀取新文件,而不是開始。將此選項與日誌循環結合使用時,可能會跳過新文件中的第一個日誌條目。默認設置是false。
pipeline
攝取節點管道標識,用於爲探測器生成的事件設置。
symlinks
該symlinks選項容許Filebeat除了常規文件以外還收集符號連接。收集符號連接時,Filebeat會打開並讀取原始文件,即便它報告符號連接的路徑。
backoff
退避選項指定Filebeat如何積極地搜索打開的文件以進行更新。在大多數狀況下,您可使用默認值。
harvester_limit
該harvester_limit選項限制了一個探礦者並行啓動的收割機的數量。這直接關係到打開的文件處理程序的最大數量。默認爲harvester_limit0,這意味着沒有限制。若是要採集的文件數超過操做系統的打開文件處理程序限制,則此配置頗有用。
enabled
該enabled選項可與每一個探礦者一塊兒使用,以定義探礦者是否啓用。默認狀況下,enabled被設置爲true。
msx_message_size
當使用type: udp,指定經過UDP接收的消息的最大大小。默認值是10240。

指定多個探礦器

當您須要從多個文件中收集行時,能夠簡單地配置一個探測器,並指定多個路徑來爲每一個文件啓動一個收集器。可是,若是你想申請額外的特定探礦(如fieldsinclude_linesexclude_linesmultiline,等),以從特定文件中獲取的線,你須要在Filebeat配置文件中定義多個探礦。

filebeat.prospectors:
- type: log
  paths:
    - /var/log/system.log
    - /var/log/wifi.log
- type: log
  paths:
    - "/var/log/apache2/*"
  fields:
    apache: true
  fields_under_root: true

 

config_dir
filebeat.config_dir: path/to/configs

包含其餘探測器配置文件的目錄的完整路徑。每一個配置文件必須以.yml即便只處理文件的探測器部分,每一個配置文件也必須指定完整的Filebeat配置層次結構。

shutdown_timeout

filebeat.shutdown_timeout:5s

您能夠配置該shutdown_timeout選項以指定Filebeat在關閉以前等待發布者完成發送事件的最長時間。若是全部事件都被確認以前shutdown_timeout,Filebeat將關閉。

普通配置:

name: "my-shipper"
tags: ["service-X", "web-tier"]
name:Beat的名字。若是此選項爲空,則使用服務器。該名稱被包括在每一個已發佈的交易中的字段中。您可使用該名稱對由單個節拍發送的全部交易進行分組。
tags:Beat包含在每一個已發佈事務字段中的標籤列表經過標籤能夠很容易地將服務器按不一樣的邏輯屬性分組 例如,若是您有一組Web服務器,
  則能夠將「webservers」標記添加到每一個服務器上的Beat,而後在Kibana Web界面中使用過濾器和查詢來獲取整個服務器組的可視化。
  tags: ["my-service", "hardware", "test"]hostnamebeat.nametags

fields

fields: {project: "myproject", instance-id: "574734885120952459"}
您能夠指定的可選字段將其餘信息添加到輸出。字段能夠是標量值,數組,字典或這些的任何嵌套組合。默認狀況下,您在此處指定的字段將被分組在fields輸出文檔的子字典下。
要將自定義字段存儲爲頂級字段,請將該fields_under_root選項設置爲true。
fields_under_root
若是此選項設置爲true,則自定義字段將做爲頂級字段存儲在輸出文檔中,而不是在子字典下進行分組若是自定義字段名稱與其餘字段名稱衝突,則自定義字段將覆蓋其餘字段。fields
fields_under_root: true
fields:
  instance_id: i-10a64379
  region: us-east-1

探礦者配置

對於探礦者配置,您path能夠在文件的filebeat.config.prospectors部分指定選項 filebeat.yml。
filebeat.config.prospectors:
  enabled: true
  path: configs/*.yml
- type: log
  paths:
    - /var/log/mysql.log
  scan_frequency: 10s

- type: log
  paths:
    - /var/log/apache.log
  scan_frequency: 5s
兩個正在運行的探礦者沒有定義重疊的文件路徑是相當重要的。若是多個探礦者同時收穫同一個文件,可能會致使意想不到的行爲。

  

模塊配置

filebeat.config.modules:
  enabled: true
  path: ${path.config}/modules.d/*.yml
-  module:apache2 
  access:
    enabled:true  var.paths:[/var/log /apache2 / access.log*] 
  error:
    enabled:true 
    var.paths:[/var/log/apache2/error.log*]
對於模塊配置,您path能夠在文件filebeat.config.modules部分指定選項 filebeat.yml。默認狀況下,Filebeat加載modules.d目錄中啓用的模塊配置
相關文章
相關標籤/搜索