Filebeat在CentOS上的配置文件结构及关键部分解析
Filebeat在CentOS系统中的核心配置文件为/etc/filebeat/filebeat.yml,采用YAML格式编写,结构由多个逻辑部分组成,每个部分负责不同的功能配置。以下是主要结构及关键配置项的详细说明:
位于配置文件顶部,定义Filebeat进程的全局参数,影响整体运行行为:
定义Filebeat需要监控的日志数据源,是配置文件的核心部分。支持多种输入类型(如log、filestream、syslog等),其中log(传统类型)和filestream(推荐类型,性能更优)最为常用。
filebeat.inputs:
- type: log # 输入类型(必选)
enabled: true # 是否启用(必选,默认true)
paths: # 监控的文件路径(必选,支持通配符)
- /var/log/*.log
- /var/log/nginx/*.log
exclude_lines: ["^DBG"] # 排除匹配正则的行(如调试日志)
include_lines: ["^ERR", "^WARN"] # 仅包含匹配正则的行
fields: # 添加自定义字段(用于分类)
app: "nginx"
env: "production"
fields_under_root: true # 自定义字段是否提升到根层级
type:输入类型,log用于读取文件新增内容,filestream用于更高效的文件流处理(推荐);paths:支持通配符(如*.log)和目录(如/var/log/),可配置多个路径;exclude_lines/include_lines:过滤日志行,减少不必要的数据传输;fields:添加业务标签(如应用名称、环境),便于后续检索和分析。Filebeat预定义了多个模块(如nginx、mysql、systemd),用于快速收集特定应用的日志并应用对应的处理规则(如解析日志格式、提取字段)。
/etc/filebeat/modules.d/目录下(如nginx.yml、system.yml),默认以.disabled结尾(未启用)。filebeat modules enable <module_name>命令启用(如filebeat modules enable nginx),会移除对应配置文件的.disabled后缀。.yml文件(如myapp.yml),配置日志路径、处理器等参数。nginx.yml启用后的配置):- module: nginx
access:
enabled: true
var.paths: ["/var/log/nginx/access.log*"]
error:
enabled: true
var.paths: ["/var/log/nginx/error.log*"]
启用模块后,无需手动配置inputs,Filebeat会自动加载模块的输入规则。
定义Filebeat将日志发送到的目标系统,支持多种输出类型(如Elasticsearch、Logstash、Kafka等),同一时间只能启用一种输出类型。
output.elasticsearch:
hosts: ["localhost:9200"] # Elasticsearch集群地址(可配置多个节点)
index: "filebeat-%{[agent.version]}-%{+yyyy.MM.dd}" # 索引名称(含版本和日期)
username: "elastic" # 认证用户名(若启用安全功能)
password: "changeme" # 认证密码
bulk_max_size: 50 # 批量发送的最大事件数(默认50,提高吞吐量)
compression_level: 5 # 压缩级别(0-9,默认3,减少网络带宽)
output.logstash:
hosts: ["localhost:5044"] # Logstash监听的地址和端口
loadbalance: true # 负载均衡(若有多个Logstash节点)
ssl.certificate_authorities: ["/etc/pki/tls/certs/ca.crt"] # SSL证书路径(可选)
output.console:
pretty: true # 格式化输出(便于阅读)
输出配置需根据目标系统的要求调整参数(如Elasticsearch的认证信息、Logstash的端口)。
用于定义Elasticsearch中索引的模板(包括分片数、副本数、编解码器等),确保索引结构符合需求。
setup.template:
name: "filebeat" # 模板名称
pattern: "filebeat-*" # 匹配的索引模式(如filebeat-7.10.0-2025.09.24)
settings:
index:
number_of_shards: 3 # 主分片数(根据数据量调整,建议5-10GB/分片)
number_of_replicas: 1 # 副本数(高可用,建议至少1)
codec: best_compression # 压缩编解码器(节省存储空间)
enabled: true # 是否启用模板(默认true)
模板会在首次发送数据时自动应用到匹配的索引,也可手动加载(filebeat setup --template)。
在发送数据前对事件进行预处理(如删除字段、添加标签、解析时间),优化数据结构。
processors:
- drop_fields: # 删除指定字段(减少存储和索引压力)
fields: ["host.name", "log.offset"]
ignore_missing: true # 字段不存在时不报错
- add_tags: # 添加标签(用于分类)
tags: ["production", "web"]
- date: # 解析日志中的时间戳(覆盖@timestamp字段)
field: "timestamp"
formats: ["2006-01-02 15:04:05"]
处理器可应用于全局(所有输入)或单个输入(在inputs部分配置processors)。
日志配置:控制Filebeat自身的日志输出(路径、级别、大小)。
logging.level: info # 日志级别(debug/info/warning/error/critical)
logging.to_files: true # 输出到文件(默认true)
logging.files:
path: /var/log/filebeat # 日志目录
name: filebeat.log # 日志文件名
keepfiles: 7 # 保留的日志文件数量
permissions: 0644 # 文件权限
监控配置:将Filebeat的运行指标发送到Elasticsearch(用于Kibana监控)。
xpack.monitoring:
enabled: true # 是否启用监控(默认true)
elasticsearch:
hosts: ["localhost:9200"] # 监控数据的发送目标
username: "elastic"
password: "changeme"
监控数据会存储在Elasticsearch的.monitoring-beats-*索引中,可通过Kibana的“Stack Monitoring”查看。
以上是Filebeat在CentOS上的核心配置文件结构及关键配置项。实际使用时,需根据业务需求调整各部分的参数(如日志路径、输出目标、索引模板),并通过filebeat test config -e命令验证配置文件的正确性。