1. 程式人生 > >ELK-filebeat 採集配置與實現

ELK-filebeat 採集配置與實現

1.filebeat 簡介

Filebeat 是 Elastic Stack 的一部分,因此能夠與 Logstash、Elasticsearch 和 Kibana 無縫協作。無論您要使用 Logstash 轉換或充實日誌和檔案,還是在 Elasticsearch 中隨意處理一些資料分析,亦或在 Kibana 中構建和分享儀表板,Filebeat 都能輕鬆地將您的資料傳送至最關鍵的地方。其主要特點:

  1.  輕量: 對使用環境無依賴
  2. 即插即用: 內部繼承了一系列模組,用以簡化收集、解析和視覺化常用日誌格式,例如nginx、Apache、System、mysql等
  3. 可擴充套件: 可基於libbeat自行構建採集器

2.filebeat 安裝和使用

#下載
https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.6.9-linux-x86_64.tar.gz

#解壓
tar -zxvf filebeat-5.6.9-linux-x86_64.tar.gz

cd filebeat-5.6.9-linux-x86_64

#編輯配置檔案

vim filebeat.yml

#啟動

./filebeat

#後臺啟動

nohup ./filebeat &

3、filebeat 引數說明

常見的filebeat分為三個部分:

  1. prospectors 採集配置
  2. Output 輸出配置
  3. global 與 General 公共配置與一般配置

採用YAML語言作為其配置語法。它的基本語法規則如下:

  1. 大小寫敏感
  2. 使用縮排表示層級關係
  3. 縮排時不允許使用Tab鍵,只允許使用空格
  4. 縮排的空格資料不重要,只要相同層級的元素左側對齊即可
filebeat.prospectors:
- input_type: log
 paths:
  - /var/log/*.log
- /var/log/nginx/*.access.log
- input_type: log
paths:
 - /var/log/*.log
- /var/log/nginx/*.access.log
output.elasticsearch:
 hosts: ["localhost:9200","192.168.0.01:9200"]

具體配置說明:

############################# Filebeat ######################################
filebeat:
  # List of prospectors to fetch data.
  prospectors:

      # 指定要監控的日誌,可以指定具體得檔案或者目錄
      paths:
        - /var/log/*.log  (這是預設的)(自行可以修改)(比如我放在/home/hadoop/app.log裡)
        #- c:\programdata\elasticsearch\logs\*
      # 指定被監控的檔案的編碼型別,使用plain和utf-8都是可以處理中文日誌的
      #encoding: plain
      # 指定檔案的輸入型別log(預設)或者stdin
      input_type: log   
      # 排除指定符合正則表示式的行 DEBUG TRACE INFO
      # exclude_lines: ["^DBG"]
      # 包含輸入中符合正則表示式列表的那些行(預設包含所有行),include_lines執行完畢之後會執行exclude_lines
      # include_lines: ["^ERR", "^WARN"]
      # Exclude files. A list of regular expressions to match. Filebeat drops the files that
      # are matching any regular expression from the list. By default, no files are dropped.
      # 忽略掉符合正則表示式列表的檔案
      # exclude_files: [".gz$"]
      # 這個得意思就是會在es中多新增一個欄位,格式為 "filelds":{"level":"debug"}
      #fields:
      #  level: debug
      #  review: 1
      # true/false 額外欄位是否存放至根目錄
      #fields_under_root: false   
      # 設定Elasticsearch輸出時的document的type欄位 可以用來給日誌進行分類。Default: log
      #document_type: log
      # Filebeat以多快的頻率去prospector指定的目錄下面檢測檔案更新(比如是否有新增檔案)
      # 如果設定為0s,則Filebeat會盡可能快地感知更新(佔用的CPU會變高)。預設是10s
      #scan_frequency: 10s

      # 每個harvester監控檔案時,使用的buffer的大小
      #harvester_buffer_size: 16384

      # 日誌檔案中增加一行算一個日誌事件,max_bytes限制在一次日誌事件中最多上傳的位元組數,多出的位元組會被丟棄
      #max_bytes: 10485760
	  #如果json 為多⾏格式時,指定⼀個root key,以進⾏標識
	  #json.message_key:
       
	   #false/true是否覆蓋beat中的欄位
	   #json.overwrite_keys:false
	   
	   #false/true 解析失敗時是否儲存解析失敗資訊
	   #json.add_error_key:false
	
	   #false/true 是否存放在根⽬錄
	   #json.keys_under_root:false
	   

      # 適用於日誌中每一條日誌佔據多行的情況,比如各種語言的報錯資訊呼叫棧
      #multiline:

     
        # 多行日誌開始的那一行匹配的pattern
        #pattern: ^\[

     
        # 是否需要對pattern條件轉置使用,不翻轉設為true,反轉設定為false。  【建議設定為true】
        #negate: false

        # 匹配pattern後,與前面(before)還是後面(after)的內容合併為一條日誌
        #match: after

    
        # 合併的最多行數(包含匹配pattern的那一行)
        #max_lines: 500

     
        # 到了timeout之後,即使沒有匹配一個新的pattern(發生一個新的事件),也把已經匹配的日誌事件傳送出去
        #timeout: 5s

      # 如果設定為true,Filebeat從檔案尾開始監控檔案新增內容,把新增的每一行檔案作為一個事件依次傳送,
      # 而不是從檔案開始處重新發送所有內容
      #tail_files: false

   
      # Filebeat檢測到某個檔案到了EOF(檔案結尾)之後,每次等待多久再去檢測檔案是否有更新,預設為1s
      #backoff: 1s

   
      # Filebeat檢測到某個檔案到了EOF之後,等待檢測檔案更新的最大時間,預設是10秒
      #max_backoff: 10s

   
      # 定義到達max_backoff的速度,預設因子是2,到達max_backoff後,變成每次等待max_backoff那麼長的時間才backoff一次,
      # 直到檔案有更新才會重置為backoff
      # 根據現在的預設配置是這樣的,每隔1s檢測一下檔案變化,如果連續檢測兩次之後檔案還沒有變化,下一次檢測間隔時間變為10s
      #backoff_factor: 2

      # 這個選項關閉一個檔案,當檔名稱的變化。#該配置選項建議只在windows
      #force_close_files: false

    # Additional prospector
    #-
      # Configuration to use stdin input
      #input_type: stdin


  # spooler的大小,spooler中的事件數量超過這個閾值的時候會清空傳送出去(不論是否到達超時時間)
  #spool_size: 2048


  # 是否採用非同步傳送模式(實驗功能)
  #publish_async: false


  # spooler的超時時間,如果到了超時時間,spooler也會清空傳送出去(不論是否到達容量的閾值)
  #idle_timeout: 5s

  # 記錄filebeat處理日誌檔案的位置的檔案,預設是在啟動的根目錄下
  #registry_file: .filebeat

  # 如果要在本配置檔案中引入其他位置的配置檔案,可以寫在這裡(需要寫完整路徑),但是隻處理prospector的部分
  #config_dir:
############################# Output ##########################################
output:

  elasticsearch:(這是預設的,filebeat收集後放到es裡)(自行可以修改,比如我有時候想filebeat收集後,然後到redis,再到es,就可以登出這行)
   
    hosts: ["localhost:9200"] (這是預設的,filebeat收集後放到es裡)(自行可以修改,比如我有時候想filebeat收集後,然後到redis,再到es,
就可以登出這行)