基于elasticsearch和elastalert的备份状态检查
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于elasticsearch和elastalert的备份状态检查相关的知识,希望对你有一定的参考价值。
一,业务背景数据的备份(恢复)对于企业来说,是挽救生命的最后一根稻草;也是运维日常工作的一个重要组成部分。目前流行的方式是采用脚本对数据进行备份,并同步到远端进行异地备份。一旦需要备份的数据多了后,会面临以下问题:
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 ‘
2,更新记录
其中变量doc_id为前一步中 /tmp/${backup_name}.json 存放的插入es记录的返回结果(用jq进行json解析)
`
curl -s -H ‘Content-Type: application/json‘ XPUT http://$esUrl/backup_$(date +%Y%m%d)/log/$doc_id/_update -d ‘
{"doc":{"last_time":"‘"${last_time}"‘","end_time":"‘"${endYmd}T${endHMS}+08:00"‘","backup_status":"success","backup_size":"‘"${backup_size}"‘"}}‘
`
四,es 数据结果
head插件数据结果查询:
五,elastalert报警
elastalert安装可以参考网上文档,配置报警规则:查询最近12小时以内记录,如果备份状态为failed的记录出现1次,则发送报警邮件,规则的如下:
name: backup
type: frequency
attach_related: true
index: backup
num_events: 1 #出现次数
timeframe:
hours: 12 #查询最近12小时
filter:
- term:
backup_status.keyword: failed #备份状态为 failed
alert: - "email"
alert_subject: "Elastalert {0} {1} {2} {3} option failed occurred"
alert_subject_args: - "backup_host"
- "command_info"
- "backup_type"
- "name"
alert_text_type: exclude_fields
alert_text: |
alert_text_args: - "backup_host"
- "backup_source"
- "backup_type"
- "command_info"
- "backup_status"
include: ["command_info","backup_host","backup_type"]
top_count_keys: ["command_info","backup_host","backup_type"]
raw_count_keys: true
email: - "[email protected]"
六,报警邮件截图
由于是测试,所以我备份记录状态全是失败.
以上是关于基于elasticsearch和elastalert的备份状态检查的主要内容,如果未能解决你的问题,请参考以下文章
干货基于 Mahout 和 Elasticsearch 推荐引擎组件解析
深入了解推荐引擎组件(基于Apache Mahout和Elasticsearch)