温馨提示×

CentOS Filebeat支持哪些日志格式

小樊
43
2025-12-23 10:07:48
栏目: 智能运维

支持的主要日志格式与处理方式

  • 纯文本行式日志(默认):不做结构化解析,整行作为 message 字段采集,适合大多数系统与应用的标准输出/错误输出。可通过多行配置将堆栈跟踪等合并为单条事件。适用于 centos 上常见的 /var/log/*.log 等文本日志。
  • JSON 日志:逐行解析为结构化字段,支持将解析结果提升到事件根层级,并可配置遇到解析错误时生成错误字段。适合应用直接输出 json 的场景(如 nginx 的 json 日志)。
  • 键值对日志(KV):通过处理器(如 dissect 或自定义脚本)按分隔符/模式将 message 拆分为多个字段,适合 key=value 或固定分隔符格式。
  • 多行日志:对以时间戳、堆栈前缀等开头的行进行合并,解决 java、tomcat 等堆栈跨多行的采集问题。
  • 系统日志(syslog 风格):可直接采集 /var/log/messages、/var/log/secure 等文本日志,结合 dissect/grok 或在下游用 ingest pipeline 做进一步解析;也可使用 filebeat 的 system 模块(需启用对应模块并配置)。

常用配置示例

  • json 日志(逐行解析并提升到根层级) filebeat.inputs:

    • type: log enabled: true paths:
      • /var/log/nginx/access.log json.keys_under_root: true json.overwrite_keys: true json.add_error_key: true
  • 多行日志(合并 java/tomcat 堆栈) filebeat.inputs:

    • type: log enabled: true paths:
      • /var/log/app/*.log multiline.pattern: ‘^\d{4}-\d{2}-\d{2}’ multiline.negate: true multiline.match: after timeout: 5s
  • 键值对日志(dissect 快速切分) filebeat.inputs:

    • type: log enabled: true paths:
      • /var/log/app/kv.log processors:
      • dissect: tokenizer: “%{ts} %{level} %{msg}” field: “message” target_prefix: “”

在 CentOS 上的实践建议

  • 配置路径通常为 /etc/filebeat/filebeat.yml;完成后用 sudo systemctl start filebeat 启动,用 sudo systemctl status filebeat 检查状态,并在 Kibana(端口 5601) 中创建索引模式进行可视化。
  • 输出到 Elasticsearch 时,可按类型自定义索引名,例如:index: “nginx-%{[agent.version]}-%{+yyyy-MM}”;若需关闭 ilm 以使用自定义索引,可设置 setup.ilm.enabled: false
  • 若需更强的解析能力(如 grok 模式、复杂条件),可将日志输出到 Logstash,在 logstash 中完成解析后再写入 ES。

0