Filebeat错误日志收集配置指南
首先需要明确目标应用程序的错误日志存储位置。常见应用的错误日志路径如下:
/var/log/nginx/error.log(主错误日志)/var/log/tomcat/catalina.out(标准输出/错误合并日志)、/var/log/tomcat/localhost.<date>.log(主机相关错误日志)logs子目录下(如/opt/app/logs/error.log)Filebeat的配置文件默认位于/etc/filebeat/filebeat.yml,需通过inputs模块指定错误日志路径,并通过tags或indices实现日志分类。
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
许多错误日志(如Java异常堆栈)会跨越多行,需通过multiline参数合并:
multiline.pattern: '^\[' # 匹配行首为"[时间戳"的行(常见于Java日志)
multiline.negate: true # 否定匹配(即不匹配的行作为多行内容的起始行)
multiline.match: after # 将后续行合并到上一行(直到再次匹配pattern)
配置完成后,需重启Filebeat使更改生效:
sudo systemctl restart filebeat # systemd系统
sudo service filebeat restart # sysvinit系统(旧版本)
检查Filebeat日志:查看Filebeat自身日志,确认是否正常读取错误日志文件:
sudo tail -f /var/log/filebeat/filebeat.log
若出现Filebeat is running或Successfully sent log lines等字样,说明配置成功。
检查Elasticsearch索引:通过Elasticsearch的_cat/indices接口查看是否生成错误日志索引:
curl -X GET "localhost:9200/_cat/indices?v"
应能看到类似nginx-error-2025.10.08、tomcat-error-2025.10.08的索引。
Kibana查看错误日志:
登录Kibana,进入Management → Index Patterns,创建匹配错误日志索引的模式(如error-*),然后在Discover中选择该索引,即可查看错误日志详情。
filebeat)有权限读取错误日志文件:sudo chown -R filebeat:filebeat /var/log/nginx # 修改日志目录所有者
sudo chmod -R 0755 /var/log/nginx # 设置适当权限
filebeat -c /etc/filebeat/filebeat.yml validate