热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ELKfilebeat详解

Filebeat提供了几种不同的方式来启用模块:在modules.d编辑目录中启用模块配置运行Filebeat 编辑时启用模块在filebeat.yml文件编辑中启用模块配置例如,

Filebeat提供了几种不同的方式来启用模块:



  • modules.d编辑目录中启用模块配置

  • 运行Filebeat 编辑时启用模块

  • filebeat.yml文件编辑中启用模块配置

例如,要 目录中启用apache2mysql配置modules.d,请使用:

./filebeat modules enable apache2 mysql

然后,当您运行Filebeat时,会加载modules.d目录中指定的相应模块配置

要查看启用和禁用模块的列表,请运行:

./filebeat modules list

在命令行运行Filebeat时启用特定的模块,可以使用该--modules标志。

./filebeat -e --modules nginx,mysql,system

要启用filebeat.yml配置文件中的特定模块,可以将条目添加到filebeat.modules列表中。

filebeat.modules:
- module:nginx
- module:mysql
- module:system

配置文件中的变量:

每个模块和文件集都有变量,您可以设置这些变量来更改模块的默认行为,包括模块查找日志文件的路径。

- 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*]"#完整例子

测试配置文件是否有效:

./filebeat -e -c filebeat.yml -configtest -d "publish" #可以测试您的配置文件以验证结构是否有效

  如果您需要在YAML文件中指定正则表达式,***将正则表达式包装在单引号中  

  如果09在数值字段中使用前导零(例如,)而不用单引号包装值,那么YAML解析器可能会错误地解释该值。

  如果该值是有效的八进制数,则将其转换为整数。如果不是,则转换为浮点数。

Filebeat使用探勘器来定位和处理文件

可以filebeat.prospectorsfilebeat.yml配置文件部分 指定一个探测器列表

filebeat.prospectors:
- type: log
paths:
- /var/log/apache/httpd-*.log
- type: log
paths:
- /var/log/messages
- /var/log/*.log

选项配置:



  • log:读取日志文件的每一行(默认)。

  • stdin:读入标准

  • redis:从redis中读取慢日志条目(实验性)。


  • udp:通过UDP读取事件。 max_message_size


  • docker:从Docker中读取日志。 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。

指定多个探矿器

当您需要从多个文件中收集行时,可以简单地配置一个探测器,并指定多个路径来为每个文件启动一个收集器。但是,如果你想申请额外的特定探矿(如fieldsinclude_linesexclude_linesmultiline,等),以从特定文件中获取的线,你需要在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的名字。如果此选项为空,hostname则使用服务器。该名称被包括beat.name在每个已发布的交易中的字段中。您可以使用该名称对由单个节拍发送的所有交易进行分组。
tags:Beat包含在tags每个已发布事务字段中的标签列表通过标签可以很容易地将服务器按不同的逻辑属性分组 例如,如果您有一组Web服务器,
  则可以将“webservers”标记添加到每个服务器上的Beat,然后在Kibana Web界面中使用过滤器和查询来获取整个服务器组的可视化。
  tags: ["my-service", "hardware", "test"]

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目录中启用的模块配置

 



推荐阅读
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • Android JSON基础,音视频开发进阶指南目录
    Array里面的对象数据是有序的,json字符串最外层是方括号的,方括号:[]解析jsonArray代码try{json字符串最外层是 ... [详细]
  • 本文介绍了一个React Native新手在尝试将数据发布到服务器时遇到的问题,以及他的React Native代码和服务器端代码。他使用fetch方法将数据发送到服务器,但无法在服务器端读取/获取发布的数据。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • 单点登录原理及实现方案详解
    本文详细介绍了单点登录的原理及实现方案,其中包括共享Session的方式,以及基于Redis的Session共享方案。同时,还分享了作者在应用环境中所遇到的问题和经验,希望对读者有所帮助。 ... [详细]
  • 本文讨论了Kotlin中扩展函数的一些惯用用法以及其合理性。作者认为在某些情况下,定义扩展函数没有意义,但官方的编码约定支持这种方式。文章还介绍了在类之外定义扩展函数的具体用法,并讨论了避免使用扩展函数的边缘情况。作者提出了对于扩展函数的合理性的质疑,并给出了自己的反驳。最后,文章强调了在编写Kotlin代码时可以自由地使用扩展函数的重要性。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • React项目中运用React技巧解决实际问题的总结
    本文总结了在React项目中如何运用React技巧解决一些实际问题,包括取消请求和页面卸载的关联,利用useEffect和AbortController等技术实现请求的取消。文章中的代码是简化后的例子,但思想是相通的。 ... [详细]
author-avatar
迷路
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有