作用:收集应用服务器上各种各样的日志
一、初始部署及简单使用
1.安装filebeat包
2.测试运行(配置systemctl文件,让其可以唤起filebeat程序)
3.配置输入输出:(filebeat主配置文件-----------------/usr/local/filebeat/filebeat.yml )
filebeat.inputs: #输入
- type: log
enabled: true
paths:
- /var/log/*.log
# 其他路径...
output.logstash: #输出
hosts: ["localhost:5044"]
# 其他Logstash配置...
filebeat只允许输出一个方向
4.执行
(执行) 程序自身 (指定) 程序的配置文件 (设置类型为error)
/usr/local/filebeat/filebeat -c /usr/local/filebeat/filebeat.yml -e
(-c指定文件位置,-e是--log.level=error
的简写,用于设置Filebeat的日志级别为error
,这意味着只有在遇到错误时,Filebeat才会在控制台或日志文件中输出信息)
#/usr/local/filebeat/filebeat 是可执行文件(绿色),代表Filebeat程序本身
#执行后将抓取配置里指定路径里的日志文件变化
日志变化:
filebeat抓取到的变化:
二、模块
1.日志收集模块-----------------------------------在 /usr/local/filebeat/filebeat.yml 主配置里
#filebeat配置
filebeat.inputs:
- type: log #这指定了输入类型为日志文件
enabled: true #表示该输入是启用的,Filebeat会收集匹配的日志文件
paths:
- /tmp/*.log #指定的日志收集路径(指定了Filebeat应该监视哪些路径以收集日志)
2.示例-------- nginx模块
- /usr/local/filebeat/filebeat.yml是Filebeat的主配置文件(全局配置),包含了Filebeat运行所需的全局配置以 及日志收集的具体设置。它定义了Filebeat的基本行为,如日志数据的输入源、输出目的地、日志的过滤和处理规则等。
- /usr/local/filebeat/modules.d/nginx.yml是Filebeat的模块配置文件之一,专门用于配置Nginx日志的收集。Filebeat提供了许多预定义的模块,这些模块包含了针对特定应用程序(如Nginx、MySQL、Apache等)的日志收集逻辑。使用这些模块可以简化日志收集的配置过程,并确保日志数据被正确地解析和处理,modules.d/nginx.yml 中的配置将具有更高的优先级,模块配置文件中的设置将覆盖主配置文件中的相应设置。
/usr/local/filebeat/modules.d/-------------------------(该目录下有filebeat的各个模块配置)
固定模块:
开启方法: .disabled 默认为关闭状态, 将后缀删除即为开启状态
或 /usr/local/filebeat/filebeat -c /usr/local/filebeat/filebeat.yml modules enable nginx
(执行程序本身) (指定执行的配置文件) (开启模块)
若使用非默认路径(添加var.paths指定自定义日志路径)
- module: nginx
# Access logs
access:
enabled: true
var.paths: # var.paths 是追加路径(不会覆盖默认路径,如果模块自带默认路
# 径,结果则会在两个路径里收集日志)
- "/var/log/access.log"
- "/var/log/error.log"
#var.pants: ["/var/log/access.log","/var/log/error.log"]
#(var.paths 的另一种写法)
#输出(用于 filebeat 把收集到的日志推送到某个接收的系统中)
output.console:
pretty: true
# console 终端屏幕
# elasticsearch 存放日志,并提供查询
# logstash 进一步堆日志数据进行处理
# kafka 消息队列
如何在filebeat.yml
中启用nginx模块的步骤:
-
打开
filebeat.yml
配置文件,该文件通常位于/usr/local/filebeat/
目录下,但具体位置可能因你的安装方式和操作系统而异。 -
在配置文件中找到
filebeat.modules
部分。如果这部分不存在,你可以添加它。这个部分用于定义要启用的模块及其配置。 -
在
filebeat.modules
下,添加一个条目来启用nginx模块。这通常看起来像这样:filebeat.modules: - module: nginx access: enabled: true var.paths: ["/path/to/your/nginx/access.log*"] error: enabled: true var.paths: ["/path/to/your/nginx/error.log*"]
-
access
和error
是nginx模块的两个子模块,分别用于收集访问日志和错误日志。enabled: true
表示启用这些子模块,而var.paths
则指定了日志文件的位置。你需要将/path/to/your/nginx/access.log*
和/path/to/your/nginx/error.log*
替换为你的nginx日志文件的实际路径。 -
保存并关闭
filebeat.yml
文件。 -
重启Filebeat以使更改生效。如果你正在使用systemd来管理服务,可以使用以下命令:
systemctl restart filebeat #root用户 sudo systemctl restart filebeat #非root用户
或者,如果你不是通过systemd来管理服务的,你可能需要找到适合你安装方式的重启命令。
-
验证nginx模块的日志是否正在被收集。你可以检查你的输出目标(如Elasticsearch、Logstash、Kafka等)来查看nginx日志是否已经被成功接收。
三、重读日志文件
若出现以上错误,请删除安装目录中的data文件夹
四、过滤和增强数据(扩展)
1.去重日志中的某些行-----------------------------------------------------配置位置在 filebeat.yml 文件中
删除所有以 DBG:开头的行
proccessors:
- drop_event:
when:
regexp:
message: "^DBG:" # message 为自定义字段
2.向输出的数据中添加某些自定义字段
processors:
- add_fields: # 追加字段
target: project # 要添加的自定义字段key名称 # target:指定了添加字段的目标对象或层级
fields:
name: myproject
id: '574734885120952459'
3. 从事件中删除某些字段
processors:
- drop_fields: #丢弃字段
fields: ["field1", "field2”, ...]
ignore_missing: false
#这是一个布尔值选项,用于指定当尝试移除的字段在数据中不存在时,处理器是否应该忽略这种情况并继续执
#行,或者是否应该抛出错误或警告。
以上配置,将删除字段:field1和 field2
ignore_missing 的值为 false 表示,字段名不存在则会返回错误。为 true 不会返回错误
注: 事件中的 “@timestamp 和 type 字段是无法删除的。