Filebeat的配置参考
指定要运行的模块
前提:
在运行Filebeat模块之前,需要安装并配置Elastic堆栈:
安装Ingest Node GeoIP和User Agent插件。这些插件需要捕获示例仪表板中可用的某些可视化所使用的地理位置和浏览器信息。您可以通过在Elasticsearch主路径中运行以下命令来安装这些插件:
sudo bin/elasticsearch-plugin install ingest-geoip
sudo bin/elasticsearch-plugin install ingest-user-agent
运行这些命令后需要重新启动Elasticsearch。
验证Elasticsearch和Kibana是否正在运行,并且Elasticsearch已准备好从Filebeat接收数据。
在modules.d目录编辑中启用模块配置
该modules.d目录包含Filebeat中可用的所有模块的默认配置。您可以modules.d通过运行 modules enable或modules disable命令启用或禁用特定模块配置。
例如,要在 目录中启用apache2和mysql配置modules.d:
/filebeat modules enable apache2 mysql
然后,当您运行Filebeat时,它会加载modules.d目录中指定的相应模块配置(例如,modules.d/apache2.yml和 modules.d/mysql.yml)
要查看启用和禁用模块的列表,请运行:filebeat modules list
默认模块配置收集的日志位于操作系统的预期位置,并且模块的行为适合您的环境。要更改默认配置,您需要指定变量设置。
运行filebeat时启用模块
要在命令行运行Filebeat时启用特定模块,可以使用该--modules标志。这种方法在您开始使用时很有效,并且每次运行Filebeat时都希望指定不同的模块和设置。
将在命令行中指定的任何模块以及在配置文件或modules.d 目录中启用的任何模块一起加载。如果存在冲突,则使用命令行中指定的配置。下面的示例示出了如何启用和运行nginx,mysql和 system模块。
./filebeat -e --modules nginx,mysql,systemfilebeat -e --modules nginx,mysql,system
默认模块配置假定您正在收获的日志位于操作系统的预期位置,并且模块的行为适合您的环境。要更改默认配置,您需要指定变量设置。
在filebeat.yml文件编辑中启用模块配置
如果可能,您应该使用modules.d目录中的配置文件。但是,如果从先前版本的Filebeat升级并且不想将模块配置移动到目录,则直接在配置文件中启用模块是一种实用方法modules.d。您可以继续在filebeat.yml文件中配置模块,但是您将无法使用该modules命令来启用和禁用配置,因为该命令需要modules.d布局。
要在filebeat.yml配置文件中启用特定模块,可以向filebeat.modules列表中添加条目。列表中的每个条目都以短划线( - )开头,然后是该模块的设置。
下面的示例示出了运行的配置nginx,mysql和 system模块。
filebeat.modules:modules:
- module: nginx- module: nginx
- module: mysql- module: mysql
- module: system- module: system
指定模块的变量设置
每个模块和文件集都有变量,您可以设置这些变量来更改模块的默认行为,包括模块查找日志文件的路径。例如,var.paths以下示例中的设置设置nginx访问日志文件的路径:
- module: nginx
access:
var.paths: ["/var/log/nginx/access.log*"]
要在命令行中设置Nginx访问日志文件的路径,请使用该-M标志。例如:
filebeat -M "nginx.access.var.paths=[/var/log/nginx/access.log*]"
在命令行设置变量时,变量名称需要包含模块和文件集名称。您可以指定多个覆盖。每个覆盖都必须以-M。
在这里,您将看到如何将-M旗帜与旗帜一起使用--modules。此示例显示如何设置访问和错误日志的路径:
filebeat --modules nginx -M "nginx.access.var.paths=[/var/log/nginx/access.log*]" -M "nginx.error.var.paths=[/var/log/nginx/error.log*]"
在模块中可以为每个文件集设置的特定变量的信息。
高级设置(prospector)
在幕后,每个模块启动一个Filebeat prospector。高级用户可以添加或覆盖任何探针设置。例如,你可以设置 close_eof到true在模块配置:
- module: nginx
access:
prospector:
close_eof: true
或者在命令行中这样:
filebeat -M "nginx.access.prospector.close_eof=true"
在这里,您将看到如何将-M旗帜与旗帜一起使用--modules:
filebeat --modules nginx -M "nginx.access.prospector.close_eof=true"
您可以使用通配符一次更改多个模块/文件集的变量或设置。例如启用模块close_eof中的所有文件集nginx:
filebeat -M "nginx.*.prospector.close_eof=true"
启用close_eof由任何模块创建的所有prospectors:
filebeat -M "*.*.prospector.close_eof=true"
设置prospectors
Filebeat使用prospector来定位和处理文件。要配置Filebeat,请filebeat.prospectors在filebeat.yml配置文件的部分中指定prospectors列表。
列表中的每个项目都以短划线( - )开头,并指定特定于浏览器的配置选项,包括为查找文件而被爬网的路径列表。
filebeat.prospectors:
- type: log
paths:
- /var/log/apache/httpd-*.log
- type: log
paths:
- /var/log/messages
- /var/log/*.log
配置选项:
type:
log:读取日志文件的每一行(默认)
stdin:标准输入
redis:从redis读取慢速日志条目(实验性)
udp:通过UDP读取事件。max_message_size
docker:从Docker读取日志。containers
您在此处指定的值将用作type发布到Logstash和Elasticsearch的每个事件的值。
paths:
应该对其进行爬网和获取的基于glob的路径列表。此处还支持Golang Glob支持的所有模式。
例如,要从预定义级别的子目录中获取所有文件,可以使用以下模式:/var/log/*/*.log。这.log将从子文件夹中获取所有文件/var/log。
它不从/var/log文件夹本身获取日志文件。可以使用可选recursive_glob设置以递归方式获取目录的所有子目录中的所有文件。
Filebeat为在指定路径下找到的每个文件启动收集器。您可以为每行指定一个路径。每行以短划线( - )开头。
recursive_glob.enabled:
允许扩展**为递归的glob模式。启用此功能后,**每个路径中最右边的部分将扩展为固定数量的glob模式。例如:/foo/**扩展到/foo,/foo/*,/foo/*/*,等等。如果启用,它会将单个扩展**为8级深度*模式。
默认情况下启用此功能,设置recursive_glob.enabled为false以禁用它。
encoding:
用于读取包含国际字符的文件的文件编码。请参阅W3C推荐的编码名称,以便在HTML5中使用。
以下是W3C推荐的一些示例编码:
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等
该plain编码是特殊的,因为它不验证或转换任何输入。
exclude_lines:
正则表达式列表,用于匹配您希望Filebeat排除的行。Filebeat会删除与列表中的正则表达式匹配的所有行。默认情况下,不会删除任何行。空行被忽略。
如果多行同时指定时,线通过过滤前的各多行消息被组合成一个单一的线exclude_lines。
以下示例将Filebeat配置为删除以“DBG”开头的所有行。
filebeat.prospectors:
- paths:
- /var/log/myapp/*.log
exclude_lines: ['^DBG']
请参阅正则表达式支持以获取受支持的正则表达式模式列表。
include_lines:
正则表达式列表,用于匹配您希望Filebeat包含的行。Filebeat仅导出与列表中的正则表达式匹配的行。默认情况下,将导出所有行。空行被忽略。
如果多行同时指定时,线通过过滤前的各多行消息被组合成一个单一的线include_lines。
以下示例将Filebeat配置为导出以“ERR”或“WARN”开头的所有行:
filebeat.prospectors:
- paths:
- /var/log/myapp/*.log
include_lines: ['^ERR', '^WARN']
如果两个include_lines和exclude_lines定义,Filebeat执行include_lines,然后再执行exclude_lines。定义两个选项的顺序无关紧要。该include_lines选项将始终在exclude_lines选项之前执行,即使在配置文件中exclude_lines出现之前include_lines也是如此。
以下示例导出除调试消息(DBG)之外的所有Apache日志行:
include_lines: ['apache']
exclude_lines: ['^DBG']
exclude_files
正则表达式列表,用于匹配您希望Filebeat忽略的文件。默认情况下不会排除任何文件。
以下示例将Filebeat配置为忽略具有gz扩展名的所有文件:
exclude_files: ['.gz$']
tags
Beat在tags每个已发布事件的字段中包含的标记列表。使用标签可以轻松选择Kibana中的特定事件或在Logstash中应用条件过滤。这些标记将附加到常规配置中指定的标记列表中。
filebeat.prospectors:
- paths: ["/var/log/app/*.json"]
tags: ["json"]
fields
可以指定的可选字段,用于向输出添加其他信息。例如,您可以添加可用于过滤日志数据的字段。字段可以是标量值,数组,字典或这些的任何嵌套组合。默认情况下,您在此处指定的字段将分组在fields输出文档中的子字典下。要将自定义字段存储为顶级字段,请将该fields_under_root选项设置为true。如果在常规配置中声明了重复字段,则其值将被此处声明的值覆盖。
filebeat.prospectors:
- paths: ["/var/log/app/*.log"]
fields:
app_id: query_engine_12
fields_under_root
如果此选项设置为true,则自定义字段将存储为输出文档中的顶级字段,而不是在fields子字典下分组 。如果自定义字段名称与Filebeat添加的其他字段名称冲突,则自定义字段将覆盖其他字段。
指定多个prospector
当您需要从多个文件中收集行时,您只需配置一个prospector并指定多个路径即可为每个文件启动收集器。但是,如果你想申请额外的特定探矿- 配置设置(如fields,include_lines,exclude_lines,multiline,等),以从特定文件中获取的线,你需要在Filebeat配置文件中定义多个探矿。
在配置文件中,您可以指定多个探测器,每个探测器可以定义多个要爬网的路径,如以下示例所示。
filebeat.prospectors:
- type: log
paths:
- /var/log/system.log
- /var/log/wifi.log
- type: log
paths:
- "/var/log/apache2/*"
fields:
apache: true
fields_under_root: true
示例中的配置文件启动了两个prospectors(prospectors列表是一个YAML 数组,因此每个prospectors都以a开头-)。第一个prospectors有两个收割机,一个收割system.log锉刀,另一个收割wifi.log。第二个prospectors为目录中的每个文件启动一个收集器,apache2并使用fields配置选项添加一个调用apache输出的字段。
管理多行消息
Filebeat收集的文件可能包含跨越多行文本的邮件。例如,多行消息在包含Java堆栈跟踪的文件中很常见。为了正确处理这些多行事件,您需要multiline在filebeat.yml文件中配置设置以指定哪些行是单个事件的一部分。
重要:如果要向Logstash发送多行事件,请在将事件数据发送到Logstash之前使用此处描述的选项来处理多行事件。尝试在Logstash中实现多行事件处理(例如,通过使用Logstash多行编解码器)可能会导致流和损坏数据的混合。
配置选项:
您可以filebeat.prospectors在filebeat.yml配置文件的部分中指定以下选项,以控制Filebeat如何处理跨越多行的消息。以下示例显示如何配置Filebeat以处理多行消息,其中消息的第一行以方括号([)开头。
multiline.pattern: '^['
multiline.negate: true
multiline.match: after
Filebeat获取所有不以其开头的行,[并将它们与之前的行组合。例如,您可以使用此配置将多行消息的以下行连接到单个事件中:
[beat-logstash-some-name-832-2015.11.28] IndexNotFoundException[no such index]
at org.elasticsearch.cluster.metadata.IndexNameExpressionResolver$WildcardExpressionResolver.resolve(IndexNameExpressionResolver.java:566)
at org.elasticsearch.cluster.metadata.IndexNameExpressionResolver.concreteIndices(IndexNameExpressionResolver.java:133)
at org.elasticsearch.cluster.metadata.IndexNameExpressionResolver.concreteIndices(IndexNameExpressionResolver.java:77)
at org.elasticsearch.action.admin.indices.delete.TransportDeleteIndexAction.checkBlock(TransportDeleteIndexAction.java:75)
multiline.pattern
指定要匹配的正则表达式模式。请注意,Filebeat支持的正则表达式模式与Logstash支持的模式略有不同。请参阅正则表达式支持以获取受支持的正则表达式模式列表。根据您配置其他多行选项的方式,与指定正则表达式匹配的行被视为前一行的延续或新多行事件的开始。您可以设置negate选项以否定模式。
multiline.negate
定义模式是否被否定。默认是false。
multiline.match
指定Filebeat如何将匹配行组合到事件中。设置是after或before。这些设置的行为取决于您为negate以下内容指定的内容:
设置为 negate 设置为 match 结果 例 pattern: ^b
multiline.flush_pattern
指定正则表达式,其中当前多行将从内存中刷新,结束多行消息。
multiline.max_lines
可以合并为一个事件的最大行数。如果多行消息包含多个消息max_lines,则丢弃任何其他行。默认值为500。
multiline.timeout
在指定的超时后,即使没有找到新模式来启动新事件,Filebeat也会发送多行事件。默认值为5秒。
全局filebeat配置选项
这些选项位于filebeat命名空间中。
registry_file
注册表文件的名称。如果使用相对路径,则认为它相对于数据路径。有关详细信息,请参阅目录布局部分 默认是${path.data}/registry。
filebeat.registry_file: registry
无法使用符号链接作为注册表文件。
config_dir
包含其他prospector配置文件的目录的完整路径。每个配置文件必须以.yml。每个配置文件还必须指定完整的Filebeat配置层次结构,即使只处理文件的prospector部分。所有全局选项(例如registry_file)都将被忽略。
该config_dir选项必须指向主Filebeat配置文件所在目录以外的目录。
如果指定的路径不是绝对路径,则认为它相对于配置路径。有关详细信息,请参阅 目录布局部分
filebeat.config_dir: path/to/configs
shutdown_timeout
Filebeat等待关闭以便发布者在Filebeat关闭之前完成发送事件的时间。
默认情况下,此选项被禁用,Filebeat不会等待发布者在关闭之前完成发送事件。这意味着在重新启动Filebeat时,会再次发送发送到输出但在Filebeat关闭之前未确认的任何事件。有关其工作原理的详细信息,请参阅Filebeat如何确保至少一次交付?编辑。
您可以配置该shutdown_timeout选项以指定Filebeat等待发布者在关闭之前完成发送事件的最长时间。如果在shutdown_timeout到达之前确认了所有事件,则Filebeat将关闭。
此选项没有建议的设置,因为确定正确的值在shutdown_timeout很大程度上取决于运行Filebeat的环境和输出的当前状态。
配置示例:
filebeat.shutdown_timeout:5s
常规配置选项
所有Elastic Beats都支持这些选项。因为它们是常见选项,所以它们不是命名空间。
配置示例:
name: "my-shipper"
tags: ["service-X", "web-tier"]
name
Beat的名字。如果此选项为空,hostname则使用服务器的选项。该名称作为beat.name每个已发布事务中的字段包含在内。您可以使用该名称对单个Beat发送的所有事务进行分组。
例:
name: "my-shipper"
tags
Beat在tags每个已发布事务的字段中包含的标记列表。标签可以轻松地按不同的逻辑属性对服务器进行分组。例如,如果您有一组Web服务器,则可以将“webservers”标记添加到每台服务器上的Beat中,然后在Kibana Web界面中使用过滤器和查询来获取整个服务器组的可视化。
例:
tags: ["my-service", "hardware", "test"]
fields
可以指定的可选字段,用于向输出添加其他信息。字段可以是标量值,数组,字典或这些的任何嵌套组合。默认情况下,您在此处指定的字段将分组在fields输出文档中的子字典下。要将自定义字段存储为顶级字段,请将该fields_under_root选项设置为true。
例:
fields: {project: "myproject", instance-id: "574734885120952459"}
fields_under_root
如果此选项设置为true,则自定义字段将存储为输出文档中的顶级字段,而不是在fields子字典下分组。如果自定义字段名称与其他字段名称冲突,则自定义字段将覆盖其他字段。
例:
fields_under_root: true
fields:
instance_id: i-10a64379
region: us-east-1
processors
要应用于节拍生成的数据的处理器列表。
有关在配置中指定处理器的信息,请参阅筛选并增强导出的数据。
max_procs
设置可以同时执行的最大CPU数。默认值是系统中可用的逻辑CPU数。
加载外部配置文件
Filebeat可以为探矿者和模块加载外部配置文件,这允许您将配置分成多个较小的配置文件。有关详细信息,请参阅Prospector配置编辑和 模块配置编辑部分。
prospectors配置
对于prospector配置,您path可以在文件的filebeat.config.prospectors部分中指定该选项filebeat.yml。例如:
filebeat.config.prospectors:
enabled: true
path: configs/*.yml
pathGlob找到的每个文件都必须包含一个或多个prospector定义的列表。每个外部配置文件的第一行必须是以...开头的prospector定义- type。确保省略filebeat.config.prospectors此文件中的行 。
例如:
- type: log
paths:
- /var/log/mysql.log
scan_frequency: 10s
- type: log
paths:
- /var/log/apache.log
scan_frequency: 5s
至关重要的是,两个正在运行的探矿者没有定义重叠的文件路径。如果多个探测器同时收集同一个文件,则可能导致意外行为。
实时重新加载
您可以将Filebeat配置为在发生更改时动态重新加载外部配置文件。此功能适用于作为外部配置文件加载的prospector和模块配置 。您无法使用此功能重新加载主filebeat.yml配置文件。
要配置此功能,请指定要监视配置更改的路径(Glob)。当Glob找到的文件发生变化时,将根据配置文件中的更改启动和停止新的探矿者和/或模块。
此功能在容器环境中特别有用,其中一个容器用于为在同一主机上的其他容器中运行的服务尾部日志。
要启用动态配置重装,指定path和reload下选项filebeat.config.prospectors或filebeat.config.modules部分。例如:
filebeat.config.prospectors:
enabled: true
path: configs/*.yml
reload.enabled: true
reload.period: 10s
path:一个Glob,用于定义要检查更改的文件。
reload.enabled: 设置true为时,启用动态配置重新加载。
reload.period: 指定检查文件更改的频率。不要将其设置period为小于1,因为文件的修改时间通常以秒为单位存储。将period小于1 设置为将导致不必要的开销。
在具有POSIX文件权限的系统上,所有Beats配置文件都受所有权和文件权限检查的约束。
配置内部队列
Filebeat使用内部队列在发布事件之前存储事件。队列负责缓冲事件并将事件组合成可由输出使用的批处理。输出将使用批量操作在一个事务中发送一批事件。
可以通过queue在filebeat.yml配置文件的部分中设置选项来配置内部队列的类型和行为。
配置示例将内存队列设置为最多缓冲4096个事件,512个可用事件或者最旧的可用事件已在队列中等待5秒:
queue.mem:
events: 4096
flush.min_events:512
flush.timeout:5s
events:
队列可以存储的事件数。默认值为4096个事件。
flush.min_events:
发布所需的最少事件数。如果此值设置为0,则输出可以开始发布事件而无需额外的等待时间。否则输出必须等待更多事件变为可用。默认值为2048。
flush.timeout:
最长等待时间flush.min_events。如果设置为0,则事件将立即可供使用。默认值为1秒。
配置输出
配置elasticsearch输出
为输出指定Elasticsearch时,Filebeat会使用Elasticsearch HTTP API将事务直接发送到Elasticsearch。
配置示例:
output.elasticsearch:
hosts: ["http://localhost:9200"]
index: "filebeat-%{[beat.version]}-%{+yyyy.MM.dd}"
ssl.certificate_authorities: ["/etc/pki/root/ca.pem"]
ssl.certificate: "/etc/pki/client/cert.pem"
ssl.key: "/etc/pki/client/cert.key"
要启用SSL,只需添加https到主机下定义的所有URL 。
output.elasticsearch:
hosts: ["https://localhost:9200"]
username: "admin"
password: "s3cr3t"
如果Elasticsearch节点由定义IP:PORT,则添加protocol: https到yaml文件。
output.elasticsearch:
hosts: ["localhost"]
protocol: "https"
username: "admin"
password: "s3cr3t"
配置选项
enabled
enabled config是一个布尔设置,用于启用或禁用输出。如果设置为false,则禁用输出。默认值是true
hosts
要连接的Elasticsearch节点列表。事件以循环顺序分发到这些节点。如果一个节点无法访问,则会自动将该事件发送到另一个节点。每个Elasticsearch节点都可以定义为URL或IP:PORT。例如:http://192.15.3.2,https://es.found.io:9230或192.24.3.2:9300。如果未指定端口,9200则使用。
output.elasticsearch:
hosts: ["10.45.3.2:9220", "10.45.3.1:9230"]
protocol: https
path: /elasticsearch
在前面的示例中,Elasticsearch节点位于https://10.45.3.2:9220/elasticsearch和 https://10.45.3.1:9230/elasticsearch。
compression_level
gzip压缩级别。将此值设置为0将禁用压缩。压缩级别必须在1(最佳速度)到9(最佳压缩)的范围内。
增加压缩级别将减少网络使用,但会增加CPU使用率。默认值为0。
worker
每个配置主机向Elasticsearch发布事件的工作器数。这最适用于启用负载平衡模式。示例:如果您有2个主机和3个工作程序,则总共启动6个工作程序(每个主机3个)。默认值为1。
username
用于连接Elasticsearch的基本身份验证用户名。
password
用于连接Elasticsearch的基本身份验证密码。
parameters
使用索引操作在url中传递的HTTP参数字典。
protocol
可以访问协议Elasticsearch的名称。选项是: http或https。默认是http。但是,如果您指定了URLhosts,protocol则会通过您在URL中指定的任何方案覆盖该值。
path
HTTP API调用前面的HTTP路径前缀。这对于Elasticsearch监听在自定义前缀下导出API的HTTP反向代理的情况非常有用。
headers
自定义HTTP标头,以添加到Elasticsearch输出创建的每个请求。例:
output.elasticsearch.headers:
X-My-Header: Header contents
通常可以通过用逗号分隔它们来为同一标头名称指定多个标头值。
proxy_url
连接到Elasticsearch服务器时要使用的代理的URL。该值可以是完整的URL或“host [:port]”,在这种情况下,假定为“http”方案。如果未通过配置文件指定值,则使用代理环境变量。有关 环境变量的更多信息,请参阅 golang文档。
index
要将事件写入的索引名称。默认值为 "filebeat-%{[beat.version]}-%{+yyyy.MM.dd}"(例如 "filebeat-6.2.4-2017.04.26")。如果更改此设置,还需要配置setup.template.name和setup.template.pattern选项(请参阅加载Elasticsearch索引模板)。如果您使用的是预先构建的Kibana仪表板,则还需要设置该setup.dashboards.index选项(请参阅 加载Kibana仪表板)。
indices
支持条件的索引选择器规则数组,基于格式字符串的字段访问和名称映射。第一个规则匹配将用于设置index要发布的事件。如果indices缺少或没有规则匹配,index将使用该字段。
规则设置:
index:要使用的索引格式字符串。如果缺少使用的字段,则规则将失败。
mapping:字典映射索引名称到新名称
default:如果mapping找不到匹配项,则为默认字符串值。
when:必须成功执行当前规则的条件。
示例elasticsearch输出indices:
output.elasticsearch:
hosts: ["http://localhost:9200"]
index: "logs-%{[beat.version]}-%{+yyyy.MM.dd}"
indices:
- index: "critical-%{[beat.version]}-%{+yyyy.MM.dd}"
when.contains:
message: "CRITICAL"
- index: "error-%{[beat.version]}-%{+yyyy.MM.dd}"
when.contains:
message: "ERR"
pipeline
格式字符串值,指定要将事件写入的摄取节点管道。
output.elasticsearch:
hosts: ["http://localhost:9200"]
pipeline: my_pipeline_id
pipelines
与indices数组类似,这是一个支持条件,基于格式字符串的字段访问和名称映射的管道选择器配置数组。第一个规则匹配将用于设置 pipeline要发布的事件。如果pipelines缺少或没有规则匹配,pipeline将使用该字段。
示例elasticsearch输出pipelines:
filebeat.prospectors:
- paths: ["/var/log/app/normal/*.log"]
fields:
type: "normal"
- paths: ["/var/log/app/critical/*.log"]
fields:
type: "critical"
output.elasticsearch:
hosts: ["http://localhost:9200"]
index: "filebeat-%{[beat.version]}-%{+yyyy.MM.dd}"
pipelines:
- pipeline: critical_pipeline
when.equals:
fields.type: "critical"
- pipeline: normal_pipeline
when.equals:
fields.type: "normal"
max_retries
Filebeat忽略max_retries设置并无限期重试。
bulk_max_size
单个Elasticsearch批量API索引请求中要批量处理的最大事件数。默认值为50。
事件可以分批收集。Filebeat会将批次大于bulk_max_size 多批次。
指定更大的批处理大小可以通过降低发送事件的开销来提高性能。但是,大批量大小也会增加处理时间,这可能会导致API错误,连接中断,超时发布请求,以及最终导致吞吐量降低。
设置bulk_max_size为小于或等于0的值将禁用批次拆分。禁用拆分时,队列将决定批处理中包含的事件数。
timeout
Elasticsearch请求的http请求超时(以秒为单位)。默认值为90。
ssl
SSL参数的配置选项,例如用于基于HTTPS的连接的证书颁发机构。如果ssl缺少该部分,则主机CA用于与Elasticsearch的HTTPS连接。
配置Logstash输出
Logstash输出通过使用在TCP上运行的lumberjack协议将事件直接发送到Logstash。Logstash允许对生成的事件进行额外处理和路由。要将Logstash用作输出,必须 为Logstash 安装和配置 Beats输入插件。
如果要使用Logstash对Filebeat收集的数据执行其他处理,则需要配置Filebeat以使用Logstash。
要执行此操作,请编辑Filebeat配置文件以通过注释掉它来禁用Elasticsearch输出,并通过取消注释logstash部分来启用Logstash输出:
output.logstash:
hosts: ["127.0.0.1:5044"]
该hosts选项指定Logstash服务器和port(5044),其中Logstash配置为侦听传入的Beats连接。
对于此配置,您必须手动将索引模板加载到Elasticsearch中,因为自动加载模板的选项仅适用于Elasticsearch输出。
访问元数据字段
发送到Logstash的每个事件都包含以下元数据字段,您可以在Logstash中使用这些字段进行索引和过滤:
{
...
"@metadata": {
"beat": "filebeat",
"version": "6.2.4"
"type": "doc"
}
}
Filebeat使用该@metadata字段将元数据发送到Logstash。
默认为filebeat。要更改此值,请index在Filebeat配置文件中设置该选项。
目前的值type是硬编码的doc。之前的Logstash配置使用它来设置Elasticsearch中的文档类型。
警告:@metadata.type由Logstash输出添加的字段已弃用,硬编码doc,并将在Filebeat7.0中删除。
您可以从Logstash配置文件中访问此元数据,以根据元数据的内容动态设置值。
例如,版本2.x和5.x的以下Logstash配置文件将Logstash设置为使用Beats报告的索引和文档类型将事件索引到Elasticsearch中:
input {{
beats {{
port => 5044=> 5044
}}
}}
output {{
elasticsearch {{
hosts => ["http://localhost:9200"]=> ["http://localhost:9200"]
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
}}
}}
%{[@metadata][beat]}将索引名称的第一部分设置为beat元数据字段的值,%{[@metadata][version]}将第二部分设置为Beat的版本,并将%{+YYYY.MM.dd}名称的第三部分设置为基于Logstash @timestamp字段的日期。例如: filebeat-6.2.4-2017.03.29。
使用此处显示的Logstash配置索引到Elasticsearch中的事件类似于Beats直接索引到Elasticsearch的事件。
配置选项
enabled
enabled config是一个布尔设置,用于启用或禁用输出。如果设置为false,则禁用输出。默认值是true。
hosts
要连接的已知Logstash服务器列表。如果禁用负载均衡,但配置了多个主机,则会随机选择一个主机(没有优先级)。如果一台主机无法访问,则随机选择另一台主机。此列表中的所有条目都可以包含端口号。如果未指定端口号,则为其指定的值port将用作默认端口号。
compression_level
gzip压缩级别。将此值设置为0将禁用压缩。压缩级别必须在1(最佳速度)到9(最佳压缩)的范围内。增加压缩级别将减少网络使用,但会增加CPU使用率。默认值为3。
worker
每个配置主机将事件发布到Logstash的工作器数。这最适用于启用负载平衡模式。示例:如果您有2个主机和3个工作程序,则总共启动6个工作程序(每个主机3个)。
loadbalance
如果设置为true并且配置了多个Logstash主机,则输出插件会将已发布的事件负载平衡到所有Logstash主机上。如果设置为false,则输出插件仅将所有事件发送到一个主机(随机确定),如果所选主机无响应,则会切换到另一个主机。默认值为false。
ttl
是否可以连接到Logstash,之后将重新建立连接。Logstash主机代表负载均衡器时很有用。由于与Logstash主机的连接是粘性操作,因此负载平衡器可能导致实例之间的负载分配不均匀。在连接上指定TTL允许在实例之间实现相等的连接分配。指定TTL为0将禁用此功能。默认值为0。异步Logstash客户端(具有“pipelining”选项集的客户端)尚不支持“ttl”选项。
output.logstash:
hosts: ["localhost:5044", "localhost:5045"]
loadbalance: true
index: filebeat
pipelining
配置从logstash等待ACK时要异步发送到logstash的批次数。只有pipelining 在编写批次数后,输出才会变为阻塞。如果配置值为0,则禁用流水线操作。默认值为2。
proxy_url
连接到Logstash服务器时要使用的SOCKS5代理的URL。该值必须是方案为的URL socks5://。用于与Logstash通信的协议不基于HTTP,因此无法使用Web代理。
如果SOCKS5代理服务器需要客户端身份验证,则可以在URL中嵌入用户名和密码,如示例中所示。
使用代理时,主机名在代理服务器上而不是在客户端上解析。您可以通过设置proxy_use_local_resolver选项来更改此行为 。
output.logstash:
hosts: ["remote-host:5044"]
proxy_url: socks5://user:password@socks5-proxy:2233
proxy_use_local_resolver
该proxy_use_local_resolver选项确定在使用代理时是否在本地解析Logstash主机名。默认值为false,这意味着在使用代理时,代理服务器上会发生名称解析。
index
将事件写入的索引根名称。默认值为Beat名称。例如,"filebeat"生成"[filebeat-]6.2.4-YYYY.MM.DD" 索引(例如,"filebeat-6.2.4-2017.04.26")。
ssl
SSL参数的配置选项,例如Logstash连接的根CA. 有关更多信息,请参阅 指定SSL设置。要使用SSL,还必须为Logstash配置 Beats输入插件以使用SSL / TLS。
timeout
在超时之前等待Logstash服务器响应的秒数。默认值为30(秒)。
max_retries
Filebeat忽略max_retries设置并无限期重试。
bulk_max_size
单个Logstash请求中要批量处理的最大事件数。默认值为2048。
如果Beat发送单个事件,则会将事件收集到批处理中。如果Beat发布大量事件(大于指定的值bulk_max_size),则拆分批处理。
指定更大的批处理大小可以通过降低发送事件的开销来提高性能。但是,大批量大小也会增加处理时间,这可能会导致API错误,连接中断,超时发布请求,以及最终导致吞吐量降低。
设置prospectors置bulk_max_size为小于或等于0的值将禁用批次拆分。禁用拆分时,队列将决定批处理中包含的事件数。
slow_start
如果启用,则每个事务仅传输一批事件中的一部分事件。bulk_max_size如果没有遇到错误,则要发送的事件数量会增加。出错时,每个事务的事件数量再次减少。默认是false。
配置kafka输出
Kafka输出将事件发送到Apache Kafka。
配置示例
output.kafka:
# initial brokers for reading cluster metadata
hosts: ["kafka1:9092", "kafka2:9092", "kafka3:9092"]
# message topic selection + partitioning
topic: '%{[fields.log_topic]}'
partition.round_robin:
reachable_only: false
required_acks: 1
compression: gzip
max_message_bytes: 1000000
大于的事件max_message_bytes将被删除。要避免此问题,请确保Filebeat不会生成大于的事件max_message_bytes。
配置选项
enabled
的enabled配置是一个布尔设置可启用或禁止输出。如果设置为false,则禁用输出。默认值是true。
hosts
从中获取集群元数据的Kafka代理地址列表。集群元数据包含发布到的实际Kafka代理事件。
version
假设Kafka版本$ filebeat运行。默认为最早支持的稳定版本(当前版本为0.8.2.0)。
如果启用了版本0.10.0.0+,则将添加事件时间戳。
有效值之间的所有卡夫卡版本0.8.2.0和0.11.0.0。
username
用于连接Kafka的用户名。如果配置了用户名,则还必须配置密码。仅支持SASL / PLAIN。
password
连接Kafka的密码。
topic
用于制作活动的Kafka主题。该设置可以是使用任何事件字段的格式字符串。例如,您可以使用 fields配置选项添加调用log_topic该事件的自定义字段,然后设置topic为自定义字段的值:
topics
支持条件的主题选择器规则数组,基于格式字符串的字段访问和名称映射。第一个规则匹配将用于设置topic要发布的事件。如果topics缺少或没有规则匹配,topic将使用该字段。
规则设置:
topic:要使用的主题格式字符串。如果缺少使用的字段,则规则将失败。
mapping:字典映射索引名称到新名称
default:如果mapping找不到匹配项,则为默认字符串值。
when:必须成功执行当前规则的条件。
key
可选的Kafka事件密钥。如果已配置,则事件键必须是唯一的,并且可以使用格式字符串从事件中提取。
partition
Kafka输出经纪人事件分区策略。必须是一个random, round_robin或hash。默认情况下,使用hash分区程序。
random.group_events:设置在分区程序随机选择新分区之前要发布到同一分区的事件数。默认值为1表示在每个事件后随机选取新分区。
round_robin.group_events:在分区程序选择下一个分区之前,设置要发布到同一分区的事件数。默认值为1表示在每个事件之后将选择下一个分区。
hash.hash:用于计算分区哈希值的字段列表。如果未配置任何字段,key则将使用事件值。
hash.random:如果不能计算散列值或键值,则随机分配事件。
默认情况下,所有分区程序都会尝试将事件发布到所有分区。如果分区的领导者无法访问节拍,则输出可能会阻止。所有分区程序都支持设置reachable_only以覆盖此行为。如果reachable_only设置为true,则事件将仅发布到可用分区。
发布到可用分区的子集可能会增加资源使用量,因为事件可能会分布不均匀。
client_id
可配置的ClientID,用于记录,调试和审计。默认为“beats”。
worker
并发负载均衡Kafka输出工作者的数量。
codec
输出编解码器配置。如果codec缺少该部分,则事件将被json编码。有关更多信息,请参阅输出编解码器
metadata
Kafka元数据更新设置。元数据确实包含有关用于发布的代理,主题,分区和活动领导者的信息。
refresh_frequency 元数据刷新间隔。默认为10分钟。
retry.max 当群集处于领导者选举的中间时,元数据更新重试的总次数。默认值为3。
retry.backoff 领导选举期间重试之间的等待时间。默认值为250毫秒。
max_retries
Filebeat忽略max_retries设置并无限期重试。
bulk_max_size
单个Kafka请求中批量处理的最大事件数。默认值为2048。
timeout
在超时之前等待Kafka经纪人响应的秒数。默认值为30(秒)。
broker_time
代理将等待所需ACK数的最大持续时间。默认值为10秒。
channel_buffer_size
每个Kafka代理在输出管道中缓冲的消息数。默认值为256。
keep_alive
活动网络连接的保持活动期。如果为0,则禁用保持活动。默认值为0秒。
compression
设置输出压缩编解码器。必须是一个none,snappy,lz4和gzip。默认是gzip。
max_message_bytes
JSON编码消息的最大允许大小。更大的消息将被删除。默认值为1000000(字节)。该值应等于或小于经纪人的值message.max.bytes。
required_acks
经纪人需要的ACK可靠性等级。0 =无响应,1 =等待本地提交,-1 =等待所有副本提交。默认值为1。
注意:如果设置为0,Kafka不会返回任何ACK。错误时,消息可能会以静默方式丢失。
ssl
SSL参数的配置选项,例如Kafka连接的根CA. 有关更多信息,请参阅 指定SSL设置。
配置redis输出
Redis输出将事件插入Redis列表或Redis通道。此输出插件与Logstash 的Redis输入插件兼容。
配置示例:
output.redis:redis:
hosts: ["localhost"] hosts: ["localhost"]
password: "my_password"password: "my_password"
key: "filebeat"key: "filebeat"
db: 0db: 0
timeout: 5timeout: 5
兼容性
此输出适用于Redis 3.2.4。
配置选项
enabled
enabled config是一个布尔设置,用于启用或禁用输出。如果设置为false,则禁用输出。默认值是true。
hosts
要连接的Redis服务器列表。如果启用了负载平衡,则会将事件分发到列表中的服务器。如果一台服务器无法访问,则事件仅分发给可访问的服务器。您可以通过指定HOST或定义每个Redis服务器 HOST:PORT。例 如:"192.15.3.2"或"test.redis.io:12345"。如果未指定端口号,port则使用配置的值。
key
发布事件的Redis列表或通道的名称。默认为“filebeat”。
可以使用访问要发布的事件中的任何字段的格式字符串动态设置redis密钥。
此配置将使用该fields.list字段设置redis列表键。如果 fields.list缺少,fallback将被使用。
output.redis:redis:
hosts: ["localhost"] hosts: ["localhost"]
key: "%{[fields.list]:fallback}"key: "%{[fields.list]:fallback}"
keys
支持条件的键选择器配置数组,基于格式字符串的字段访问和名称映射。第一个规则匹配将用于设置key要发布的事件。如果keys缺少或没有规则匹配,key将使用该字段。规则设置:
key:键格式字符串。如果缺少格式字符串中使用的字段,则规则将失败。
mapping:字典将键值映射到新名称
default:如果mapping找不到匹配项,则为默认字符串值。
when:必须成功执行当前规则的条件。
示例keys设置:
output.redis:redis:
hosts: ["localhost"] hosts: ["localhost"]
key: "default_list"key: "default_list"
keys:keys:
- key: "info_list" # send to info_list if `message` field contains INFO - key: "info_list" # send to info_list if `message` field contains INFO
when.contains:contains:
message: "INFO" message: "INFO"
- key: "debug_list" # send to debug_list if `message` field contains DEBUG- key: "debug_list" # send to debug_list if `message` field contains DEBUG
when.contains:contains:
message: "DEBUG" message: "DEBUG"
- key: "%{[fields.list]}"- key: "%{[fields.list]}"
mapping:mapping:
"http": "frontend_list" "http": "frontend_list"
"nginx": "frontend_list""nginx": "frontend_list"
"mysql": "backend_list""mysql": "backend_list"
password
用于进行身份验证的密码。默认为无身份验证。
db
发布事件的Redis数据库编号。默认值为0。
datatype
用于发布事件的Redis数据类型。如果数据类型为list,则使用Redis RPUSH命令,并将所有事件添加到列表中,并在其下定义键key。如果使用数据类型,channel则使用Redis PUBLISH命令,这意味着所有事件都被推送到Redis的pub / sub机制。频道的名称是在其下定义的名称key。默认值为list。
codec
输出编解码器配置。如果codec缺少该部分,则事件将被json编码。
worker
为配置为向Redis发布事件的每个主机使用的工作器数。将此设置与loadbalance选项一起使用 。例如,如果您有2个主机和3个工作程序,则总共启动6个工作程序(每个主机3个)。
loadbalance
如果设置为true并且配置了多个主机或工作程序,则输出插件会将已发布的事件负载平衡到所有Redis主机上。如果设置为false,则输出插件仅将所有事件发送到一个主机(随机确定),如果当前选定的主机无法访问,则将切换到另一个主机。默认值是true。
timeout
Redis连接超时(以秒为单位)。默认值为5秒。
max_retries
Filebeat忽略max_retries设置并无限期重试。
bulk_max_size
单个Redis请求或管道中要批量处理的最大事件数。默认值为2048。
如果Beat发送单个事件,则会将事件收集到批处理中。如果Beat发布大量事件(大于指定的值 bulk_max_size),则拆分批处理。
指定更大的批处理大小可以通过降低发送事件的开销来提高性能。但是,大批量大小也会增加处理时间,这可能会导致API错误,连接中断,超时发布请求,以及最终导致吞吐量降低。
设置bulk_max_size为小于或等于0的值将禁用批次拆分。禁用拆分时,队列将决定批处理中包含的事件数。
ssl
SSL参数的配置选项,例如由SSL代理保护的Redis连接的根CA(例如stunnel)。有关更多信息,请参阅 指定SSL设置。
proxy_url
连接到Redis服务器时要使用的SOCKS5代理的URL。该值必须是方案为的URL socks5://。您无法使用Web代理,因为用于与Redis通信的协议不基于HTTP。
如果SOCKS5代理服务器需要客户端身份验证,则可以在URL中嵌入用户名和密码。
使用代理时,主机名在代理服务器上而不是在客户端上解析。您可以通过设置proxy_use_local_resolver选项来更改此行为 。
proxy_use_local_resolver
此选项确定在使用代理时是否在本地解析Redis主机名。默认值为false,这意味着代理服务器上会发生名称解析。
配置文件输出
File输出将事务转储到每个事务都是JSON格式的文件中。目前,此输出用于测试,但它可以用作Logstash的输入。
output.file:
path: "/tmp/filebeat"
filename: filebeat
#rotate_every_kb: 10000
#number_of_files: 7
#permissions: 0600
配置选项
enabled
enabled config是一个布尔设置,用于启用或禁用输出。如果设置为false,则禁用输出。默认值是true。
path
保存生成文件的目录的路径。此选项是必需的。
filename
生成的文件的名称。默认设置为Beat名称。例如,Filebeat默认生成的文件将是“filebeat”,“filebeat.1”,“filebeat.2”等。
rotate_every_kb
每个文件的最大大小(以KB为单位)。达到此大小时,将旋转文件。默认值为10240 KB。
nunber_of_files
要保存的最大文件数path。达到此数量的文件时,将删除最旧的文件,其余文件将从最后一个文件转移到第一个文件。默认值为7个文件。
permissions
用于文件创建的权限。默认值为0600。
codec
输出编解码器配置。如果codec缺少该部分,则事件将被json编码。有关更多信息,请参阅输出编解码器
配置控制台输出
Console输出将JSON格式的事件写入stdout。
output.console:
pretty: true
配置选项
pretty
如果pretty设置为true,则写入stdout的事件将被很好地格式化。默认值为false。
codec
输出编解码器配置。如果codec缺少该部分,则使用该pretty选项对事件进行json编码。有关更多信息,请参阅输出编解码器
enabled
enabled config是一个布尔设置,用于启用或禁用输出。如果设置为false,则禁用输出。默认值是true。
bulk_max_size
发布期间内部缓冲的最大事件数。默认值为2048。
指定较大的批处理大小可能会在发布期间增加一些延迟和缓冲。但是,对于控制台输出,此设置不会影响事件的发布方式。
设置bulk_max_size为小于或等于0的值将禁用批次拆分。禁用拆分时,队列将决定批处理中包含的事件数。
配置输出解码器
对于不需要特定编码的输出,可以使用编解码器配置更改编码。您可以指定json或format 编解码器。默认情况下,使用json编解码器。
json.pretty:如果pretty设置为true,则事件将被很好地格式化。默认值为false。
使用json带有漂亮打印的编解码器将事件写入控制台的示例配置:
output.console:
codec.json:
pretty: true
format.string:可配置的格式字符串,用于创建自定义格式的消息。
可配置示例,使用format编解码器将事件时间戳和消息字段打印到控制台:
output.console:
codec.format:
string: '%{[@timestamp]} %{[message]}'
负载均衡输出主机
Filebeat提供配置选项,可用于在将事件发送到多个主机时微调负载平衡。
要启用负载平衡,请指定loadbalance: true配置输出的时间。例如:
output.logstash:
hosts: ["localhost:5044", "localhost:5045"]
loadbalance: true
该loadbalance选项可用于Redis,Logstash和Elasticsearch输出。Kafka输出在内部处理负载平衡。
负载均衡器还支持每个主机多个工作线程。默认是 worker: 1。如果增加工作人员数量,将使用其他网络连接。参与负载平衡的工作者总数是number of hosts * workers。
filebeat.prospectors:
- type: log
paths:
- /var/log/*.log
output.logstash:
hosts: ["localhost:5044", "localhost:5045"]
loadbalance: true
worker: 2
在此示例中,有4个worker参与负载平衡。
指定ssl设置
您可以在配置时指定SSL选项:
支持SSL的 输出
该Kibana端点
启用ssl的示例输出配置
output.elasticsearch.hosts: ["192.168.1.42:9200"]
output.elasticsearch.ssl.certificate_authorities: ["/etc/pki/root/ca.pem"]
output.elasticsearch.ssl.certificate: "/etc/pki/client/cert.pem"
output.elasticsearch.ssl.key: "/etc/pki/client/cert.key"
另请参阅使用SSL与Logstash进行安全通信。
启用SSL的示例Kibana端点配置:
setup.kibana.host: "192.0.2.255:5601"
setup.kibana.protocol: "https"
setup.kibana.ssl.enabled: true
setup.kibana.ssl.certificate_authorities: ["/etc/pki/root/ca.pem"]
setup.kibana.ssl.certificate: "/etc/pki/client/cert.pem"
setup.kibana.ssl.key: "/etc/pki/client/cert.key"
配置选项
enabled
该enabled设置可用于通过将其设置为禁用ssl配置false。默认值为true。如果enabled设置为false或 ssl缺少部分,则禁用SSL设置。
certificate_authorities
服务器验证的根证书列表。如果certificate_authorities为空或未设置,则使用主机系统的可信证书颁发机构。
certificate: "/etc/pki/client/cert.pem"
SSL客户端身份验证证书的路径。如果未指定证书,则客户端身份验证不可用。如果服务器请求客户端身份验证,连接可能会失败 如果SSL服务器不需要客户端身份验证,则将加载证书,但服务器不会请求或使用该证书。
配置此选项后,certificate_key还需要该选项。
key: "/etc/pki/client/cert.key"
用于客户端身份验证的客户端证书密钥。如果certificate指定,则此选项是必需的。
key_passphrase
密码短语用于解密存储在配置key文件中的加密密钥。
supported_protocols
允许的SSL / TLS版本列表。如果SSL / TLS服务器决定未配置的协议版本,则在握手期间或之后将断开连接。该设置是允许的协议版本的列表: SSLv3,TLSv1用于TLS版本1.0, TLSv1.0,TLSv1.1和TLSv1.2。默认值为[TLSv1.0, TLSv1.1, TLSv1.2]。
verification_mode
此选项控制客户端是否验证服务器证书和主机名。有效值为none和full。如果verification_mode设置为none,则接受所有服务器主机名和证书。在此模式下,基于TLS的连接容易受到中间人攻击。使用此选项仅用于测试。默认是full
cipher_suites
要使用的密码套件列表。第一个条目具有最高优先级。如果省略此选项,则使用Go加密库的默认套件(推荐)。
以下密码套件可用:
RSA-RC4-128-SHA(默认禁用 - 不建议使用RC4)
RSA-3DES-CBC3-SHA
RSA-AES-128-CBC-SHA
RSA-AES-256-CBC-SHA
ECDHE-ECDSA-RC4-128-SHA(默认禁用 - 不建议使用RC4)
ECDHE-ECDSA-AES-128-CBC-SHA
ECDHE-ECDSA-AES-256-CBC-SHA
ECDHE-RSA-RC4-128-SHA(默认禁用 - 不建议使用RC4)
ECDHE-RSA-3DES-CBC3-SHA
ECDHE-RSA-AES-128-CBC-SHA
ECDHE-RSA-AES-256-CBC-SHA
ECDHE-RSA-AES-128-GCM-SHA256(仅限TLS 1.2)
ECDHE-ECDSA-AES-128-GCM-SHA256(仅限TLS 1.2)
ECDHE-RSA-AES-256-GCM-SHA384(仅限TLS 1.2)
ECDHE-ECDSA-AES-256-GCM-SHA384(仅限TLS 1.2)
以下是用于定义密码套件的首字母缩略词列表:
3DES:使用三重DES的密码套件
AES-128/256:使用带128/256密钥的AES的密码套件。
CBC:使用密码块链接作为分组密码模式的密码。
ECDHE:使用Elliptic Curve Diffie-Hellman(DH)短暂密钥交换的密码套件。
ECDSA:使用椭圆曲线数字签名算法进行身份验证的密码套件。
GCM:Galois / Counter模式用于对称密钥加密。
RC4:使用RC4的密码套件。
RSA:使用RSA的密码套件。
SHA,SHA256,SHA384:使用SHA-1,SHA-256或SHA-384的密码套件。
curve_types
ECDHE(椭圆曲线Diffie-Hellman短暂密钥交换)的曲线类型列表。
以下椭圆曲线类型可用:
P-256
P-384
P-521
renegotiation
这会配置支持哪种类型的TLS重新协商。有效的选项是never,once和freely。永远不会是默认值。
never - 禁用重新协商。
once - 允许远程服务器在每个连接请求重新协商一次。
freely - 允许远程服务器重复请求重新协商。
过滤并增强导出的数据
您的用例可能只需要Filebeat导出的数据的一部分,或者您可能需要增强导出的数据(例如,通过添加元数据)。Filebeat提供了几个用于过滤和增强导出数据的选项。
您可以将每个prospector配置为包含或排除特定行或文件。这允许您为每个探针器指定不同的过滤条件。要做到这一点,您可以使用include_lines, exclude_lines以及exclude_files 下方的选项filebeat.prospectors配置文件的部分(见 设置勘探者)。此方法的缺点是您需要为所需的每个过滤条件实施配置选项。
另一种方法(此处描述的方法)是定义处理器以配置Filebeat导出的所有数据的全局处理。
处理器
您可以在配置中定义处理器,以便在将事件发送到配置的输出之前处理事件。libbeat库提供以下处理器:
减少导出字段的数量
使用其他元数据增强事件
执行额外的处理和解码
每个处理器接收事件,将定义的操作应用于事件,并返回事件。如果定义处理器列表,则按照Filebeat配置文件中定义的顺序执行它们。
event -> processor 1 -> event1 -> processor 2 -> event2 ...
删除事件示例
以下配置将删除所有DEBUG消息。
processors:
- drop_event:
when:
regexp:
message: "^DBG:"
要删除来自某个日志文件的所有日志消息:
processors:
- drop_event:
when:
contains:
source: "test"
以上。