Ubuntu 上 Filebeat 日志备份的正确做法
一 核心原则
二 备份日志文件
/var/log/myapp/*.log {
daily
rotate 30
missingok
compress
delaycompress
copytruncate
dateext
dateformat -%Y%m%d
}
sudo tar -czvf /backup/logs-$(date +%F).tar.gz /var/log/myapp
rsync -av --delete /var/log/myapp/ backup@10.0.0.10:/data/backup/logs/
三 备份 Filebeat 配置与状态
sudo systemctl stop filebeat
sudo cp -a /etc/filebeat /backup/filebeat-$(date +%F)
sudo cp -a /var/lib/filebeat/state /backup/filebeat-state-$(date +%F)
sudo systemctl start filebeat
#!/usr/bin/env bash
BACKUP_DIR="/backup/filebeat"
TS=$(date +%F)
mkdir -p "$BACKUP_DIR"
systemctl stop filebeat
tar czf "$BACKUP_DIR/filebeat-config-$TS.tar.gz" -C /etc filebeat
tar czf "$BACKUP_DIR/filebeat-state-$TS.tar.gz" -C /var/lib/filebeat state
systemctl start filebeat
echo "Filebeat backed up at $TS" >> "$BACKUP_DIR/backup.log"
加入定时任务:0 2 * * * /usr/local/bin/backup_filebeat.sh
sudo systemctl stop filebeat
sudo tar xzf /backup/filebeat/filebeat-config-2025-09-01.tar.gz -C /
sudo tar xzf /backup/filebeat/filebeat-state-2025-09-01.tar.gz -C /
sudo systemctl start filebeat
四 若日志已发送到 Elasticsearch 的备份
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"