ubuntu filebeat日志解析规则
导读:Ubuntu 上 Filebeat 日志解析规则与示例 一 常用解析方式与适用场景 JSON 解析:日志行本身是合法 JSON,使用 Filebeat 内置 decode_json_fields 或 json 处理器,将字段提取到事件顶层...
Ubuntu 上 Filebeat 日志解析规则与示例
一 常用解析方式与适用场景
- JSON 解析:日志行本身是合法 JSON,使用 Filebeat 内置 decode_json_fields 或 json 处理器,将字段提取到事件顶层,便于检索与聚合。
- Grok 解析:非结构化文本(如 syslog、应用自定义格式),在 Logstash 使用 grok 按模式提取字段,适合复杂文本。
- Dissect 解析:基于分隔符的轻量级解析,适合固定分隔符的日志(性能优于 Grok)。
- 多行合并:堆栈日志、Java 异常等跨行事件,使用 multiline 将多行合并为单事件再解析。
- 系统日志模块:使用 Filebeat System 模块 一键采集并解析 /var/log/auth.log、/var/log/syslog 等系统日志,减少手工配置。
二 快速上手 系统日志模块
- 启用模块与查看:
- sudo filebeat modules enable system
- sudo filebeat modules list
- 配置输出到 Logstash(示例端口 5044):
- 在 /etc/filebeat/filebeat.yml 中:
- output.logstash: hosts: [“localhost:5044”]
-
注释或关闭 output.elasticsearch
- 在 /etc/filebeat/filebeat.yml 中:
- 启动与验证:
- sudo systemctl start filebeat & & sudo systemctl enable filebeat
- 查看服务日志:sudo journalctl -u filebeat -f
- 说明:System 模块内置针对 auth、syslog 等文件的解析与字段映射,适合开箱即用。
三 常用解析规则示例
-
JSON 日志(Filebeat 内联解析)
- 适用:每行一个 JSON 对象
- 示例配置:
- filebeat.inputs:
- type: log
paths: [“/var/log/myapp/*.log”]
processors:
- decode_json_fields: fields: [“message”] target: “” add_error_key: true
- type: log
paths: [“/var/log/myapp/*.log”]
processors:
- 说明:解析后字段提升到事件根,若解析失败会添加 error.message 字段便于排查。
- filebeat.inputs:
-
Spring Boot 单行文本(Dissect 轻量解析)
- 日志样例:2023-08-05 20:47:11.069 INFO 3396 — [ main] org.example.Main : Started Main in 2.228 seconds
- 示例配置:
- filebeat.inputs:
- type: log
paths: [“/var/log/springboot/*.log”]
processors:
- dissect: tokenizer: “%{ logDate} %{ logTime} %{ logLevel} %{ pid} — [%{ thread} ] %{ logger} : %{ message} ” field: “message” target_prefix: “”
- type: log
paths: [“/var/log/springboot/*.log”]
processors:
- 说明:按固定格式快速切分,性能优于 Grok;若需进一步结构化,可在 Logstash 继续处理。
- filebeat.inputs:
-
Nginx 访问日志(Logstash Grok 解析)
- 思路:Filebeat 负责采集与传输,Logstash 用 grok 将 combined/apache 格式解析为结构化字段,并可结合 geoip 丰富地理信息。
- 示例(Logstash 片段):
- input { beats { port => 5044 } }
- filter { grok { match => { “message” => “%{ COMBINEDAPACHELOG} ” } } geoip { source => “clientip” } }
- output { stdout { codec => rubydebug } }
- 说明:COMBINEDAPACHELOG 覆盖常见 Nginx/Apache 访问日志字段;GeoIP 需要安装对应数据库。
-
多行堆栈日志合并(Java、Python traceback)
- 示例配置:
- filebeat.inputs:
- type: log paths: [“/var/log/app/*.log”] multiline: pattern: ‘^\d{ 4} -\d{ 2} -\d{ 2} ’ # 以日期开头为新事件开始 negate: true match: after
- 说明:将非日期行合并到上一行,避免堆栈被拆成多条事件。
- filebeat.inputs:
- 示例配置:
四 部署与验证要点
- 权限与路径:确保 Filebeat 对日志路径(如 /var/log/)具备读取权限;必要时使用 sudo 或调整文件权限/属主。
- 输出选择:仅保留一种输出(Elasticsearch 或 Logstash),避免重复写入或模棱两可的管道。
- 模块与管道配合:启用模块时,若走 Logstash,保持模块管线与 Logstash 配置一致;必要时在 Logstash 中参考模块字段命名进行处理。
- 调试与重读:
- 前台调试:filebeat -e -c /etc/filebeat/filebeat.yml -d “publish”
- 从头重读(开发/测试):可清理 Filebeat 注册表目录(如 data/registry),让 Filebeat 重新采集历史文件(生产慎用)。
- 运行状态检查:
- 服务日志:sudo journalctl -u filebeat -f
- 索引/数据:在 Elasticsearch 中查看索引列表与文档计数,确认数据已到达。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ubuntu filebeat日志解析规则
本文地址: https://pptw.com/jishu/749258.html
