备份恢复监控告警
本文介绍备份恢复的监控和告警,包括如何部署监控、监控指标及常用告警项。
日志备份监控
日志备份支持功能使用 Prometheus 采集监控指标,目前所有的监控指标都内置在 TiKV 中。
部署监控
通过 TiUP 部署的集群,Prometheus 会自动采集相关的监控指标。
手动部署的集群,需要参考 TiDB 集群监控部署,在 Prometheus 配置文件的
scrape_configs中加入 TiKV 相关的 job。
配置 Grafana
通过 TiUP 部署的集群,Grafana 中内置了 Backup log 的面板。
手动部署的集群,需要参考导入 Grafana 面板,将 tikv_details.json 文件上传到 Grafana 中。之后在 TiKV-Details Dashboard 中找到 Backup Log 面板即可。
监控指标
日志备份告警
配置告警
目前 Point-in-time recovery (PITR) 还未内置告警项,本节介绍如何在 PITR 中配置告警项,以及推荐的告警项规则。
告警规则配置可以参考下面的步骤:
- 在 Prometheus 所在节点上创建告警规则的配置文件(例如
pitr.rules.yml),参考 Prometheus 文档 和下列推荐的告警项及配置样例填写告警规则。 - 在 Prometheus 配置文件中的
rule_files字段填入告警规则文件的路径。 - 通过向 Prometheus 进程发送
SIGHUP信号(kill -HUP pid)或向http://prometheus-addr/-/reload发送 HTTPPOST请求(使用 HTTP 请求方式前需要在启动 Prometheus 时指定--web.enable-lifecycle参数)。
以下为推荐的告警项配置:
LogBackupRunningRPOMoreThan10m
- 表达式:
max(time() - tidb_log_backup_last_checkpoint / 262144000) by (task) / 60 > 10 and max(tidb_log_backup_last_checkpoint) by (task) > 0 and max(tikv_log_backup_task_status) by (task) == 0 - 告警级别:warning
- 说明:日志数据超过 10 分钟未持久化到存储中,该配置项主要用于提醒,大部分情况下,不会影响日志备份。
Prometheus 中的配置样例如下:
groups:
- name: PiTR
rules:
- alert: LogBackupRunningRPOMoreThan10m
expr: max(time() - tidb_log_backup_last_checkpoint / 262144000) by (task) / 60 > 10 and max(tidb_log_backup_last_checkpoint) by (task) > 0 and max(tikv_log_backup_task_status) by (task) == 0
labels:
severity: warning
annotations:
summary: RPO of log backup is high
message: RPO of the log backup task {{ $labels.task }} is more than 10m
LogBackupRunningRPOMoreThan30m
- 表达式:
max(time() - tidb_log_backup_last_checkpoint / 262144000) by (task) / 60 > 30 and max(tidb_log_backup_last_checkpoint) by (task) > 0 and max(tikv_log_backup_task_status) by (task) == 0 - 告警级别:critical
- 说明:日志数据超过 30 分钟未持久化到存储中,出现该告警表示极有可能出现异常,可以查看 TiKV 日志定位原因。
LogBackupPausingMoreThan2h
- 表达式:
max(time() - tidb_log_backup_last_checkpoint / 262144000) by (task) / 3600 > 2 and max(tidb_log_backup_last_checkpoint) by (task) > 0 and max(tikv_log_backup_task_status) by (task) == 1 - 告警级别:warning
- 说明:日志备份任务处于暂停状态超过 2 小时,该告警主要用于提醒,建议尽早执行
br log resume恢复任务。
LogBackupPausingMoreThan12h
- 表达式:
max(time() - tidb_log_backup_last_checkpoint / 262144000) by (task) / 3600 > 12 and max(tidb_log_backup_last_checkpoint) by (task) > 0 and max(tikv_log_backup_task_status) by (task) == 1 - 告警级别:critical
- 说明:日志备份任务处于暂停状态超过 12 小时,应尽快执行
br log resume恢复任务。任务处于暂停状态时间过长会有数据丢失的风险。
LogBackupFailed
- 表达式:
max(tikv_log_backup_task_status) by (task) == 2 and max(tidb_log_backup_last_checkpoint) by (task) > 0 - 告警级别:critical
- 说明:日志备份任务进入失败状态,需要执行
br log status查看失败原因,如有必要还需进一步查看 TiKV 日志。
LogBackupGCSafePointExceedsCheckpoint
- 表达式:
min(tidb_log_backup_last_checkpoint) by (instance) - max(tikv_gcworker_autogc_safe_point) by (instance) < 0 - 告警级别:critical
- 说明:部分数据在备份前被 GC,此时已有部分数据丢失,极有可能对业务产生影响。