首页主机资讯ubuntu filebeat如何处理日志格式

ubuntu filebeat如何处理日志格式

时间2025-11-21 18:41:03发布访客分类主机资讯浏览1051
导读:Ubuntu 上 Filebeat 处理日志格式的实践指南 一 处理思路总览 识别日志类型:按是否为JSON 单行、多行堆栈、系统日志(syslog)、键值或正则可解析文本进行分类。 选择处理方式:优先使用**模块(Modules)与处理...

Ubuntu 上 Filebeat 处理日志格式的实践指南

一 处理思路总览

  • 识别日志类型:按是否为JSON 单行多行堆栈系统日志(syslog)键值或正则可解析文本进行分类。
  • 选择处理方式:优先使用**模块(Modules)处理器(Processors)**在 Filebeat 侧完成结构化;复杂场景可发送到 Logstash 做二次解析;最终输出到 Elasticsearch 并配合索引模板与 Kibana 展示。
  • 关键配置位置:输入(inputs)、模块(modules)、处理器(processors)、输出(outputs)。

二 常见日志格式与 Filebeat 配置

  • JSON 日志(每行一个 JSON 对象)

    • 适用:应用直接输出 JSON(如自定义 JSON 日志、改造后的 Nginx JSON 等)。
    • 要点:启用 JSON 解码,将字段提升为顶层,必要时指定 message 键与错误键。
    • 示例:
      filebeat.inputs:
        - type: log
          enabled: true
          paths:
            - /var/log/myapp/*.log
          json.keys_under_root: true
          json.add_error_key: true
          json.message_key: event
      output.elasticsearch:
        hosts: ["localhost:9200"]
        index: "myapp_json-%{
      +yyyy.MM.dd}
      "
      
    • 说明:keys_under_root 将 JSON 字段放到事件根层;add_error_key 在解析失败时添加 error 字段便于排查。
  • 多行堆栈日志(Java、Python traceback 等)

    • 适用:异常堆栈跨多行,需要合并为一条事件。
    • 要点:用 multiline 将“非时间/异常起始行”合并到上一行;按时间或“at/Exception”等特征匹配。
    • 示例:
      filebeat.inputs:
        - type: log
          enabled: true
          paths:
            - /var/log/java/*.log
          multiline.negate: true
          multiline.pattern: '^[0-9]{
      4}
      -[0-9]{
      2}
      -[0-9]{
      2}
      '
          multiline.match: after
          multiline.max_lines: 500
          multiline.timeout: 5s
      
    • 说明:negate: true + match: after 表示“不以时间开头的行附加到前一条”;可按实际时间格式调整 pattern。
  • Ubuntu 系统日志(auth、syslog 等)

    • 适用:/var/log/auth.log、/var/log/syslog 等系统日志。
    • 要点:启用 System 模块,由模块内置解析器处理常见 syslog 格式;如需自定义可在 Logstash 进一步 grok。
    • 示例:
      # 启用模块
      sudo filebeat modules enable system
      sudo filebeat modules list
      
      # 输出到 Logstash(示例)
      output.logstash:
        hosts: ["192.0.2.10:5044"]
      # 重启服务
      sudo systemctl restart filebeat
      
    • 说明:System 模块内置 fileset(如 auth、syslog),简化收集与解析;复杂场景在 Logstash 中用 grok 细化字段。
  • 键值或正则可解析文本(如 Spring Boot 默认格式)

    • 适用:非 JSON、但具备固定分隔符或模板的日志。
    • 要点:使用 dissect 轻量解析;不适合再抽取子字段时,可配合 grok(通常放在 Logstash)。
    • 示例(dissect 解析 Spring Boot 默认行):
      filebeat.inputs:
        - type: stdin
          processors:
            - dissect:
                tokenizer: "%{
      logDate}
       %{
      logTime}
        %{
      logLevel}
       %{
      pid}
       --- [%{
      thread}
      ] %{
      logger}
       : %{
      message}
      "
                field: "message"
      output.console:
        enabled: true
        pretty: true
      
    • 说明:dissect 基于分隔符切分,性能优于 grok;无法覆盖复杂模式时,将事件送至 Logstash 用 grok 深度解析。

三 输出与索引模板

  • 输出到 Elasticsearch
    • 建议按天分索引,使用内置或自定义模板;在 filebeat.yml 中设置索引名与模板:
      output.elasticsearch:
        hosts: ["localhost:9200"]
        index: "filebeat-%{
      [agent.version]}
      -%{
      +yyyy.MM.dd}
          "
      setup.template.name: "filebeat"
      setup.template.pattern: "filebeat-*"
      setup.template.settings:
        index.number_of_shards: 3
      
    • 说明:模板用于预置字段类型与分词,避免动态映射带来的性能与查询问题。

四 调试与运行

  • 语法校验与前台运行:使用 -e -c 快速校验并查看事件输出。
    sudo filebeat -e -c /etc/filebeat/filebeat.yml
    
  • 生产部署:使用 systemd 管理,变更后重启服务。
    sudo systemctl restart filebeat
    
  • 模块与配置路径:模块通常启用后生成/修改 /etc/filebeat/modules.d/*.yml;主配置为 /etc/filebeat/filebeat.yml

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: ubuntu filebeat如何处理日志格式
本文地址: https://pptw.com/jishu/753551.html
Jenkins在Ubuntu上如何配置邮件通知 如何在Debian上进行Java代码性能编译优化

游客 回复需填写必要信息