在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产生索引如下: