OB 三副本集群,某个 zone 挂了业务还能扛,但告警一堆,怎么优雅处理?

生产环境 3 副本,前段时间一个 zone 的机器维护重启,业务确实没受影响(这点挺好的),但 OCP 上告警响个不停,值班的同学心态有点崩。

想问问大家:

  • 计划内的单 zone 维护,有没有办法提前把告警静默掉?
  • 多副本场景下,哪些告警是可以暂时忽略的,哪些必须处理?
  • 有没有推荐的维护窗口操作 checklist?

谢谢。

1 个赞

@论坛小助手

1 个赞

计划内的单 Zone 维护与告警处理

根据您的描述,您在计划内的单 Zone 维护过程中遇到了告警频繁的问题。为了帮助您更好地处理这种情况,以下是一些推荐的步骤和建议:

1. 提前静默告警

  • OCP 中配置维护窗口:您可以利用 OCP 的维护窗口功能来临时关闭某些告警规则。具体操作是在 OCP 中设定一个维护时间段,在此期间内暂停相关告警的通知。尽管文档没有明确指出如何在 OCP 中设置具体的维护窗口,但通常这类功能会存在于系统配置或者告警管理部分。
  • 调整告警等级:对于那些已知会在维护期间触发的告警,可以临时将它们的严重性降低或直接修改为不通知的状态(参考文档片段2)。例如,通过OCP页面发起的运维任务产生的提醒级别告警可以根据实际需要进行调整。

2. 可忽略 vs 必须处理的告警

  • 在多副本部署环境中,如果只有一个Zone暂时不可用,通常情况下其他可用的副本将继续提供服务。因此:
    • 可暂时忽略的告警:如某个特定Zone状态异常、连接数减少等反映局部故障状况的警告。
    • 必须关注的告警:任何关于剩余可用副本健康状况恶化或整个集群性能下降的告警都应该立即响应。这包括但不限于数据同步延迟增加、读写延迟变高、主副本切换失败等严重问题。

特别地,如果观察到任何可能影响数据一致性的异常情况,则不应忽视,并尽快采取措施避免潜在的数据丢失风险。

3. 推荐的维护Checklist

执行维护操作时,确保按照以下checklist来进行,以最小化对生产环境的影响:

  1. 提前规划:确定维护的具体时间,并通知所有相关人员。
  2. 备份重要数据:尽管OceanBase提供了自动备份机制,但在关键维护之前手动备份核心数据库是一个好习惯。
  3. 停止受影响的Zone:使用Stop Zone命令隔离目标Zone,防止其继续参与负载分配。详情参见隔离Zone。
  4. 监控集群状态:在整个维护过程及之后持续监测集群的表现,确保没有因为单个Zone下线而导致的整体性能退化。
  5. 测试恢复流程:验证一旦维护完成是否能够顺利重新加入该Zone并恢复正常运作。
  6. 记录日志:保留详细的维护日志,以便后续审计或问题追踪。

最后,请记住每次维护后都应回顾整体体验,评估是否有改进的空间,比如进一步优化告警规则以减少不必要的打扰。希望以上信息能帮助到您!如果还有其他疑问或遇到更具体的技术挑战,欢迎随时咨询。

检索到的文档如下:

  1. host_unavailable 主机心跳检测失败
  2. host_operation 主机运维操作提醒
  3. ob_cluster_operation_info OB 集群运维操作提醒
  4. 容灾架构及容灾级别
  5. 告警分组
  6. 告警相关概念
  7. ocp_alarm_detect_timeout OCP 告警规则检测超时
  8. 告警预案处理
  9. ob_host_exists_expired_trans OB 服务器存在悬挂事务
  10. ob_cluster_inspection_not_passed OB集群巡检未通过告警处理建议