filebeat安装以及使用
Filebeat是本地文件的日志数据采集器。作为服务器上的代理安装,Filebeat监视日志目录或特定日志文件,并将它们转发给Elasticsearch、Logstash、kafka 等,可以使用Filebeat 收集各种日志,之后发送到指定的目标系统上,但是同一时间只能配置一个输出目标。filebeat核心组件查找器(Prospector)是Filebeat 7.x 及更早版本中的一个概念,用于
目录
filebeat介绍:
Filebeat是本地文件的日志数据采集器。 作为服务器上的代理安装,Filebeat监视日志目录或特定日志文件,并将它们转发给Elasticsearch、Logstash、kafka 等,可以使用 Filebeat 收集各种日志,之后发送到指定的目标系统上,但是同一时间只能配置一个输出目标。
filebeat核心组件
查找器(Prospector)
是Filebeat 7.x 及更早版本中的一个概念,用于定义和管理日志数据的收集。Prospector 是配置输入(Input)的关键部分,负责定义要监控的日志文件路径、日志格式、和如何处理日志数据等内容。
在 Filebeat 7.0 版本之后,Prospector 的概念被简化为 Input,但其核心功能和配置方式依然保留。负责读取单个文件的内容。读取每个文件,并将内容发送到 the output,每个文件启动一个harvester, harvester 负责打开和关闭文件,这意味着在运行时文件描述符保持打开状态,如果文件在读取时被删除,Filebeat将继续读取文件
输入模块(Input)
File Input: 这是 Filebeat 最常用的输入模块,用于监控和读取本地文件系统中的日志文件。Filebeat 支持逐行读取文件内容,并能够自动处理文件轮转(log rotation)。
其他输入类型: 除了文件输入,Filebeat 还支持其他输入类型,如标准输入(stdin)、系统日志(syslog)、TCP/UDP、Redis、Kafka 等。
事件处理器(Event Processor)
Processors: 事件处理器允许对采集到的日志数据进行处理和增强,例如添加、修改、删除字段,或者进行条件过滤等。常用的处理器包括 add_fields、drop_fields、rename 等。
Modules: Filebeat 模块化功能提供了针对特定日志类型的预配置解析器和处理器。每个模块(如 NGINX、Apache、MySQL 等)都包含了针对这些服务的日志解析和可视化模板。
注册文件(Registry File)
Filebeat 使用注册文件来记录已经读取的文件及其位置(偏移量)。这个文件通常位于本地磁盘,确保 Filebeat 在重启或文件轮转时,能够从上次读取的位置继续处理日志文件。
Harvester
Harvester 是 Filebeat 中的一个轻量级组件,用于读取和处理每一个被oss-cn-beijing监控的日志文件。对于每一个新发现的文件,Filebeat 会启动一个 Harvester 实例,逐行读取文件内容并将其转换为事件。
Spooler
Spooler 负责在事件处理完后将其进行批量化处理。它可以对多个事件进行聚合,形成一个批次,减少网络传输的频率和资源消耗。
发布模块(Output)
Elasticsearch Output: Filebeat 可以将日志数据直接发送到 Elasticsearch,用于进一步的存储、分析和可视化。
Logstash Output: Filebeat 也可以将日志数据发送到 Logstash,以利用 Logstash 的强大处理和过滤能力。
其他输出类型: Filebeat 支持多种输出方式,如 Kafka、Redis、Elasticsearch Service 等。
背压机制(Backpressure Handling)
Filebeat 具备背压处理能力,即在输出目标(如 Elasticsearch、Logstash)处理能力不足或网络延迟较大时,Filebeat 会自动调节数据发送速度,以防止系统过载。
安全组件
Filebeat 支持通过 SSL/TLS 加密与输出目标(如 Elasticsearch 或 Logstash)之间的通信,确保日志数据在传输过程中不被窃听或篡改。
支持使用认证机制(如用户名/密码,API Key)来确保只有授权的客户端才能发送日志数据。
这些核心组件共同协作,使得 Filebeat 成为一个高效、可靠的日志收集工具,特别适合在分布式系统中进行大规模的日志采集和传输。
filebeat工作原理
-
日志输入(Input)
-
文件监控: Filebeat 通过配置的输入模块监控指定的日志文件或目录。当新日志写入文件时,Filebeat 会实时读取这些日志,并将每一行日志记录作为一个事件。
-
支持多种输入类型: Filebeat 支持多种输入类型,除了文件(log)外,还包括标准输入(stdin)、系统日志(syslog)、TCP/UDP 端口等。
-
日志收集器(Harvester)
-
Harvester 作用: 当 Filebeat 发现新的日志文件时,会为每个文件启动一个 Harvester 实例。Harvester 负责逐行读取文件的内容,并生成事件(event)。每个 Harvester 实例独立运行,确保可以同时处理多个文件。
-
文件状态追踪: Harvester 记录每个文件的读取位置(偏移量),以便在重启或日志文件轮转时能够继续从之前的位置读取数据。
-
事件处理(Event Processing)
-
Processors: Filebeat 提供了多种内置的处理器(processors),用于对采集到的事件进行处理或增强。例如,可以添加或删除字段、重命名字段、对日志进行过滤等。
-
多行日志处理: 对于那些单条日志记录可能跨多行的情况(如 Java 堆栈跟踪),Filebeat 提供多行处理功能,能够将多行日志合并为一个事件。
-
事件传输(Spooling and Output)
-
Spooler: Filebeat 将采集到的事件缓存在内存中,等待批量发送到输出目标。这个过程称为 Spooling。Spooling 可以减少网络请求的频率,提升效率。
-
输出模块(Output): Filebeat 支持多种输出目标,如 Elasticsearch、Logstash、Kafka、Redis 等。用户可以配置输出模块来指定事件的目的地。
-
负载平衡和背压机制: Filebeat 支持在多个输出目标之间进行负载平衡。当输出目标出现拥塞或不可用时,Filebeat 还具有背压机制,自动调节发送速度,避免系统过载。
-
状态管理(Registry File)
-
注册文件(Registry File): Filebeat 使用注册文件来记录已读取文件的状态信息(如文件路径、inode、偏移量等)。这确保了 Filebeat 即使在重启或系统故障后,也能从正确的位置继续读取日志数据。
-
状态文件的更新: 注册文件会定期更新,反映出 Filebeat 对文件的最新处理进度。这确保了数据的一致性和防止日志数据丢失。
-
自动化与模块化(Automation and Modules)
-
模块化支持: Filebeat 提供预配置的模块来简化对常见服务(如 NGINX、Apache、MySQL 等)的日志处理。这些模块包含了特定服务的日志解析规则、处理器和输出配置。
-
自动发现(Autodiscover): Filebeat 支持自动发现容器和服务,特别适用于动态变化的环境(如 Kubernetes)。它能够根据容器标签或服务发现机制自动启动和配置 Harvester。
-
安全性
-
数据加密: Filebeat 支持通过 SSL/TLS 加密与输出目标之间的通信,确保传输中的数据安全。
-
身份认证: Filebeat 支持使用用户名/密码或 API Key 进行身份认证,确保只有授权的客户端才能发送数据。
-
监控与日志记录(Monitoring and Logging)
-
内部监控: Filebeat 提供监控接口,可以与 Elasticsearch 或 Kibana 集成,实时监控 Filebeat 的运行状态和性能指标。
-
日志记录: Filebeat 自身也生成日志,帮助用户排查问题和优化配置。
总结:
专业版
Filebeat 的工作流程大致如下:
-
监控日志文件 →
-
读取和处理日志内容 →
-
生成事件 →
-
将事件缓存在内存中 →
-
批量发送到指定输出 →
-
更新注册文件,记录处理状态
通过这一系列步骤,Filebeat 实现了高效、可靠的日志收集和传输,成为分布式系统中不可或缺的日志管理工具。
简约版
Filebeat 干活儿的流程,说白了大概是这么几步:
-
先盯着日志文件 👀这是第一步,也是最重要的一步。Filebeat 会像个小管家一样,时刻帮你盯着你指定的那些日志文件,看看有没有新内容写进来。通过【输入模块(Harvester)】
每个日志文件都有专门的Harvester盯着,负责实时读取新内容
-
发现有新内容,就读出来一旦日志文件有变化(比如服务器又产生了新日志),它立马就把新增加的那几行内容读取出来。 📖 读取新内容 → 【Harvester(收割器)】
-
把读到的内容打包成“事件”光读出来不行,还得整理一下。Filebeat 会把每一条日志记录打包成一个标准的“事件”格式,这样后面处理起来就方便了。📦 打包成“事件” → 【Publisher(发布器)】
-
先在自己肚子里存一下打包好的“事件”不会立刻发走,Filebeat 会先把它们放在自己的内存(缓存)里攒一攒。这么做主要是为了提高效率,好比攒一波快递一起发,比一个个发要快。
💾 在肚子里存一下 → 【Spooler(缓冲池)/内存队列】
-
攒够一波,就统一发出去等攒到一定数量,或者过了一小段时间,Filebeat 就会把内存里这批“事件”打包,一次性发送到你指定的地方,比如 Elasticsearch 或者 Logstash。🚚 统一发出去 → 【Output(输出模块)】
-
最后,记个小本本:活儿干到哪儿了 📝这是收尾的关键一步!每发走一批数据,Filebeat 都会在一个专门的“注册文件”里做个记号,记录下刚才最后处理到日志文件的哪个位置了。这样万一它重启了,也能从这个记号接着干,不会漏掉数据或者重复发送。📝 记小本本 → 【Registry(注册表)】
专门的Registry模块负责记录每个文件的读取位置,存在
data/registry文件里
简单总结一下就是:盯着日志 → 读到内容 → 打包成事 → 内存暂存 → 批量发送 → 记录进度。整个流程就是这样一环扣一环,确保你的日志数据能稳定、不丢地收集起来。
filebeat安装:
官方文档地址(rpm安装)
https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-installation-configuration.htmlrpm格式
# curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.15.0-x86_64.rpm
# rpm -ivh filebeat-8.15.0-x86_64.rpm二进制安装
# wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.15.0-linux- x86_64.tar.gz
# tar xzvf filebeat-8.15.0-linux-x86_64.tar.gz -C /usr/local/
# mv /usr/local/filebeat-8.15.0-linux-x86_64 /usr/local/filebeat
[root@filebeat ~]# wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.15.0-linux-x86_64.tar.gz
[root@filebeat ~]# tar xzvf filebeat-8.15.0-linux-x86_64.tar.gz -C /usr/local/
[root@filebeat ~]# cd /usr/local/
[root@filebeat local]# ls
bin etc filebeat-8.15.0-linux-x86_64 games include lib lib64 libexec sbin share src
[root@filebeat local]# mv /usr/local/filebeat-8.15.0-linux-x86_64 /usr/local/filebeat
Filebeat启动管理(rpm安装方式无需查看此小节)
1.前台运行
采用前台运行的方式查看Filebeat获取的日志结果
2.后台运行
使用nohup方式启动Filebeat到后台,日志结果可查看nohup.out文件
使用systemd管理的后台方式启动Filebeat进程不能查看输出日志,测试阶段勿用
配置systemd方式的Filebeat启动管理文件
vim /usr/lib/systemd/system/filebeat.service
[Unit]
Description=Filebeat sends log files to Logstash or directly to Elasticsearch.
Wants=network-online.target
After=network-online.target[Service]
ExecStart=/usr/local/filebeat/filebeat -c /usr/local/filebeat/filebeat.yml
Restart=always[Install]
WantedBy=multi-user.target
# vim /usr/lib/systemd/system/filebeat.service
[Unit]
Description=Filebeat sends log files to Logstash or directly to Elasticsearch.
Wants=network-online.target
After=network-online.target
[Service]
ExecStart=/usr/local/filebeat/filebeat -c /usr/local/filebeat/filebeat.yml
Restart=always
[Install]
WantedBy=multi-user.target
# systemctl daemon-reload #下载
# systemctl start filebeat #启动
准备测试数据
# vim /tmp/access.log
123.127.39.50 - - [04/Mar/2021:10:50:28 +0800] "GET /logo.jpg HTTP/1.1" 200 14137 "http://81.68.233.173/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.192 Safari/537.36" "-"
# vim /tmp/access.log
123.127.39.50 - - [04/Mar/2021:10:50:28 +0800] "GET /logo.jpg HTTP/1.1" 200 14137 "http://81.68.233.173/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.192 Safari/537.36" "-"
配置Filebeat 的输入和输出(修改配置文件)
# vim /usr/local/filebeat/filebeat.yml(二进制)
# vim /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: filestream(旧版本为log,此处无需改动)
enabled: true #改
paths:
- /tmp/*.log #改 指定需要收集日志的路径,支持通配符可以写多个
filebeat.config.modules: # 内置的收集日志的模块配置文件的存放路径
path: ${path.config}/modules.d/*.yml
reload.enabled: false # 当模块的配置文件有更新时,此程序是否要自动加载,false不加载,true 加载
setup.template.settings:
index.number_of_shards: 1
# ========================== Outputs ===================================
output.console: #添加 输出到终端即屏幕上
pretty: true
# ---------------------------- Elasticsearch Output ----------------------------
#注意此处的es output需要全部注释掉,因filebeat的输出目标只能设置1个# 输出到 logstash
#output.logstash:
# logstash 的 IP和端口
#hosts: ["172.26.139.148:5044"]
processors:
- add_host_metadata: # 添加此主机的源数据信息到输出数据中,比如 IP MAC OS 等信息
when.not.contains.tags: forwarded
# vim /usr/local/filebeat/filebeat.yml(二进制)
# vim /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: filestream(旧版本为log,此处无需改动)
enabled: true #改
paths:
- /tmp/*.log #改 指定需要收集日志的路径,支持通配符可以写多个
filebeat.config.modules: # 内置的收集日志的模块配置文件的存放路径
path: ${path.config}/modules.d/*.yml
reload.enabled: false # 当模块的配置文件有更新时,此程序是否要自动加载,false不加载,true 加载
setup.template.settings:
index.number_of_shards: 1
# ================================== Outputs ===================================
output.console: #添加 输出到终端即屏幕上
pretty: true
# ---------------------------- Elasticsearch Output ----------------------------
#注意此处的es output需要全部注释掉,因filebeat的输出目标只能设置1个
# 输出到 logstash
#output.logstash:
# logstash 的 IP和端口
#hosts: ["172.26.139.148:5044"]
processors:
- add_host_metadata: # 添加此主机的源数据信息到输出数据中,比如 IP MAC OS 等信息
when.not.contains.tags: forwarded
注意:output需要顶格
Elasticsearch Output里面的全部要注释

运行观察输出
运行:
/usr/local/filebeat/filebeat
[root@bogon filebeat]# /usr/local/filebeat/filebeat
{
"@timestamp": "2025-11-06T11:41:40.274Z",
"@metadata": {
"beat": "filebeat",
"type": "_doc",
"version": "8.15.0"
},
"log": {
"offset": 0,
"file": {
"path": "/tmp/access.log",
"device_id": "64768",
"inode": "8389646"
}
},
"message": "123.127.39.50 - - [04/Mar/2021:10:50:28 +0800] \"GET /logo.jpg HTTP/1.1\" 200 14137 \"http://81.68.233.173/\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.192 Safari/537.36\" \"-\"",
"input": {
"type": "filestream"
},
"agent": {
"version": "8.15.0",
"ephemeral_id": "f5276b9a-cacb-4b96-b034-fb5b7b5d640d",
"id": "a6757b13-db2d-46f1-9bfd-9f9b398da1f3",
"name": "filebeat",
"type": "filebeat"
},
"ecs": {
"version": "8.0.0"
},
"host": {
"os": {
"name": "CentOS Stream",
"kernel": "5.14.0-105.el9.x86_64",
"type": "linux",
"platform": "centos",
"version": "9",
"family": "redhat"
},
"id": "cf5ece90291f44d88d98bca79de279c2",
"containerized": false,
"name": "filebeat",
"ip": [
"192.168.9.147",
"fe80::20c:29ff:fea0:47b8"
],
"mac": [
"00-0C-29-A0-47-B8"
],
"hostname": "filebeat",
"architecture": "x86_64"
}
}
接下来更新一下日志,我们再来观察一下
[root@filebeat tmp]# cat access.log
123.127.39.50 - - [04/Mar/2021:10:50:28 +0800] "GET /logo.jpg HTTP/1.1" 200 14137 "http://81.68.233.173/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.192 Safari/537.36" "-"
123.127.39.50 - - [11/Mar/2025:10:50:28 +0800] "GET /logo.jpg HTTP/1.1" 200 14137 "http://81.68.233.173/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.192 Safari/537.36" "-"
[root@filebeat tmp]#
下面就是更新的内容
[root@bogon filebeat]# /usr/local/filebeat/filebeat
{
"@timestamp": "2025-11-06T11:41:40.274Z",
"@metadata": {
"beat": "filebeat",
"type": "_doc",
"version": "8.15.0"
},
"log": {
"offset": 0,
"file": {
"path": "/tmp/access.log",
"device_id": "64768",
"inode": "8389646"
}
},
"message": "123.127.39.50 - - [04/Mar/2021:10:50:28 +0800] \"GET /logo.jpg HTTP/1.1\" 200 14137 \"http://81.68.233.173/\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.192 Safari/537.36\" \"-\"",
"input": {
"type": "filestream"
},
"agent": {
"version": "8.15.0",
"ephemeral_id": "f5276b9a-cacb-4b96-b034-fb5b7b5d640d",
"id": "a6757b13-db2d-46f1-9bfd-9f9b398da1f3",
"name": "filebeat",
"type": "filebeat"
},
"ecs": {
"version": "8.0.0"
},
"host": {
"os": {
"name": "CentOS Stream",
"kernel": "5.14.0-105.el9.x86_64",
"type": "linux",
"platform": "centos",
"version": "9",
"family": "redhat"
},
"id": "cf5ece90291f44d88d98bca79de279c2",
"containerized": false,
"name": "filebeat",
"ip": [
"192.168.9.147",
"fe80::20c:29ff:fea0:47b8"
],
"mac": [
"00-0C-29-A0-47-B8"
],
"hostname": "filebeat",
"architecture": "x86_64"
}
}
{
"@timestamp": "2025-11-06T11:46:51.312Z",
"@metadata": {
"beat": "filebeat",
"type": "_doc",
"version": "8.15.0"
},
"message": "23.127.39.50 - - [11/Mar/2025:10:50:28 +0800] \"GET /logo.jpg HTTP/1.1\" 200 14137 \"http://81.68.233.173/\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.192 Safari/537.36\" \"-\"",
"input": {
"type": "filestream"
},
"ecs": {
"version": "8.0.0"
},
"host": {
"name": "filebeat",
"architecture": "x86_64",
"os": {
"name": "CentOS Stream",
"kernel": "5.14.0-105.el9.x86_64",
"type": "linux",
"platform": "centos",
"version": "9",
"family": "redhat"
},
"id": "cf5ece90291f44d88d98bca79de279c2",
"containerized": false,
"ip": [
"192.168.9.147",
"fe80::20c:29ff:fea0:47b8"
],
"mac": [
"00-0C-29-A0-47-B8"
],
"hostname": "filebeat"
},
"agent": {
"version": "8.15.0",
"ephemeral_id": "f5276b9a-cacb-4b96-b034-fb5b7b5d640d",
"id": "a6757b13-db2d-46f1-9bfd-9f9b398da1f3",
"name": "filebeat",
"type": "filebeat"
},
"log": {
"offset": 235,
"file": {
"device_id": "64768",
"inode": "8389646",
"path": "/tmp/access.log"
}
}
}
专用日志搜集模块
查看可启用的模块列表
[root@filebeat filebeat]# /usr/local/filebeat/filebeat modules list
Enabled:
Disabled:
activemq
apache
auditd
aws
awsfargate
azure
cef
checkpoint
cisco
coredns
crowdstrike
cyberarkpas
elasticsearch
envoyproxy
fortinet
gcp
google_workspace
haproxy
ibmmq
icinga
iis
iptables
juniper
kafka
kibana
logstash
microsoft
misp
mongodb
mssql
mysql
mysqlenterprise
nats
netflow
nginx
o365
okta
oracle
osquery
panw
pensando
postgresql
rabbitmq
redis
salesforce
santa
snyk
sophos
suricata
system
threatintel
traefik
zeek
zookeeper
zoom
或者是
第二种方法可以更直接的查看有哪些模块没有打开
[root@filebeat filebeat]# cd modules.d
[root@filebeat modules.d]# ls
activemq.yml.disabled fortinet.yml.disabled mongodb.yml.disabled rabbitmq.yml.disabled
apache.yml.disabled gcp.yml.disabled mssql.yml.disabled redis.yml.disabled
auditd.yml.disabled google_workspace.yml.disabled mysqlenterprise.yml.disabled salesforce.yml.disabled
awsfargate.yml.disabled haproxy.yml.disabled mysql.yml.disabled santa.yml.disabled
aws.yml.disabled ibmmq.yml.disabled nats.yml.disabled snyk.yml.disabled
azure.yml.disabled icinga.yml.disabled netflow.yml.disabled sophos.yml.disabled
cef.yml.disabled iis.yml.disabled nginx.yml.disabled suricata.yml.disabled
checkpoint.yml.disabled iptables.yml.disabled o365.yml.disabled system.yml.disabled
cisco.yml.disabled juniper.yml.disabled okta.yml.disabled threatintel.yml.disabled
coredns.yml.disabled kafka.yml.disabled oracle.yml.disabled traefik.yml.disabled
crowdstrike.yml.disabled kibana.yml.disabled osquery.yml.disabled zeek.yml.disabled
cyberarkpas.yml.disabled logstash.yml.disabled panw.yml.disabled zookeeper.yml.disabled
elasticsearch.yml.disabled microsoft.yml.disabled pensando.yml.disabled zoom.yml.disabled
envoyproxy.yml.disabled misp.yml.disabled postgresql.yml.disabled
模块配置文件存储位置
# pwd (二进制方式)
/usr/local/filebeat/modules.d
# pwd
/etc/filebeat/modules.d
[root@filebeat modules.d]# ls
activemq.yml.disabled f5.yml.disabled misp.yml.disabled
...
...
禁用模块
# /usr/local/filebeat/filebeat modules disable 模块名
启用模块
# /usr/local/filebeat/filebeat modules enable 模块名
比如:
# ./filebeat modules enable nginx
Enabled nginx
我们再观察一下
[root@filebeat filebeat]# ./filebeat modules enable nginx
Enabled nginx
[root@filebeat filebeat]# /usr/local/filebeat/filebeat modules list
Enabled:
nginx
Disabled:
activemq
apache
auditd
aws
awsfargate
azure
cef
checkpoint
cisco
coredns
crowdstrike
cyberarkpas
elasticsearch
envoyproxy
fortinet
gcp
google_workspace
haproxy
ibmmq
icinga
iis
iptables
juniper
kafka
kibana
logstash
microsoft
misp
mongodb
mssql
mysql
mysqlenterprise
nats
netflow
o365
okta
oracle
osquery
panw
pensando
postgresql
rabbitmq
redis
salesforce
santa
snyk
sophos
suricata
system
threatintel
traefik
zeek
zookeeper
zoom
我们就看到nginx后缀没有disabled了
[root@filebeat filebeat]# cd modules.d/
[root@filebeat modules.d]# ls
activemq.yml.disabled fortinet.yml.disabled mongodb.yml.disabled rabbitmq.yml.disabled
apache.yml.disabled gcp.yml.disabled mssql.yml.disabled redis.yml.disabled
auditd.yml.disabled google_workspace.yml.disabled mysqlenterprise.yml.disabled salesforce.yml.disabled
awsfargate.yml.disabled haproxy.yml.disabled mysql.yml.disabled santa.yml.disabled
aws.yml.disabled ibmmq.yml.disabled nats.yml.disabled snyk.yml.disabled
azure.yml.disabled icinga.yml.disabled netflow.yml.disabled sophos.yml.disabled
cef.yml.disabled iis.yml.disabled nginx.yml suricata.yml.disabled
checkpoint.yml.disabled iptables.yml.disabled o365.yml.disabled system.yml.disabled
cisco.yml.disabled juniper.yml.disabled okta.yml.disabled threatintel.yml.disabled
coredns.yml.disabled kafka.yml.disabled oracle.yml.disabled traefik.yml.disabled
crowdstrike.yml.disabled kibana.yml.disabled osquery.yml.disabled zeek.yml.disabled
cyberarkpas.yml.disabled logstash.yml.disabled panw.yml.disabled zookeeper.yml.disabled
elasticsearch.yml.disabled microsoft.yml.disabled pensando.yml.disabled zoom.yml.disabled
envoyproxy.yml.disabled misp.yml.disabled postgresql.yml.disabled

nginx.yml里面有访问日志的开关,也有错误日志的开关
[root@filebeat modules.d]# cat nginx.yml
# Module: nginx
# Docs: https://www.elastic.co/guide/en/beats/filebeat/main/filebeat-module-nginx.html
- module: nginx
# Access logs
access:
enabled: true
# Set custom paths for the log files. If left empty,
# Filebeat will choose the paths depending on your OS.
#var.paths:
# Error logs
error:
enabled: true
# Set custom paths for the log files. If left empty,
# Filebeat will choose the paths depending on your OS.
#var.paths:
# Ingress-nginx controller logs. This is disabled by default. It could be used in Kubernetes environments to parse ingress-nginx logs
ingress_controller:
enabled: false
# Set custom paths for the log files. If left empty,
# Filebeat will choose the paths depending on your OS.
#var.paths:

这样让我们试验一下,错误日志的使用
[root@bogon filebeat]# yum -y install nginx
[root@bogon filebeat]# systemctl restart nginx
[root@bogon filebeat]# cd /var/lo
local/ lock/ log/
[root@bogon filebeat]# cd /var/log/nginx/
[root@bogon nginx]# cat error.log
[root@bogon nginx]#
现在是没有错误,我们来故意搞一点错误,来试验一下filebeat nginx.yml模块
[root@bogon nginx]# curl 127.1
<!DOCTYPE html>
<html lang="en-US" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
<head>
<meta name="generator" content="HTML Tidy for HTML5 for Linux version 5.8.0" />
<title>HTTP Server Test Page</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<link rel="shortcut icon" type="image/png" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAAlwSFlzAAABYwAAAWMBjWAytwAAAUdQTFRFR3BMrpC4xa2SxcOY0eeb2qyj19iB9tWY0q3JmZm/m6Wd49WAnIm1QUCIrWab+eS64sjavLzWs7HP2+yzsa/O3e61+uCx4O+++t+vtLTQ3cDV3sHX8bNBqNNEqtNH8bI/rKzM2+2w2uyv+uCz+uG19OPF+OjD6dTf49Hh58103sPY6LmDs5q+3ratiXus396RlIeazNh25e/J5dmN5/DG273UzLSerMSDqLOpxcLZxcbWzcumwqKlr4iz6eq339C/6c7K6+7Q8unO59jh3t3Dqpe9xbzV0b/W09Ldw8rF7uazoU+M76cknM0qJiV39ch2xJG3weB6eHeqw4+2xZO4v950xOF/9cp89cZw87tYWViXeXmrdXWprWWarGSauHmo8bI/87xZ8bE+qNNFuHinsthbqdRGs9lct3emQUCIV1aWQ0KJtNld5X6kagAAAEt0Uk5TANbc3Krb2aqqqtvZ1vv7fX19lJaWlJR9lpyWlPv8+/yWjpaWm8/P0dLsle3l5erl7uzQ5dGP5e3lzs7l7url5+ejoqLn5eTko+bklAXz+AAAAMpJREFUGNNjYIAAMQkGFKAsI68C54izsJjoa2rrqnNwCIAFWHwDk33ZWL1jA7w5IAKBqWEggZD4AIiAUVpoehgba0hKcJwGiK9l7esbmmPnkBHs7a0jycAgxWfDzMzs4ujszsjIqMcrxCDNZ8vDw+Pm4WTPxMRkwCvCwGDq6ucXHeXpFRnu42OmADLEMjs6KoaLOyIyPEkVbAtnUFaMHxe3T0SiPztEwC8oEySQ4O8DERDk5LSyMDc0VmNn54f7R1FOVgnVu8KiUAYAknghR8FpTgsAAAAASUVORK5CYII=" />
<style type="text/css">
好,现在nginx是一个正常的访问,我把nginx的发布目录随便改一下,让他报错
[root@bogon nginx]# cat /etc/nginx/nginx.conf
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 4096;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
server {
listen 80;
listen [::]:80;
server_name _;
#root /usr/share/nginx/html;
root /tmp;

重启一下,访问一下
[root@bogon nginx]# systemctl restart nginx
[root@bogon nginx]# curl 127.1
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.20.1</center>
</body>
</html>
发现报错了,我们来看看nginx的错误日志
[root@bogon nginx]# cd /var/log/nginx/
[root@bogon nginx]# ls
access.log error.log
[root@bogon nginx]# cat error.log
2025/11/06 22:24:17 [error] 13166#13166: *1 directory index of "/tmp/" is forbidden, client: 127.0.0.1, server: _, request: "GET / HTTP/1.1", host: "127.1"
看一下filebeat
[root@filebeat filebeat]# ./filebeat -c filebeat.yml
{
"@timestamp": "2025-11-06T14:39:53.972Z",
"@metadata": {
"beat": "filebeat",
"type": "_doc",
"version": "8.15.0",
"pipeline": "filebeat-8.15.0-nginx-access-pipeline"
},
"log": {
"file": {
"path": "/var/log/nginx/access.log"
},
"offset": 0
},
"event": {
"timezone": "+08:00",
"dataset": "nginx.access",
"module": "nginx"
},
"fileset": {
"name": "access"
},
"host": {
"name": "filebeat",
"os": {
"name": "CentOS Stream",
"kernel": "5.14.0-105.el9.x86_64",
"type": "linux",
"platform": "centos",
"version": "9",
"family": "redhat"
},
"id": "cf5ece90291f44d88d98bca79de279c2",
"containerized": false,
"ip": [
"192.168.9.147",
"fe80::20c:29ff:fea0:47b8"
],
"mac": [
"00-0C-29-A0-47-B8"
],
"hostname": "filebeat",
"architecture": "x86_64"
},
"agent": {
"version": "8.15.0",
"ephemeral_id": "34df7ab4-0bae-400f-8a44-0d6cd0743ad1",
"id": "a6757b13-db2d-46f1-9bfd-9f9b398da1f3",
"name": "filebeat",
"type": "filebeat"
},
"message": "127.0.0.1 - - [06/Nov/2025:22:18:49 +0800] \"GET / HTTP/1.1\" 200 2713881 \"-\" \"curl/7.76.1\" \"-\"",
"service": {
"type": "nginx"
},
"input": {
"type": "log"
},
"ecs": {
"version": "1.12.0"
}
}
如果只想输出完整Json数据中的某些字段
output.console:
pretty: true
codec.format:
string: '%{[@timestamp]} %{[message]}'

我们再来访问一下(为了实验)
[root@bogon filebeat]# curl 127.1
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.20.1</center>
</body>
</html>
这样就会显示我们只想要的内容
[root@filebeat filebeat]# ./filebeat -c filebeat.yml
2025-11-07T01:51:29.697Z 127.0.0.1 - - [07/Nov/2025:09:51:27 +0800] "GET / HTTP/1.1" 403 153 "-" "curl/7.76.1" "-"
2025-11-07T01:51:29.697Z 2025/11/07 09:51:27 [error] 13186#13186: *2 directory index of "/tmp/" is forbidden, client: 127.0.0.1, server: _, request: "GET / HTTP/1.1", host: "127.1"
重读日志文件
日志是一点一点往下走的,随着时间的推移,filebeat不会读之前的文件(这是正常的访问日志)
如果想把读过的记录全部都删掉,那就删除data文件

[root@filebeat filebeat]# cd data/
[root@filebeat data]# ls
meta.json registry
[root@filebeat data]# rm -rf *
执行一遍命令,发现之前的错误日志又拉取了一遍
[root@filebeat filebeat]# ./filebeat -c filebeat.yml
2025-11-07T08:07:07.549Z 123.127.39.50 - - [04/Mar/2021:10:50:28 +0800] "GET /logo.jpg HTTP/1.1" 200 14137 "http://81.68.233.173/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.192 Safari/537.36" "-"
2025-11-07T08:07:07.550Z 2025/11/06 22:24:17 [error] 13166#13166: *1 directory index of "/tmp/" is forbidden, client: 127.0.0.1, server: _, request: "GET / HTTP/1.1", host: "127.1"
2025-11-07T08:07:07.550Z 2025/11/06 22:40:24 [error] 13186#13186: *1 directory index of "/tmp/" is forbidden, client: 127.0.0.1, server: _, request: "GET / HTTP/1.1", host: "127.1"
2025-11-07T08:07:10.546Z 123.127.39.50 - - [11/Mar/2025:10:50:28 +0800] "GET /logo.jpg HTTP/1.1" 200 14137 "http://81.68.233.173/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.192 Safari/537.36" "-"
2025-11-07T08:07:07.551Z 127.0.0.1 - - [06/Nov/2025:22:18:49 +0800] "GET / HTTP/1.1" 200 2713881 "-" "curl/7.76.1" "-"
2025-11-07T08:07:10.546Z 127.0.0.1 - - [06/Nov/2025:22:24:17 +0800] "GET / HTTP/1.1" 403 153 "-" "curl/7.76.1" "-"
2025-11-07T08:07:10.546Z 127.0.0.1 - - [06/Nov/2025:22:40:24 +0800] "GET / HTTP/1.1" 403 153 "-" "curl/7.76.1" "-"
2025-11-07T08:07:10.546Z 127.0.0.1 - - [07/Nov/2025:09:51:27 +0800] "GET / HTTP/1.1" 403 153 "-" "curl/7.76.1" "-"
2025-11-07T08:07:07.550Z 2025/11/07 09:51:27 [error] 13186#13186: *2 directory index of "/tmp/" is forbidden, client: 127
结束
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)