在Filebeat配置中,處理配置 輸入(filebeat.inputs)和 輸出(output),還可以配置一些其他配置,如:全局配置、常規配置、索引生命周期管理、處理器等
文檔地址:https://www.elastic.co/guide/en/beats/filebeat/7.x/configuring-howto-filebeat.html
全局Filebeat配置選項
這些選項位於filebeat名稱空間中。
registry.path
注冊表的根路徑,默認值:${path.data}/registry
示例
1 filebeat.registry.path: registry
registry.file_permissions
要應用於注冊表數據文件的權限掩碼。默認值為0600。
示例
1 filebeat.registry.file_permissions: 0600
config_dir
該config_dir選項必須指向主Filebeat配置文件所在目錄以外的目錄。如果指定的路徑不是絕對路徑,則將其視為相對於配置路徑。
示例
1 filebeat.config_dir: path/to/configs
Filebeat常規配置
所有Elastic Beats都支持這些選項。因為它們是通用選項,所以它們沒有命名空間。
name
Beats的名稱。如果此選項為空,hostname則使用服務器的。該名稱作為agent.name每個已發布交易中的字段包括在內。您可以使用該名稱對單個Beat發送的所有交易進行分組。
示例
1 name: "my-shipper"
tags
Beat在tags每個已發布交易的字段中包括的標簽列表。標記使按不同邏輯屬性對服務器進行分組變得容易。例如,如果您有一個Web服務器群集,則可以在每個服務器上的Beat上添加“ webservers”標簽,然后在Kibana Web界面中使用過濾器和查詢來獲得整個服務器組的可視化效果。
示例
1 tags: ["my-service", "hardware", "test"]
fields
您可以指定可選字段以將其他信息添加到輸出中。字段可以是標量值,數組,字典或它們的任何嵌套組合。默認情況下,您在此處指定的字段將被分組fields到輸出文檔中的子詞典下。要將自定義字段存儲為頂級字段,請將fields_under_root選項設置為true。
fields_under_root
如果此選項設置為true,則自定義字段將作為頂級字段存儲在輸出文檔中,而不是分組在fields子詞典下。如果自定義字段名稱與其他字段名稱沖突,則自定義字段將覆蓋其他字段。
示例
1 fields_under_root: true 2 fields: 3 instance_id: i-10a64379 4 region: us-east-1
測試常規配置
完整測試配置如下:
1 # 自定義測試配置文件test-nginx.yml 2 3 # 輸入 4 filebeat.inputs: 5 - type: log 6 enabled: true 7 paths: 8 - /data/logs/nginx-1.16.1/access.log 9 name: "my-shipper" 10 # 增加標簽 11 tags: ["nginx"] 12 # 增加字段 13 fields: 14 instance_id: i-10a64379 15 region: us-east-1 16 # 表示字段加在根節點下 17 fields_under_root: true 18 19 # 指定索引的分區數 20 setup.template.settings: 21 index.number_of_shards: 3 22 23 24 # 輸出到指定ES的配置 25 output.elasticsearch: 26 hosts: ["127.0.0.1:9200"] 27 username: "elastic" 28 password: "123456"
運行Filebeat,ES獲取到數據如下:
1 { 2 "_index": "filebeat-7.6.1-2020.06.21-000001", 3 "_type": "_doc", 4 "_id": "Kwvb3HIBeBo_vUMF439C", 5 "_version": 1, 6 "_score": 0, 7 "_source": { 8 "@timestamp": "2020-06-22T16:28:16.600Z", 9 "ecs": { 10 "version": "1.4.0" 11 }, 12 "host": { 13 "name": "my-shipper" 14 }, 15 "agent": { 16 "version": "7.6.1", 17 "name": "my-shipper", 18 "type": "filebeat", 19 "ephemeral_id": "84a6bd63-3880-4ef3-b0f9-604d9f1800a0", 20 "hostname": "H__D", 21 "id": "9f14c4db-2f85-4740-8183-36f475ffdfed" 22 }, 23 "region": "us-east-1", 24 "input": { 25 "type": "log" 26 }, 27 "tags": [ 28 "nginx" 29 ], 30 "instance_id": "i-10a64379", 31 "log": { 32 "offset": 41026608, 33 "file": { 34 "path": "/data/logs/nginx-1.16.1/access.log" 35 } 36 }, 37 "message": "127.0.0.1 - kibana [23/Jun/2020:00:28:16 +0800] \"GET /_nodes?filter_path=nodes.*.version%2Cnodes.*.http.publish_address%2Cnodes.*.ip HTTP/1.1\" 200 233 \"-\" \"-\"" 38 }, 39 "fields": { 40 "suricata.eve.timestamp": [ 41 "2020-06-22T16:28:16.600Z" 42 ], 43 "@timestamp": [ 44 "2020-06-22T16:28:16.600Z" 45 ] 46 }, 47 "sort": [ 48 0, 49 1592843296600 50 ] 51 }
可以看到_source包含了 host.name、region、instance_id等字段
索引生命周期管理(ILM)
使用Elasticsearch中的索引生命周期管理(ILM)功能來管理Filebeat索引的老化。例如,與其創建每日索引,該索引的大小可以根據Beats的數量和發送的事件數而變化,而當現有索引達到指定的大小或使用期限時,可以使用索引生命周期策略來自動過渡到新索引。
從7.0版開始,Filebeat在連接到支持生命周期管理的群集時默認使用索引生命周期管理。Filebeat自動加載默認策略,並將其應用於Filebeat創建的任何索引。
配置示例:
1 setup.ilm.enabled: auto 2 setup.ilm.rollover_alias: "filebeat" 3 setup.ilm.pattern: "{now/d}-000001"
setup.ilm.enabled:對Filebeat創建的任何新索引啟用或禁用索引生命周期管理。有效值是true,false和auto。如果auto在7.0版和更高版本上指定了(默認值),則Filebeat如果在Elasticsearch中啟用了該功能並具有所需的許可證,則會自動使用索引生命周期管理;否則,Filebeat會創建每日索引。
setup.ilm.rollover_alias:索引生命周期寫別名。默認值為 filebeat-%{[agent.version]}。設置此選項將更改別名。
setup.ilm.pattern:滾動索引模式。默認值為%{now/d}-000001。
示例配置如下:
1 # 索引生命周期 2 setup.ilm.enabled: auto 3 setup.ilm.rollover_alias: "filebeat-nginx" 4 setup.ilm.pattern: "{now/d}-000001"
啟動運行filebeat之后,es產生索引如下:

