温馨提示×

Filebeat在CentOS上的配置文件结构是怎样的

小樊
61
2025-09-24 06:55:38
栏目: 智能运维

Filebeat在CentOS上的配置文件结构及关键部分解析
Filebeat在CentOS系统中的核心配置文件为/etc/filebeat/filebeat.yml,采用YAML格式编写,结构由多个逻辑部分组成,每个部分负责不同的功能配置。以下是主要结构及关键配置项的详细说明:

1. 全局配置(Top-Level Settings)

位于配置文件顶部,定义Filebeat进程的全局参数,影响整体运行行为:

  • name:Filebeat实例的名称(用于标识节点,默认为主机名);
  • queue.mem.events:内存队列的事件容量(默认1024,用于临时存储待发送的事件,避免磁盘I/O瓶颈);
  • queue.mem.flush.min_events:触发内存队列刷新的最小事件数(默认2048);
  • queue.mem.flush.timeout:内存队列刷新的超时时间(默认1s)。
    这些配置需放在文件最前面,后续模块会继承全局设置。

2. 输入配置(filebeat.inputs)

定义Filebeat需要监控的日志数据源,是配置文件的核心部分。支持多种输入类型(如logfilestreamsyslog等),其中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:添加业务标签(如应用名称、环境),便于后续检索和分析。

3. 模块配置(filebeat.modules)

Filebeat预定义了多个模块(如nginxmysqlsystemd),用于快速收集特定应用的日志并应用对应的处理规则(如解析日志格式、提取字段)。

  • 默认路径:模块配置文件位于/etc/filebeat/modules.d/目录下(如nginx.ymlsystem.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会自动加载模块的输入规则。

4. 输出配置(output.*)

定义Filebeat将日志发送到的目标系统,支持多种输出类型(如Elasticsearch、Logstash、Kafka等),同一时间只能启用一种输出类型。

4.1 输出到Elasticsearch(最常用)

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,减少网络带宽)

4.2 输出到Logstash(需中间处理)

output.logstash:
  hosts: ["localhost:5044"]  # Logstash监听的地址和端口
  loadbalance: true  # 负载均衡(若有多个Logstash节点)
  ssl.certificate_authorities: ["/etc/pki/tls/certs/ca.crt"]  # SSL证书路径(可选)

4.3 输出到控制台(调试用)

output.console:
  pretty: true  # 格式化输出(便于阅读)

输出配置需根据目标系统的要求调整参数(如Elasticsearch的认证信息、Logstash的端口)。

5. 索引模板配置(setup.template)

用于定义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)。

6. 处理器配置(processors)

在发送数据前对事件进行预处理(如删除字段、添加标签、解析时间),优化数据结构。

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)。

7. 日志与监控配置(logging. 和 xpack.monitoring.*)*

  • 日志配置:控制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命令验证配置文件的正确性。

0