要实现定时备份状态的实时监控看板并秒级触发prometheus告警,关键是将备份行为转化为可量化信号:通过脚本埋点输出exit_code、时间戳、文件大小到textfile_collector;配置prometheus抓取该指标;按退出码和业务语义分级定义告警规则;最后在grafana构建含状态趋势、尺寸水位和摘要卡片的实时看板。

要实现定时备份状态的实时监控看板,并在备份失败或尺寸异常时秒级触发 Prometheus 告警,关键不是“堆指标”,而是把备份行为本身变成可量化、可聚合、可分级响应的信号。核心在于:脚本埋点 + 指标采集 + 分级规则 + 可视化联动。
在备份脚本末尾注入轻量级指标输出
不要依赖 mysqldump 自身日志,而是在执行完成后立刻记录结构化状态到 textfile_collector 目录:
- 用 $? 获取退出码,写入
mysql_backup_last_exit_code - 用 date +%s 记录成功时间戳,写入
mysql_backup_last_success_timestamp - 用 stat -c%s 获取最新备份文件大小(注意处理文件不存在的情况),写入
mysql_backup_last_size_bytes - 确保
/var/lib/prometheus/textfile_collector/backup.prom文件权限对 prometheus 用户可读
配置 Prometheus 抓取 textfile 指标
在 prometheus.yml 的 scrape_configs 中启用 textfile collector:
- 添加 job_name: 'textfile',并设置
static_configs指向/var/lib/prometheus/textfile_collector/ - 确认 Prometheus 启动时加载了该配置,且 logs 中无 permission denied 或 file not found 报错
- 访问
http://<prometheus-ip>:9090/targets</prometheus-ip>查看 textfile job 状态是否为 UP
编写精准告警规则(rules.yml)
避免“一码通吃”,按 exit code 和业务语义分层定义规则:
-
紧急类(需立即响应):exit_code == 2(连接拒绝)或 == 11(I/O 错误),
for: 30s,severity: critical,路由至 oncall 钉钉群 -
排查类(需人工介入):exit_code == 3(权限不足)或 == 4(参数错误),
for: 2m,severity: warning,仅邮件通知 DBA,并在 annotations 中预置诊断命令如SHOW GRANTS FOR 'backup_user'@'%' -
失联类(严重故障):连续两天未成功(
time() - mysql_backup_last_success_timestamp > 172800)且大小为 0,severity: critical,触发企微 @ 主管 + 自动创建 Jira 工单
构建 Grafana 实时看板
使用 Prometheus 数据源,在 Grafana 中新建面板,重点关注三类视图:
- 状态趋势图:用
mysql_backup_last_exit_code绘制时间序列,不同颜色标注 0(成功)、非零(失败) - 尺寸水位图:用
mysql_backup_last_size_bytes展示近 7 天变化,叠加 5% 波动阈值线 - 摘要卡片:显示“最近成功时间”、“上次失败原因”、“当前备份大小 KB”,支持点击跳转到对应日志位置










