ELK-filebeat 採集配置與實現
阿新 • • 發佈:2019-01-22
1.filebeat 簡介
Filebeat 是 Elastic Stack 的一部分,因此能夠與 Logstash、Elasticsearch 和 Kibana 無縫協作。無論您要使用 Logstash 轉換或充實日誌和檔案,還是在 Elasticsearch 中隨意處理一些資料分析,亦或在 Kibana 中構建和分享儀表板,Filebeat 都能輕鬆地將您的資料傳送至最關鍵的地方。其主要特點:
- 輕量: 對使用環境無依賴
- 即插即用: 內部繼承了一系列模組,用以簡化收集、解析和視覺化常用日誌格式,例如nginx、Apache、System、mysql等
- 可擴充套件: 可基於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分為三個部分:
- prospectors 採集配置
- Output 輸出配置
- global 與 General 公共配置與一般配置
採用YAML語言作為其配置語法。它的基本語法規則如下:
- 大小寫敏感
- 使用縮排表示層級關係
- 縮排時不允許使用Tab鍵,只允許使用空格
- 縮排的空格資料不重要,只要相同層級的元素左側對齊即可
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,
就可以登出這行)