ELK--filebeat詳解


Filebeat提供了幾種不同的方式來啟用模塊:

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

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

./filebeat modules enable apache2 mysql

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

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

./filebeat modules list

在命令行運行Filebeat時啟用特定的模塊,可以使用該--modules標志。

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

要啟用filebeat.yml配置文件中的特定模塊,可以將條目添加到filebeat.modules列表中。

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

配置文件中的變量:

每個模塊和文件集都有變量,您可以設置這些變量來更改模塊的默認行為,包括模塊查找日志文件的路徑。

- 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*]"#完整例子

測試配置文件是否有效:

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

  如果您需要在YAML文件中指定正則表達式,最好將正則表達式包裝在單引號中  

  如果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的名字。如果此選項為空,hostname則使用服務器。該名稱被包括beat.name在每個已發布的交易中的字段中。您可以使用該名稱對由單個節拍發送的所有交易進行分組。
tags:Beat包含在tags每個已發布事務字段中的標簽列表通過標簽可以很容易地將服務器按不同的邏輯屬性分組 例如,如果您有一組Web服務器,
  則可以將“webservers”標記添加到每個服務器上的Beat,然后在Kibana Web界面中使用過濾器和查詢來獲取整個服務器組的可視化。
  tags: ["my-service", "hardware", "test"]

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目錄中啟用的模塊配置

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM