如何轻松用Filebeat高效抓取各类日志数据?
- 内容介绍
- 文章标签
- 相关推荐
如何快速、准确地收集各类日志数据成为了每个运维和开发团队面临的主要痛点。传统手工配置往往耗时且易出错,而 Filebeat 的模块化设计给了我们一个既轻量又高效的方法。
使用者痛点一的观点是,配置繁琐。方法不一致
日志文件方法经常变动,手动维护配置容易导致漏收或误收。
说到使用者痛点二。自定义字段添加困难
业务需要在日志中携带自定义标识,但默认模板缺乏灵活性。
再看使用者痛点三。验证流程混乱
缺少统一的验证步骤,导致排查错误耗时长。
一、了解 Filebeat 的价值与定位
Filebeat 是 Elastic 官方提供的一款轻量级日志采集器。它能从各种来源实时推送数据至 Elasticsearch 或 Logstash,实现统一可视化与分析。 怎么说呢,
# 查看 Elasticsearch 索引状态
curl -X GET "localhost:9200/_cat/indices?v"
# 查询自定义索引
curl -X GET "localhost:9200/custom_module-*/_search?pretty"
二、准备工作:创建自定义模块目录
为了保持结构清晰,我们建议为每个业务单元创建独立目录:
# 创建目录结构
sudo mkdir -p /etc/filebeat/modules.d/custom_module
sudo mkdir -p /var/log/custom_module
# 为演示生成一个示例日志文件
echo "This is an example log entry" | sudo tee -a /var/log/custom_module/test.log
三、编写模块配置文件
在 /etc/filebeat/modules.d/custom_module/ 下创建 custom.yml 并填入下面内容:
# /etc/filebeat/modules.d/custom_module/custom.yml
- type: log
enabled: true
从paths来看,- /var/log/custom_module/*.log # 日志文件方法
从fields来看。module: custom_module # 自定义字段:模块名
service: custom_service # 自定义字段:服务名
processors:
- add_fields:
target_fields:
custom_field: "This is a custom field" # 添加额外自定义字段
output.elasticsearch:
从hosts来看,index: "custom_module-%{+yyyy.MM.dd}"
四、启用并加载模块配置
Edit main Filebeat configuration file /etc/filebeat/filebeat.yml,ensuring modules directory is referenced:
# Enable custom module directory
filebeat.modules.enabled: true
# Path to modules configuration files
filebeat.modules.path: /etc/filebeat/modules.d/*
五、重启 Filebeat 并验证是否生效
⚠️ 注意:在重启前请确保所有 YAML 配置语法无误,否则会导致服务启动失败。
# 重启 Filebeat 服务以应用新配置
sudo systemctl restart filebeat
# 检查服务状态确认已启动无错误
sudo systemctl status filebeat
# 查看 Filebeat 日志确认无报错信息
sudo tail -f /var/log/filebeat/filebeat.log | grep ERROR || echo "No errors found"
六、检查 Elasticsearch 索引是否已正确写入数据
# 确认新索引已生成并包含数据:
curl -X GET "localhost:9200/_cat/indices?v" | grep custom_module
# 查看具体文档内容:
curl -X GET "localhost:9200/custom_module-*/_search?pretty"
✅ 成功提示:
- "status": "ok"
- "hits.total": 正确计数
- "fields.custom_field": "This is a custom field"
- "fields.module": "custom_module"
- "fields.service": "custom_service"
❌ 常见错误及排查建议:
- No data ingested: 检查 /var/log/custom_module/*.log 是否有新文件而且权限允许 Filebeat 阅读。
-
Error parsing YAML: 使用在线 YAML 校验工具或运行
systmctl status filebeat --no-pager | grep yaml-error. - No index created: 确认 Elasticsearch 正常运行且 host 与端口正确。
- Pipelines missing in Logstash :** 若通过 Logstash 中转,请确认相应 pipeline 已正确配置并开启。
& 快速部署 Checklist 🚀
- 创建业务目录 & 示例日志文件 ✔️
- 编写完整的 module.yml 配置 ✔️
- 在主 config 中开启 modules path ✔️
- 重启 Filebeat 并检查状态 ✔️
- 验证 Elasticsearch 索引及文档 ✔️
如何快速、准确地收集各类日志数据成为了每个运维和开发团队面临的主要痛点。传统手工配置往往耗时且易出错,而 Filebeat 的模块化设计给了我们一个既轻量又高效的方法。
使用者痛点一的观点是,配置繁琐。方法不一致
日志文件方法经常变动,手动维护配置容易导致漏收或误收。
说到使用者痛点二。自定义字段添加困难
业务需要在日志中携带自定义标识,但默认模板缺乏灵活性。
再看使用者痛点三。验证流程混乱
缺少统一的验证步骤,导致排查错误耗时长。
一、了解 Filebeat 的价值与定位
Filebeat 是 Elastic 官方提供的一款轻量级日志采集器。它能从各种来源实时推送数据至 Elasticsearch 或 Logstash,实现统一可视化与分析。 怎么说呢,
# 查看 Elasticsearch 索引状态
curl -X GET "localhost:9200/_cat/indices?v"
# 查询自定义索引
curl -X GET "localhost:9200/custom_module-*/_search?pretty"
二、准备工作:创建自定义模块目录
为了保持结构清晰,我们建议为每个业务单元创建独立目录:
# 创建目录结构
sudo mkdir -p /etc/filebeat/modules.d/custom_module
sudo mkdir -p /var/log/custom_module
# 为演示生成一个示例日志文件
echo "This is an example log entry" | sudo tee -a /var/log/custom_module/test.log
三、编写模块配置文件
在 /etc/filebeat/modules.d/custom_module/ 下创建 custom.yml 并填入下面内容:
# /etc/filebeat/modules.d/custom_module/custom.yml
- type: log
enabled: true
从paths来看,- /var/log/custom_module/*.log # 日志文件方法
从fields来看。module: custom_module # 自定义字段:模块名
service: custom_service # 自定义字段:服务名
processors:
- add_fields:
target_fields:
custom_field: "This is a custom field" # 添加额外自定义字段
output.elasticsearch:
从hosts来看,index: "custom_module-%{+yyyy.MM.dd}"
四、启用并加载模块配置
Edit main Filebeat configuration file /etc/filebeat/filebeat.yml,ensuring modules directory is referenced:
# Enable custom module directory
filebeat.modules.enabled: true
# Path to modules configuration files
filebeat.modules.path: /etc/filebeat/modules.d/*
五、重启 Filebeat 并验证是否生效
⚠️ 注意:在重启前请确保所有 YAML 配置语法无误,否则会导致服务启动失败。
# 重启 Filebeat 服务以应用新配置
sudo systemctl restart filebeat
# 检查服务状态确认已启动无错误
sudo systemctl status filebeat
# 查看 Filebeat 日志确认无报错信息
sudo tail -f /var/log/filebeat/filebeat.log | grep ERROR || echo "No errors found"
六、检查 Elasticsearch 索引是否已正确写入数据
# 确认新索引已生成并包含数据:
curl -X GET "localhost:9200/_cat/indices?v" | grep custom_module
# 查看具体文档内容:
curl -X GET "localhost:9200/custom_module-*/_search?pretty"
✅ 成功提示:
- "status": "ok"
- "hits.total": 正确计数
- "fields.custom_field": "This is a custom field"
- "fields.module": "custom_module"
- "fields.service": "custom_service"
❌ 常见错误及排查建议:
- No data ingested: 检查 /var/log/custom_module/*.log 是否有新文件而且权限允许 Filebeat 阅读。
-
Error parsing YAML: 使用在线 YAML 校验工具或运行
systmctl status filebeat --no-pager | grep yaml-error. - No index created: 确认 Elasticsearch 正常运行且 host 与端口正确。
- Pipelines missing in Logstash :** 若通过 Logstash 中转,请确认相应 pipeline 已正确配置并开启。
& 快速部署 Checklist 🚀
- 创建业务目录 & 示例日志文件 ✔️
- 编写完整的 module.yml 配置 ✔️
- 在主 config 中开启 modules path ✔️
- 重启 Filebeat 并检查状态 ✔️
- 验证 Elasticsearch 索引及文档 ✔️

