linux

Filebeat如何进行错误日志收集

小樊
43
2025-10-08 06:41:48
栏目: 编程语言

Filebeat错误日志收集配置指南

1. 确定错误日志文件路径

首先需要明确目标应用程序的错误日志存储位置。常见应用的错误日志路径如下:

2. 修改Filebeat配置文件(核心步骤)

Filebeat的配置文件默认位于/etc/filebeat/filebeat.yml,需通过inputs模块指定错误日志路径,并通过tagsindices实现日志分类。

基础配置(单应用错误日志)

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/nginx/error.log  # 替换为目标错误日志路径
  tags: ["error"]  # 添加"error"标签,用于后续区分日志类型
  # 可选:处理多行错误日志(如Java堆栈跟踪)
  multiline.pattern: '^\['  # 匹配行首为"[时间戳"的行(如Tomcat错误日志)
  multiline.negate: true
  multiline.match: after    # 将匹配行之前的内容合并到上一行

output.elasticsearch:
  hosts: ["localhost:9200"]  # Elasticsearch地址
  indices:
    - index: "error-logs-%{+yyyy.MM.dd}"  # 错误日志单独存入带日期的索引
      when.equals:
        tags: ["error"]  # 仅当标签为"error"时写入此索引

多应用错误日志分离(进阶配置)

若需同时收集多个应用的错误日志(如Nginx、Tomcat),可通过paths数组指定多个路径,并用tags区分:

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/nginx/error.log
  tags: ["nginx_error"]
  multiline.pattern: '^\['
  multiline.negate: true
  multiline.match: after

- type: log
  enabled: true
  paths:
    - /var/log/tomcat/catalina.out
  tags: ["tomcat_error"]
  multiline.pattern: '^\['
  multiline.negate: true
  multiline.match: after

output.elasticsearch:
  hosts: ["localhost:9200"]
  indices:
    - index: "nginx-error-%{+yyyy.MM.dd}"
      when.equals:
        tags: ["nginx_error"]
    - index: "tomcat-error-%{+yyyy.MM.dd}"
      when.equals:
        tags: ["tomcat_error"]

过滤特定错误内容(可选)

若只需收集包含"ERROR"关键词的行,可添加include_lines参数:

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /opt/app/logs/application.log
  tags: ["app_error"]
  include_lines: ["ERROR"]  # 仅收集包含"ERROR"的行
  multiline.pattern: '^\['
  multiline.negate: true
  multiline.match: after

3. 处理多行错误日志

许多错误日志(如Java异常堆栈)会跨越多行,需通过multiline参数合并:

multiline.pattern: '^\['  # 匹配行首为"[时间戳"的行(常见于Java日志)
multiline.negate: true    # 否定匹配(即不匹配的行作为多行内容的起始行)
multiline.match: after    # 将后续行合并到上一行(直到再次匹配pattern)

4. 启动/重启Filebeat服务

配置完成后,需重启Filebeat使更改生效:

sudo systemctl restart filebeat  # systemd系统
sudo service filebeat restart    # sysvinit系统(旧版本)

5. 验证错误日志收集

常见问题排查

0
看了该问题的人还看了