Debian 上 Filebeat 日志备份与恢复
一 备份范围与准备
- 明确备份对象:
- 配置:/etc/filebeat/filebeat.yml(主配置)。
- 运行状态:/var/lib/filebeat/(包含 registry/state,用于记录已采集位置,强烈建议纳入备份)。
- 自身日志:/var/log/filebeat/(Filebeat 自身运行日志,便于排障)。
- 准备备份目的地:选择本地目录(如 /backup/filebeat/)或远程存储(如 NFS/对象存储),并确保有足够的磁盘空间与访问权限。
- 建议在备份期间对 Filebeat 做短暂停机或使用文件系统快照,避免状态不一致;停机命令:sudo systemctl stop filebeat;恢复后启动:sudo systemctl start filebeat。
二 手动备份步骤
- 备份配置
- 单文件拷贝:sudo cp /etc/filebeat/filebeat.yml /backup/filebeat/filebeat.yml.bak-$(date +%F)
- 打包归档:sudo tar -czvf /backup/filebeat-config-$(date +%F).tar.gz -C /etc/filebeat filebeat.yml
- 备份状态(registry/state)
- 目录拷贝:sudo rsync -a /var/lib/filebeat/ /backup/filebeat/var-lib-filebeat-$(date +%F)/
- 备份自身日志
- 打包归档:sudo tar -czvf /backup/filebeat-logs-$(date +%F).tar.gz /var/log/filebeat/
- 校验(可选)
- 查看打包内容:tar -tzvf /backup/filebeat-*.tar.gz
- 查看拷贝结果:ls -l /backup/filebeat/
以上路径与命令适用于 Debian 上的常见 Filebeat 安装布局。
三 自动化备份脚本与定时任务
- 备份脚本示例(/usr/local/bin/backup_filebeat.sh)
- 赋权与定时任务
- 说明:如需增量备份,可将 tar 替换为 rsync(如:rsync -a --delete /var/lib/filebeat/ …),或使用 rsnapshot/Bacula 等备份工具。
四 恢复步骤
- 恢复配置
- 覆盖回写:sudo cp /backup/filebeat/filebeat.yml.bak-YYYY-MM-DD /etc/filebeat/filebeat.yml
- 语法校验:sudo filebeat test config -e
- 恢复状态(registry/state)
- 建议先停服务:sudo systemctl stop filebeat
- 解包覆盖:sudo tar -xzvf /backup/filebeat/filebeat-state-YYYY-MM-DD.tar.gz -C /
- 权限修正(如属主非 filebeat:filebeat):sudo chown -R filebeat:filebeat /var/lib/filebeat
- 恢复自身日志(可选)
- 解包到原目录:sudo tar -xzvf /backup/filebeat/filebeat-logs-YYYY-MM-DD.tar.gz -C /
- 启动与验证
- 启动:sudo systemctl start filebeat
- 状态与日志:sudo systemctl status filebeat;journalctl -u filebeat -f
恢复配置后执行配置测试,恢复状态前停机,恢复后校验服务状态与日志输出,可确保采集位置与运行状态一致。
五 若日志已输出到 Elasticsearch 的备份方案
- 当使用 output.elasticsearch 时,日志主要落地在 Elasticsearch 而非本机文件,需对 ES 做索引/快照级备份:
- 创建快照仓库(示例为 FS 类型):
curl -X PUT "localhost:9200/_snapshot/my_backup" -H 'Content-Type: application/json' -d'
{
"type": "fs",
"settings": {
"location": "/var/lib/elasticsearch-backup"
}
}'
- 创建快照:
curl -X PUT "localhost:9200/_snapshot/my_backup/snapshot_1?wait_for_completion=true"
- 恢复快照:
curl -X POST "localhost:9200/_snapshot/my_backup/snapshot_1/_restore"
- 说明:快照仓库类型与路径需与你的 ES 环境与权限匹配,生产环境建议使用更可靠的 S3/HDFS 等仓库类型。