Filebeat提供了几种不一样的方式来启用模块:node
modules.d
编辑目录中启用模块配置filebeat.yml
文件编辑中启用模块配置例如,要在 目录中启用apache2
和mysql
配置modules.d
,请使用:mysql
./filebeat modules enable apache2 mysql
而后,当您运行Filebeat时,会加载modules.d
目录中指定的相应模块配置nginx
要查看启用和禁用模块的列表,请运行:web
./filebeat modules list
要在命令行运行Filebeat时启用特定的模块,可使用该--modules
标志。正则表达式
./filebeat -e --modules nginx,mysql,system
要启用filebeat.yml
配置文件中的特定模块,能够将条目添加到filebeat.modules
列表中。redis
filebeat.modules: - module:nginx - module:mysql - module:system
配置文件中的变量:sql
每一个模块和文件集都有变量,您能够设置这些变量来更改模块的默认行为,包括模块查找日志文件的路径。docker
- module: nginx access: var.paths: ["/var/log/nginx/access.log*"] #示例中的设置将设置访问日志文件的路径 nginx
./filebeat -M“nginx.access.var.paths = [/ var / log / nginx / access.log *]”
#在命令行设置变量时,变量名称须要包含模块和文件集名称。您能够指定多个覆盖。每一个覆盖必须以 -M
./filebeat --modules nginx -M "nginx.access.var.paths=[/var/log/nginx/access.log*]" -M "nginx.error.var.paths=[/var/log/nginx/error.log*]"#完整例子
测试配置文件是否有效:apache
./filebeat -e -c filebeat.yml -configtest -d "publish" #能够测试您的配置文件以验证结构是否有效
若是您须要在YAML文件中指定正则表达式,最好将正则表达式包装在单引号中 json
若是09
在数值字段中使用前导零(例如,)而不用单引号包装值,那么YAML解析器可能会错误地解释该值。
若是该值是有效的八进制数,则将其转换为整数。若是不是,则转换为浮点数。
Filebeat使用探勘器来定位和处理文件
能够filebeat.prospectors
在filebeat.yml
配置文件的部分 指定一个探测器列表。
filebeat.prospectors: - type: log paths: - /var/log/apache/httpd-*.log - type: log paths: - /var/log/messages - /var/log/*.log
选项配置:
max_message_size
containers
path 应该被抓取和抓取的基于全局路径的列表可使用如下模式:/var/log/*/*.log recursive_glob.enabled 启用扩展**到递归全局模式。启用此功能后,**每一个路径中的最右边将扩展为固定数量的全局模式。例如:/foo/**扩展到/foo,/foo/*,/foo/*/*。此功能默认启用,设置recursive_glob.enabled为false将其禁用 encoding 如下是W3C推荐的一些示例编码: utf-16be,utf-16be,big5,gb18030,gbk,hz-gb-2312,euc-kr,euc-jp,iso-2022-jp,shift-jis等等 exclude_lines 正则表达式的列表,以匹配您但愿Filebeat排除的行。Filebeat删除与列表中正则表达式匹配的全部行。 filebeat.prospectors: - paths: - /var/log/myapp/*.log exclude_lines: ['^DBG'] include_lines 正则表达式的列表,以匹配您但愿Filebeat包含的行。Filebeat仅导出与列表中正则表达式匹配的行。 filebeat.prospectors: - paths: - /var/log/myapp/*.log include_lines: ['^ERR', '^WARN'] exclude_files 正则表达式的列表,以匹配您但愿Filebeat忽略的文件。 exclude_files:['\ .gz $'] tags Beat包含在tags每一个发布事件的字段中的标签列表。标签能够很容易地在Kibana中选择特定的事件,或者在Logstash中应用条件过滤。这些标签将被追加到通常配置中指定的标签列表中。 filebeat.prospectors: - paths: ["/var/log/app/*.json"] tags: ["json"] fields 您能够指定的可选字段将其余信息添加到输出。例如,您能够添加可用于过滤日志数据的字段。字段能够是标量值,数组,字典或这些的任何嵌套组合。 filebeat.prospectors: - paths: ["/var/log/app/*.log"] fields: app_id: query_engine_12 fields_under_root 若是此选项设置为true,则自定义字段将做为顶级字段存储在输出文档中,而不是在fields子字典下进行分组 。若是自定义字段名称与由Filebeat添加的其余字段名称冲突,则自定义字段会覆盖其余字段。 processors 要应用于探矿者生成的数据的处理器列表。 ignore_older 若是启用此选项,Filebeat将忽略在指定时间范围以前修改的任何文件。 close_* 的close_*配置选项用于以后的某一标准或时间以关闭收割机。关闭收割机意味着关闭文件处理程序。若是在收割机关闭后文件被更新,文件将在scan_frequency通过以后再被拾取。 close_inactive 启用此选项时,Filebeat将关闭文件句柄(若是文件还没有在指定的时间内收获)。例如,若是您的日志文件每隔几秒更新一次,则能够安全地设置close_inactive为1m。若是存在具备彻底不一样更新速率的日志文件,则可使用具备不一样值的多个探测器配置。 close_renamed 启用此选项时,文件重命名时Filebeat会关闭文件处理程序。例如,在旋转文件时发生这种状况。默认状况下,采集器保持打开状态并持续读取文件,由于文件处理程序不依赖于文件名。若是close_renamed启用该选项,而且文件被重命名或移动的方式再也不与为探矿者指定的文件模式匹配,则文件将不会被再次拾取。Filebeat不会完成读取文件。 clean_removed 启用此选项后,Filebeat会在删除文件时关闭收割机。一般状况下,文件只能在指定的时间内无效后才能被删除close_inactive。可是,若是文件被提早删除,而您没有启用close_removed,Filebeat会保持打开文件以确保收割机已经完成。若是此设置致使文件因磁盘太早从磁盘中删除而未彻底读取,请禁用此选项。 close_eof 启用此选项后,Filebeat会在文件结束时当即关闭文件。当您的文件只写入一次而不是不时更新时,这很是有用。例如,当您将每一个日志事件写入新文件时,都会发生这种状况。该选项默认是禁用的。 close_timeout 该选项在输出被阻塞的状况下特别有用,这使得Filebeat即便对于从磁盘中删除的文件也保持打开的文件处理程序。设置close_timeout为5m确保文件按期关闭,以便操做系统释放它们。 clean_* 这些clean_*选项用于清理注册表文件中的状态条目。这些设置有助于减少注册表文件的大小,并能够防止潜在的inode重用问题。 clean_inactive 启用此选项后,Filebeat会在指定的非活动时间段过去后移除文件的状态。若是文件已被Filebeat忽略(文件比文件早ignore_older),则只能删除状态。该clean_inactive设置必须大于ignore_older + scan_frequency在收集文件时确保没有状态被删除。不然,该设置可能会致使Filebeat不断从新发送完整内容,由于它将clean_inactive删除探测器 仍然检测到的文件的状态。若是文件更新或再次出现,则从头开始读取文件。 clean_removed 启用此选项后,Filebeat将清除注册表中的文件(若是在最后一个已知名称下不能在磁盘上找到)。这意味着收割机完成后重命名的文件将被删除。该选项默认启用。 scan_frequency 探矿者在指定收获的路径中检查新文件的频率。例如,若是您指定一个glob /var/log/*,则使用指定的频率扫描目录中的文件 scan_frequency。指定1以尽量频繁地扫描目录,而不会致使Filebeat过于频繁地扫描。咱们不建议设置此值<1s。 harvester_buffer_sizeedit 每一个采集器在获取文件时使用的缓冲区的大小(以字节为单位)。默认是16384 max_bytes 单个日志消息能够拥有的最大字节数。以后的全部字节max_bytes被丢弃而且不被发送。此设置对于可能变大的多行日志消息特别有用。默认值是10MB(10485760)。 json 这些选项使得Filebeat可以解码构造为JSON消息的日志。Filebeat逐行处理日志,因此JSON解码只在每行有一个JSON对象时才起做用。 json.keys_under_root:true json.add_error_key:true json.message_key:log keys_under_root 默认状况下,解码后的JSON放在输出文档中的“json”键 下。若是启用此设置,则会将键复制到输出文档的顶层。默认值是false。 overwrite_keys 若是keys_under_root启用此设置,那么来自解码的JSON对象的值会覆盖Filebeat一般添加的字段(类型,源,偏移量等)以防冲突。 add_error_key 若是启用此设置,则在出现JSON解组错误或者message_key在配置中定义了a 但不能使用的状况下,Filebeat将添加“error.message”和“error.type:json”键。 message_key 一个可选的配置设置,用于指定应用行筛选和多行设置的JSON密钥。若是指定,键必须位于JSON对象的顶层,而且与键关联的值必须是字符串,不然不会发生筛选或多行聚合。 multiline 控制Filebeat如何处理跨越多行的日志消息的选项。 tail_files 若是此选项设置为true,Filebeat开始在每一个文件的末尾读取新文件,而不是开始。将此选项与日志循环结合使用时,可能会跳过新文件中的第一个日志条目。默认设置是false。 pipeline 摄取节点管道标识,用于为探测器生成的事件设置。 symlinks 该symlinks选项容许Filebeat除了常规文件以外还收集符号连接。收集符号连接时,Filebeat会打开并读取原始文件,即便它报告符号连接的路径。 backoff 退避选项指定Filebeat如何积极地搜索打开的文件以进行更新。在大多数状况下,您可使用默认值。 harvester_limit 该harvester_limit选项限制了一个探矿者并行启动的收割机的数量。这直接关系到打开的文件处理程序的最大数量。默认为harvester_limit0,这意味着没有限制。若是要采集的文件数超过操做系统的打开文件处理程序限制,则此配置颇有用。 enabled 该enabled选项可与每一个探矿者一块儿使用,以定义探矿者是否启用。默认状况下,enabled被设置为true。 msx_message_size 当使用type: udp,指定经过UDP接收的消息的最大大小。默认值是10240。
指定多个探矿器
当您须要从多个文件中收集行时,能够简单地配置一个探测器,并指定多个路径来为每一个文件启动一个收集器。可是,若是你想申请额外的特定探矿(如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
config_dir
filebeat.config_dir: path/to/configs
包含其余探测器配置文件的目录的完整路径。每一个配置文件必须以.yml
。即便只处理文件的探测器部分,每一个配置文件也必须指定完整的Filebeat配置层次结构。
shutdown_timeout
filebeat.shutdown_timeout:5s
您能够配置该shutdown_timeout
选项以指定Filebeat在关闭以前等待发布者完成发送事件的最长时间。若是全部事件都被确认以前shutdown_timeout
,Filebeat将关闭。
普通配置:
name: "my-shipper" tags: ["service-X", "web-tier"]
name:Beat的名字。若是此选项为空,则使用服务器。该名称被包括在每一个已发布的交易中的字段中。您可使用该名称对由单个节拍发送的全部交易进行分组。
tags:Beat包含在每一个已发布事务的字段中的标签列表。经过标签能够很容易地将服务器按不一样的逻辑属性分组 例如,若是您有一组Web服务器,
则能够将“webservers”标记添加到每一个服务器上的Beat,而后在Kibana Web界面中使用过滤器和查询来获取整个服务器组的可视化。
tags: ["my-service", "hardware", "test"]hostnamebeat.nametags
fields
fields: {project: "myproject", instance-id: "574734885120952459"} 您能够指定的可选字段将其余信息添加到输出。字段能够是标量值,数组,字典或这些的任何嵌套组合。默认状况下,您在此处指定的字段将被分组在fields输出文档的子字典下。
要将自定义字段存储为顶级字段,请将该fields_under_root选项设置为true。
fields_under_root
若是此选项设置为true,则自定义字段将做为顶级字段存储在输出文档中,而不是在子字典下进行分组。若是自定义字段名称与其余字段名称冲突,则自定义字段将覆盖其余字段。fields
fields_under_root: true fields: instance_id: i-10a64379 region: us-east-1
探矿者配置
对于探矿者配置,您path能够在文件的filebeat.config.prospectors部分指定选项 filebeat.yml。 filebeat.config.prospectors: enabled: true path: configs/*.yml - type: log paths: - /var/log/mysql.log scan_frequency: 10s - type: log paths: - /var/log/apache.log scan_frequency: 5s
两个正在运行的探矿者没有定义重叠的文件路径是相当重要的。若是多个探矿者同时收获同一个文件,可能会致使意想不到的行为。
模块配置
filebeat.config.modules: enabled: true path: ${path.config}/modules.d/*.yml
- module:apache2 access: enabled:true var.paths:[/var/log /apache2 / access.log*] error: enabled:true var.paths:[/var/log/apache2/error.log*]
对于模块配置,您path能够在文件filebeat.config.modules部分指定选项 filebeat.yml。默认状况下,Filebeat加载modules.d目录中启用的模块配置