温馨提示×

Ubuntu下Filebeat配置文件详解

小樊
45
2025-10-25 10:57:20
栏目: 智能运维

Ubuntu下Filebeat配置文件详解
Filebeat是Elastic开发的轻量级日志采集工具,其配置文件默认位于/etc/filebeat/filebeat.yml(YAML格式)。以下是核心配置项的详细说明及实战示例:

1. 基础配置:filebeat.inputs(输入源定义)

filebeat.inputs是Filebeat的核心模块,用于指定要采集的日志源。每个输入源为一个字典,支持log(文本日志)、docker(容器日志)、stdin(标准输入)等类型。

  • 关键参数
    • type:必填,指定输入类型(如log表示文本日志)。
    • enabled:是否启用该输入(默认true)。
    • paths:必填,指定日志文件路径(支持通配符,如/var/log/*.log/var/log/apache2/*.log)。
    • exclude_files:排除特定文件(如['\.gz$']排除所有.gz压缩文件)。
    • tail_files:若为true,从文件末尾开始读取(适用于日志轮换场景,但需注意可能跳过新文件首条日志)。
    • ignore_older:忽略超过指定时间的文件(如72h忽略72小时前的文件,避免采集历史数据)。
    • multiline:处理多行日志(如Java异常堆栈),需配置pattern(匹配行首的正则表达式,如'^\[')、negate(是否取反,false表示匹配pattern的行作为新事件)、match(关联方式,after表示匹配行追加到前一个事件)。
  • 示例
    filebeat.inputs:
    - type: log
      enabled: true
      paths:
        - /var/log/syslog
        - /var/log/auth.log
      exclude_files: ['\.gz$']
      tail_files: true
      ignore_older: 24h
      multiline:
        pattern: '^\['
        negate: false
        match: after
    

2. 输出配置:output(数据目的地)

output定义Filebeat将采集的日志发送到哪里,支持elasticsearchlogstashkafkaredis等目标。

2.1 输出到Elasticsearch

output.elasticsearch:
  hosts: ["localhost:9200"]  # Elasticsearch地址(支持多个节点,如["es1:9200", "es2:9200"])
  index: "filebeat-%{[agent.version]}-%{+yyyy.MM.dd}"  # 索引名称模板(含Filebeat版本和日期)
  username: "elastic"  # 认证用户名(若开启安全功能)
  password: "your_password"  # 认证密码
  pipeline: "filebeat_pipeline"  # 指定Ingest节点管道(用于数据预处理)

2.2 输出到Logstash

output.logstash:
  hosts: ["localhost:5044"]  # Logstash地址(支持多个节点)
  index: "filebeat-%{+yyyy.MM.dd}"  # 索引名称模板
  ssl.enabled: true  # 是否启用SSL/TLS加密
  ssl.certificate_authorities: ["/etc/pki/tls/certs/ca.crt"]  # CA证书路径

2.3 输出到Kafka

output.kafka:
  hosts: ["kafka1:9092", "kafka2:9092"]  # Kafka集群地址
  topic: "%{[fields.log_topic]}"  # 主题名称(可从事件字段动态获取)
  required_acks: 1  # 确认机制(0=无响应,1=等待leader确认,-1=等待所有副本确认)
  compression: gzip  # 压缩格式(gzip/snappy/lz4)
  max_message_bytes: 1000000  # 单条消息最大字节数(避免过大被丢弃)

3. 数据处理:processors(预处理步骤)

processors用于在发送数据前对其进行加工,如添加字段、解码JSON、删除敏感信息等。

  • 常用处理器
    • add_fields:添加自定义字段(如app_nameenv)。
    • decode_json_fields:解码JSON格式的日志字段(如将message中的JSON转为结构化数据)。
    • drop_fields:删除指定字段(如删除敏感的password字段)。
    • rename:重命名字段(如将src_ip改为source_ip)。
  • 示例
    processors:
    - add_fields:
        target: ""  # 添加到根层级(若为"my_field"则嵌套到my_field下)
        fields:
          app_name: "myapp"
          env: "production"
    - decode_json_fields:
        fields: ["message"]  # 解码message字段中的JSON
        target: ""  # 解码后合并到根层级
    - drop_fields:
        fields: ["password", "credit_card"]  # 删除敏感字段
    

4. 模块配置:filebeat.modules(预构建模块)

Filebeat提供了多个预构建模块(如systemapachenginxmysql),用于快速采集和解析常见服务的日志(无需手动编写正则表达式)。

  • 启用模块
    sudo filebeat modules enable system  # 启用system模块(采集系统日志)
    sudo filebeat modules enable apache  # 启用apache模块(采集Apache日志)
    
  • 配置模块
    模块配置文件位于/etc/filebeat/modules.d/(如system.ymlapache.yml),可通过修改这些文件调整模块行为。
    filebeat.modules:
    - module: system
      enabled: true
      period: 1h  # 日志采集周期(默认10分钟)
      syslog:
        enabled: true  # 采集syslog
        var.paths: ["/var/log/syslog", "/var/log/auth.log"]
      auth:
        enabled: true  # 采集auth日志
        var.paths: ["/var/log/auth.log"]
    

5. 高级配置

5.1 日志级别(logging)

调整Filebeat自身的日志输出级别,便于调试(可选errorwarninginfodebug)。

logging.level: debug  # 设置为debug可查看详细采集过程
logging.to_files: true  # 日志输出到文件(默认路径:/var/log/filebeat/filebeat)
logging.files:
  path: /var/log/filebeat
  name: filebeat.log
  keepfiles: 7  # 保留最近7天的日志
  permissions: 0644

5.2 自动发现(autodiscover)

适用于容器化环境(如Docker、Kubernetes),自动检测新容器并采集其日志。

filebeat.autodiscover:
  providers:
    - type: docker  # 监听Docker事件
      hints.enabled: true  # 使用Docker hints(容器标签指定采集规则)
  config:
    - type: container
      paths:
        - /var/lib/docker/containers/*/*.log  # Docker日志路径
      exclude_lines: ["^\\s+[\\-`('.|_]"]  # 排除空行或特殊字符行

6. 验证与启动

  • 测试配置文件语法
    sudo filebeat test config -e  # 检查配置文件是否有语法错误
    
  • 启动/重启服务
    sudo systemctl start filebeat  # 启动Filebeat
    sudo systemctl enable filebeat  # 开机自启
    sudo systemctl restart filebeat  # 重启(修改配置后需重启生效)
    
  • 查看运行状态
    sudo systemctl status filebeat  # 查看服务状态
    sudo tail -f /var/log/filebeat/filebeat  # 查看实时日志
    

通过以上配置,Filebeat可实现灵活的日志采集、处理和传输。根据实际需求调整参数(如日志路径、输出目标、预处理步骤),并结合Elastic Stack(如Kibana)进行可视化分析。

0