在 Debian 上用 Filebeat 收集日志,一般分为 安装 → 配置 → 启动 → 验证 四个步骤。下面给你一个最常见、可直接照做的实战流程,包括 systemd 日志 + 自定义日志 + 输出到 Elasticsearch / Logstash。
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/elastic-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" \
| sudo tee /etc/apt/sources.list.d/elastic-8.x.list
sudo apt update
sudo apt install filebeat -y
配置文件路径:
/etc/filebeat/filebeat.yml
filebeat.inputs:
- type: filestream
enabled: true
paths:
- /var/log/syslog
- /var/log/auth.log
- type: filestream
enabled: true
paths:
- /var/log/myapp/*.log
processors:
- add_host_metadata:
when.not.contains:
tags: forwarded
output.elasticsearch:
hosts: ["localhost:9200"]
username: "elastic"
password: "你的密码"
✅ 如果你 不用 Elasticsearch,可以改成:
output.logstash:
hosts: ["localhost:5044"]
Filebeat 自带 systemd 模块,比直接读文件更规范。
filebeat modules enable system
编辑:
/etc/filebeat/modules.d/system.yml
示例:
- module: system
syslog:
enabled: true
auth:
enabled: true
filebeat test config
filebeat test output
sudo systemctl enable filebeat
sudo systemctl start filebeat
查看状态:
systemctl status filebeat
查看日志:
journalctl -u filebeat -f
- type: filestream
enabled: true
paths:
- /opt/app/logs/*.log
multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
multiline.negate: true
multiline.match: after
json.keys_under_root: true
json.add_error_key: true
如果 Filebeat 无法读取日志:
sudo usermod -aG adm filebeat
sudo usermod -aG systemd-journal filebeat
或临时测试:
sudo chmod 644 /var/log/syslog
curl -X GET "localhost:9200/_cat/indices?v"
filebeat-*| 问题 | 解决 |
|---|---|
| 无数据 | 检查 enabled: true |
| 权限拒绝 | 检查用户组 |
| 数据重复 | 删除 registry |
| 时间不对 | 检查时区 |
apt install filebeat
vim /etc/filebeat/filebeat.yml
filebeat modules enable system
systemctl enable --now filebeat
如果你愿意,我可以帮你:
你现在是 学习环境 还是 生产服务器?