一,业务背景
数据的备份(恢复)对于企业来说,是挽救生命的最后一根稻草;也是运维日常工作的一个重要组成部分。目前流行的方式是采用脚本对数据进行备份,并同步到远端进行异地备份。一旦需要备份的数据多了后,会面临以下问题:
1.备份是否成功,需要在每个脚本里进行判断并发送邮件,一旦涉及邮箱账号密码调整需要每个脚本调整,容易遗漏;
- 对于日常审计要求,如何快速提供备份操作结果是个麻烦事情(登录到机器一个个的统计记录,容易吐);
之前看《devops最佳实践》一书中一个案例提及,他们公司所有服务器操作记录都集中存放到es,方便集中管理和IT审计。恰巧之前才在公司实现通过elk采集nginx日志,并通elastalert实现基于状态码和后端响应时间记录出现次数的把傲娇。并且kibana可以制作表格视图并导出,这样一来就解决日常备份的两个痛点。
二,方案思路:
1,备份脚本任务一开始便向es中插入一条记录,该记录包括:备份开始时间,备份主机,备份脚本的完整路径和文件名,备份来源,备份目的,备份状态,备份结束时间,文件大小等;并记录插入成功的doc_id;
2,备份结束后,更新该条记录的字段态,主要是更新结束时间,备份状态(默认failed改为success),文件大小等。
3, 备注:
A,通过开始和结束时间,计算出总的备份时间,方便调整更新窗口;
B,通过对备份状态字段的值判断,如果为failed则发送邮件报警;
C,通过文件大小,可以评估磁盘容量使用情况,方便进行容量规划;
三, 实现脚本(数据库备份为例)
由于整体脚本比较简单,只列shell插入es部分脚本
1,开始插入记录
`
curl -s -H ‘Content-Type: application/json‘ XPUT http://$esUrl/backup_$(date +%Y%m%d)/log/ -d ‘
{基于elasticsearch和elastalert的备份状态检查
原文地址:https://blog.51cto.com/emulator/2370949
时间: 2025-01-17 02:29:19