filebeat
5.2.2
prospector(input)段配置
filebeat.prospectors:
每一個prospectors,起始於一個破折號”-“
-
input_type: log #默認log,從日志文件讀取每一行。stdin,從標准輸入讀取
paths:
日志文件路徑列表,可用通配符,不遞歸
-
/var/log/*.log
encoding:
plain #編碼,默認無,plain(不驗證或者改變任何輸入),
latin1, utf-8, utf-16be-bom, utf-16be, utf-16le, big5, gb18030, gbk, hz-gb-2312, euc-kr, euc-jp, iso-2022-jp, shift-jis
include_lines:
[‘^ERR’,
‘^WARN’]
匹配行,后接一個正則表達式列表,默認無,如果啟用,則filebeat只輸出匹配行,如果同時指定了多行匹配,仍會按照include_lines做過濾
exclude_lines:
[“^DBG”]
排除行,后接一個正則表達式的列表,默認無
exclude_files:
[“.gz$”]
排除文件,后接一個正則表達式的列表,默認無
ignore_older:
0 #排除更改時間超過定義的文件,時間字符串可以用2h表示2小時,5m表示5分鍾,默認0
document_type:
log #該type會被添加到type字段,對於輸出到ES來說,這個輸入時的type字段會被存儲,默認log
scan_frequency:
10s #prospector掃描新文件的時間間隔,默認10秒
max_bytes:
10485760 #單文件最大收集的字節數,單文件超過此字節數后的字節將被丟棄,默認10MB,需要增大,保持與日志輸出配置的單文件最大值一致即可
multiline.pattern:
^[ #多行匹配模式,后接正則表達式,默認無
multiline.negate:
false
多行匹配模式后配置的模式是否取反,默認false
multiline.match:
after #定義多行內容被添加到模式匹配行之后還是之前,默認無,可以被設置為after或者before
multiline.max_lines:
500 #單一多行匹配聚合的最大行數,超過定義行數后的行會被丟棄,默認500
multiline.timeout:
5s #多行匹配超時時間,超過超時時間后的當前多行匹配事件將停止並發送,然后開始一個新的多行匹配事件,默認5秒
tail_files:
false
可以配置為true和false。配置為true時,filebeat將從新文件的最后位置開始讀取,如果配合日志輪循使用,新文件的第一行將被跳過
close_renamed:
false
當文件被重命名或被輪詢時關閉重命名的文件處理。注意:潛在的數據丟失。請務必閱讀並理解此選項的文檔。默認false
close_removed:
true
如果文件不存在,立即關閉文件處理。如果后面文件又出現了,會在scan_frequency之后繼續從最后一個已知position處開始收集,默認true
enabled:
true
每個prospectors的開關,默認true
filebeat全局配置
filebeat.spool_size:
2048 #后台事件計數閾值,超過后強制發送,默認2048
filebeat.idle_timeout:
5s #后台刷新超時時間,超過定義時間后強制發送,不管spool_size是否達到,默認5秒
filebeat.registry_file:
${path.data}/registry
注冊表文件,同logstash的sincedb,記錄日志文件信息,如果使用相對路徑,則意味着相對於日志數據的路徑
filebeat.config_dir:
定義filebeat配置文件目錄,必須指定一個不同於filebeat主配置文件所在的目錄,目錄中所有配置文件中的全局配置會被忽略
通用配置段
name:
配置發送者名稱,如果不配置則使用hostname
tags:
[“service-X”,
“web-tier”]
標記tag,可用於分組
fields:
添加附件字段,可以使values,arrays,dictionaries或者任何嵌套數據
env:
staging
queue_size:
1000 #處理管道中單個事件內的隊列大小,默認1000
max_procs:
設置最大CPU數,默認為CPU核數
processors配置段
Outputs配置段
output.elasticsearch:
elasticsearch輸出模塊
enabled:
true
啟用模塊
hosts:
[“localhost:9200”]
ES地址
compression_level:
0 #gzip壓縮級別,默認0,不壓縮,壓縮耗CPU
worker:
1 #每個ES的worker數?????,默認1
index:
“filebeat-%{+yyyy.MM.dd}”
可選配置,ES索引名稱,默認filebeat-%{+yyyy.MM.dd}
pipeline:
“”
可選配置,輸出到ES接收節點的pipeline,默認無
path:
“/elasticsearch”
可選的,HTTP路徑,默認無
proxy_url:
http://proxy:3128
http代理服務器地址,默認無
max_retries:
3 #ES重試次數,默認3次,超過3次后,當前事件將被丟棄
bulk_max_size:
50 #對一個單獨的ES批量API索引請求的最大事件數?????默認50
timeout:
90 #到ES的http請求超時時間?????默認90秒
output.logstash:
logstash輸出模塊
enabled:
true
啟用模塊
hosts:
[“localhost:5044”]
logstash地址
worker:
1 #每個logstash的worker數?????,默認1
compression_level:
3 #壓縮級別,默認3
loadbalance:
true
負載均衡開關,在不同的logstash間負載
pipelining:
0 #在處理新的批量期間,異步發送至logstash的批量次數?????
index:
‘filebeat’
可選配置,索引名稱,默認為filebeat
proxy_url:
socks5://user:password@socks5-server:2233
socks5代理服務器地址
proxy_use_local_resolver:
false
使用代理時是否使用本地解析,默認false
output.kafka:
kafka輸出模塊
output.redis:
redis輸出模塊
enabled:
true
啟用模塊
hosts:
[“localhost:6379”]
redis地址,地址為一個列表,如果loadbalance開啟,則負載到里表中的服務器,當一個redis服務器不可達,事件將被分發到可到達的redis服務器
port:
6379 #redis端口,如果hosts內未包含端口信息,默認6379
key:
filebeat #事件發布到redis的list或channel,默認filebeat
password:
redis密碼,默認無
db:
0 #redis的db值,默認0
datatype:
list #發布事件使用的redis數據類型,如果為list,使用RPUSH命令(生產消費模式)。如果為channel,使用PUBLISH命令{發布訂閱模式}。默認為list
worker:
1 #為每個redis服務器啟動的工作進程數,會根據負載均衡配置遞增
loadbalance:
true
負載均衡,默認開啟
timeout:
5s #redis連接超時時間,默認5s
max_retries:
3 #filebeat會忽略此設置,並一直重試到全部發送為止,其他beat設置為0即忽略,默認3次
bulk_max_size:
2048 ##對一個redis請求或管道批量的最大事件數,默認2048
proxy_url:
socks5代理地址,必須使用socks5://
proxy_use_local_resolver:
false
使用代理時是否使用本地解析,默認false
Paths配置段
path.home:
家目錄,filebeat安裝目錄,為其他所有path配置的默認基本路徑,默認為filebeat二進制文件的本地目錄
path.config:
${path.home} #filebeat配置路徑,主配置文件和es模板的默認基本路徑,默認為filebeat家目錄
path.data:
${path.home}/data
filebeat數據存儲路徑,默認在filebeat家目錄下
path.logs:
${path.home}/logs
filebeat日志存儲路徑,默認在filebeat家目錄下
logging配置段
有3個可配置的filebeat日志輸出選項:syslog,file,stderr
windows默認輸出到file
logging.level:
info #設定日志級別,可設置級別有critical,
error, warning, info, debug
logging.selectors:
[ ] #開啟debug輸出的選擇組件,開啟所有選擇使用[“*”],其他可用選擇為”beat”,”publish”,”service”
logging.to_syslog:
true
輸出所有日志到syslog,默認為false
logging.metrics.enabled:
true
定期記錄filebeat內部性能指標,默認true
logging.metrics.period:
30s #記錄內部性能指標的周期,默認30秒
logging.to_files:
true
輸出所有日志到file,默認true
logging.files:
日志輸出的文件配置
path:
/var/log/filebeat
配置日志輸出路徑,默認在家目錄的logs目錄
name:
filebeat #日志文件名
rotateeverybytes:
10485760 #日志輪循大小,默認10MB
keepfiles:
7 #日志輪循文件保存數量,默認7
harvester收割者
負責讀取每個文件的內容,收割者一行一行的讀取每個文件並發送內容到output,收割者負責打開和關閉文件
prospector勘探者
負責管理收割者和查找所有讀取源。目前勘探者支持兩個勘探類型,log和stdin,每個勘探類型可以被定義多次。龍勘探者檢查每個文件來看是否需要打開一個收割者或收割者是否在運行,誘惑是否忽略這個文件
filebeat如何保持文件狀態?
filebeat保持每個文件的狀態並頻繁刷新狀態到磁盤上的注冊文件
狀態用於記憶收割者讀取的最后一個偏移量並確保所有的日志行被發送
如果一個es或logstash的輸出不可達時,filebeat將持續追蹤發送的最后一樣並繼續讀取文件,盡快可以變為可用的輸出
當filebeat運行時,狀態信息將被每個勘探者保存在內存中
當filebeat被重啟,會使用注冊文件讀取數據重建狀態,並且讓每個收割者從一直的最后位置開始
每個勘探者為他發現的每個文件保持一個狀態,因為文件可能被刪除或移動,文件名和路徑不足以確定一個文件
registry記錄內容如下
[root@jenkins
data]#
cat registry
[{“source”:”/var/log/messages”,”offset”:5912,”FileStateOS”:{“inode”:38382035,”device”:64768},”timestamp”:”2017-03-13T18:17:54.39159179+08:00”,”ttl”:-1}]
[root@jenkins
data]#
stat /var/log/messages
File:
‘/var/log/messages’
Size:
5912 Blocks: 16 IO Block: 4096 regular file
Device:
fd00h/64768d
Inode: 38382035 Links: 1
Access:
(0600/-rw——-)
Uid: ( 0/ root) Gid: ( 0/ root)
Context:
system_u:object_r:var_log_t:s0
Access:
2017-03-13 18:17:49.355444251 +0800
Modify:
2017-03-13 18:15:22.452429796 +0800
Change:
2017-03-13 18:15:22.452429796 +0800
Birth:
-
multiline.negate和match組合
negate
match
false
after 連續匹配的行將被添加到前一個不匹配的行
false
before 連續匹配的行將被預合並到后一個不匹配的行
true
after 連續不匹配的行將被添加到前一個匹配的行
true
before 連續不匹配的行將被預合並到后一個匹配的行