温馨提示×

如何通过Filebeat监控Ubuntu数据库日志

小樊
41
2026-01-05 12:47:15
栏目: 智能运维

通过 Filebeat 监控 Ubuntu 上的 MySQL 日志


一 准备与安装

  • 确认 MySQL 日志路径与权限:常见错误日志为 /var/log/mysql/error.log,慢查询日志可通过配置写入 /var/log/mysql/mysql-slow.log。确保运行 Filebeat 的用户(如 filebeat)对日志文件具备读取权限,必要时将用户加入 adm 组或使用 ACL。
  • 安装 Filebeat(Ubuntu/Debian):执行 sudo apt-get update && sudo apt-get install filebeat。安装完成后主配置目录为 /etc/filebeat/,模块目录为 /usr/share/filebeat/modules/
  • 建议启用模块化管理:filebeat.config.modules: path: ${path.config}/modules.d/*.yml; reload.enabled: true,便于启用 mysql 模块。

二 配置 MySQL 日志采集

  • 方式 A 模块方式(推荐,结构化解析更完善)
    1. 启用模块:sudo filebeat modules enable mysql
    2. 按需调整模块配置(示例):编辑 /etc/filebeat/modules.d/mysql.yml
      • 错误日志:var.logs.mysql.error 默认指向 /var/log/mysql/error.log
      • 慢查询日志:将 var.logs.mysql.slowlog.enabled: true,并设置 var.logs.mysql.slowlog.path: "/var/log/mysql/mysql-slow.log"
    3. 说明:模块内置了针对 MySQL 错误日志与慢查询日志的处理器与仪表盘雏形,后续在 Kibana 可直接使用。
  • 方式 B 自定义输入方式(灵活,便于特殊路径或格式)
    • 编辑 /etc/filebeat/filebeat.yml,添加输入与区分字段:
      filebeat.inputs:
      - type: log
        enabled: true
        paths:
          - /var/log/mysql/error.log
        fields:
          log_type: mysql_error
        fields_under_root: true
      
      - type: log
        enabled: true
        paths:
          - /var/log/mysql/mysql-slow.log
        fields:
          log_type: mysql_slow
        fields_under_root: true
        # 如为传统多行堆栈,可按需开启多行合并
        # multiline.pattern: '^# Time:'
        # multiline.negate: true
        # multiline.match: after
      
    • 提示:MySQL 慢查询日志常见为“以 # Time: 开头”的多行记录,如需将整个查询作为单事件,请配置 multiline。

三 配置输出目标

  • 输出到 Logstash(便于解析与丰富后再入库)
    output.logstash:
      hosts: ["your-logstash-host:5044"]
    
    在 Logstash 侧创建管道(示例):
    input { beats { port => 5044 } }
    filter { }
    output {
      elasticsearch {
        hosts => ["your-es-host:9200"]
        index => "mysql-logs-%{+YYYY.MM.dd}"
      }
    }
    
  • 直接输出到 Elasticsearch(简单场景)
    output.elasticsearch:
      hosts: ["your-es-host:9200"]
      index: "mysql-logs-%{+YYYY.MM.dd}"
    
  • 索引与 ILM:若需自定义索引命名或关闭 ILM,可在输出段设置 indexsetup.ilm.enabled: false 并配置模板。

四 启动与验证

  • 启动与开机自启:sudo systemctl enable --now filebeat;检查状态:sudo systemctl status filebeat;实时查看日志:sudo tail -f /var/log/filebeat/filebeat
  • 自检配置:sudo filebeat test config -c /etc/filebeat/filebeat.yml;测试输出:sudo filebeat test output
  • Kibana 可视化:若使用模块方式,启用对应 MySQL 仪表盘;若直连 ES,创建索引模式(如 mysql-logs-*)后构建可视化。

五 生产要点与排错

  • 权限与安全:确保 /var/log/mysql/ 对 Filebeat 可读;跨主机传输建议启用 TLS/SSL;敏感信息使用 Keystore 管理。
  • 多行与性能:堆栈类日志务必正确配置 multiline;可按需调整 harvester_buffer_sizebulk_max_sizequeue.mem.events 等参数以平衡吞吐与可靠性。
  • 索引与生命周期:结合 ILM 管理热温冷与保留;需要自定义索引模板时关闭 ILM 并配置 setup.template
  • 常见排错:
    • 无数据:核对路径、权限、Filebeat 是否运行、输出连通性;用 test config/output 快速定位。
    • 重复采集:避免同一文件被多个输入重复监控;必要时清理 registry 文件后重启(会重发历史)。
    • 慢查询未结构化:确认慢日志已开启并写入指定路径;必要时在 Logstash 增加 grok/ dissect 解析。

0