Prometheus集群容灾备份与故障切换方案

发布时间:2026/11/5 22:12:58

Prometheus集群容灾备份与故障切换方案 Prometheus集群容灾备份与故障切换方案技术栈Kubernetes v1.32.13 Rocky Linux 8.6 Prometheus Containerd 1.7.x操作环境 / 对接原理 / 详细步骤 / 完整命令 / 配置文件 / 验证流程 / 排错方案Prometheus集群容灾备份与故障切换方案操作环境K8s 集群 3 节点k8s-master(192.168.1.10), k8s-node1(192.168.1.11), k8s-node2(192.168.1.12)K8s 版本 v1.32.13监控组件Prometheus监控已部署对应监控组件 PodPrometheus 已配置服务发现Grafana 已对接数据源操作系统 Rocky Linux 8.6容器运行时 Containerd 1.7.x已配置监控专用命名空间 monitoring监控数据持久化已配置 PVC 绑定数据留存策略已规划监控组件资源限制已设置已配置 RBAC 权限监控组件具备集群资源读取权限网络策略已放行监控通信端口对接原理Prometheus集群容灾备份与故障切换方案是 K8s 集群监控告警系统运维中的核心操作场景。K8s 监控体系通过指标采集Exporter、数据存储Prometheus TSDB、可视化展示Grafana、告警管理Alertmanager四大核心组件实现全链路监控。Prometheus监控作为监控体系的具体组件负责指标采集、数据存储、可视化展示或告警分发。运维操作的核心目标是确保监控系统的可用性、数据质量、告警精准度和性能稳定性通过规范化的部署配置确保监控组件稳定运行通过精细化的指标采集确保数据完整准确通过合理的告警规则确保故障及时发现不误报通过性能调优确保监控系统不成为瓶颈通过高可用和容灾备份确保监控不中断。所有操作需遵循业务无感知原则对监控系统的变更采用灰度和滚动方式避免影响业务监控。详细步骤1. 监控现状盘点与组件状态检查# 1. 检查集群节点状态 kubectl get nodes -o wide kubectl get pods -n monitoring -o wide 2/dev/null || kubectl get pods -A | grep -E prometheus|grafana|alertmanager|exporter ​ # 2. 检查监控组件状态 kubectl get pods -n monitoring -o wide 2/dev/null kubectl get svc -n monitoring -o wide 2/dev/null kubectl get pvc -n monitoring -o wide 2/dev/null ​ # 3. 检查 Prometheus 状态 kubectl get pods -n monitoring -l appprometheus -o wide 2/dev/null kubectl logs -n monitoring -l appprometheus --tail30 2/dev/null | tail -20 ​ # 4. 检查 Grafana 状态 kubectl get pods -n monitoring -l appgrafana -o wide 2/dev/null kubectl logs -n monitoring -l appgrafana --tail20 2/dev/null | tail -10 ​ # 5. 检查 Alertmanager 状态 kubectl get pods -n monitoring -l appalertmanager -o wide 2/dev/null kubectl logs -n monitoring -l appalertmanager --tail20 2/dev/null | tail -10 ​ # 6. 检查 Exporter 状态 kubectl get pods -A | grep -E node-exporter|cadvisor|kube-state-metrics kubectl get svc -A | grep -E node-exporter|cadvisor|kube-state-metrics ​ # 7. 检查监控数据采集状态 # Prometheus Targets 状态 # kubectl port-forward -n monitoring svc/prometheus 9090:9090 # curl -s http://localhost:9090/api/v1/targets | jq .data.activeTargets[] | {job, health, lastError} | head -50 ​ # 8. 导出监控配置备份 kubectl get cm -n monitoring -o yaml /tmp/monitor_cm_backup_$(date %Y%m%d).yaml 2/dev/null kubectl get secret -n monitoring -o yaml /tmp/monitor_secret_backup_$(date %Y%m%d).yaml 2/dev/null kubectl get pvc -n monitoring -o yaml /tmp/monitor_pvc_backup_$(date %Y%m%d).yaml 2/dev/null echo 监控配置已备份到 /tmp/ ​2. 制定操作方案与备份防护# 1. 备份监控配置操作前必做 kubectl get cm -n monitoring -o yaml /tmp/monitor_cm_backup_$(date %Y%m%d_%H%M%S).yaml 2/dev/null kubectl get secret -n monitoring -o yaml /tmp/monitor_secret_backup_$(date %Y%m%d_%H%M%S).yaml 2/dev/null kubectl get deployment,statefulset,daemonset -n monitoring -o yaml /tmp/monitor_workload_backup_$(date %Y%m%d_%H%M%S).yaml 2/dev/null kubectl get pvc -n monitoring -o yaml /tmp/monitor_pvc_backup_$(date %Y%m%d_%H%M%S).yaml 2/dev/null ​ # 2. 记录当前监控状态 echo 监控状态记录 $(date) /tmp/monitor_status_$(date %Y%m%d).txt echo --- 监控组件 Pod --- /tmp/monitor_status_$(date %Y%m%d).txt kubectl get pods -n monitoring -o wide 2/dev/null /tmp/monitor_status_$(date %Y%m%d).txt echo --- 监控 Service --- /tmp/monitor_status_$(date %Y%m%d).txt kubectl get svc -n monitoring -o wide 2/dev/null /tmp/monitor_status_$(date %Y%m%d).txt echo --- 监控 PVC --- /tmp/monitor_status_$(date %Y%m%d).txt kubectl get pvc -n monitoring -o wide 2/dev/null /tmp/monitor_status_$(date %Y%m%d).txt cat /tmp/monitor_status_$(date %Y%m%d).txt ​ # 3. 制定操作方案 cat /tmp/monitor_operation_plan.md EOF # 监控操作方案 ## 一、操作目标 ## 二、影响范围评估 ## 三、操作步骤与时间窗口 ## 四、回滚方案 ## 五、验证标准 ## 六、风险点与应对措施 EOF echo 操作方案模板已创建 ​ # 4. 确认业务窗口 echo 当前时间: $(date) echo 建议在业务低峰期执行监控操作避免影响业务监控 ​ # 5. 通知相关业务方 # echo 监控运维操作通知 | mail -s 监控运维通知 adminexample.com ​3. 执行监控组件配置操作# 1. 检查监控组件配置 # Prometheus 配置 kubectl get cm -n monitoring prometheus-config -o yaml 2/dev/null | head -80 # Grafana 配置 kubectl get cm -n monitoring grafana-config -o yaml 2/dev/null | head -50 # Alertmanager 配置 kubectl get cm -n monitoring alertmanager-config -o yaml 2/dev/null | head -50 ​ # 2. 检查监控组件日志 # Prometheus 日志 kubectl logs -n monitoring -l appprometheus --tail50 2/dev/null | tail -30 # Grafana 日志 kubectl logs -n monitoring -l appgrafana --tail30 2/dev/null | tail -20 # Alertmanager 日志 kubectl logs -n monitoring -l appalertmanager --tail30 2/dev/null | tail -20 ​ # 3. 检查 Prometheus 配置语法 # kubectl exec -n monitoring prometheus-0 -- promtool check config /etc/prometheus/prometheus.yml ​ # 4. 检查 Alertmanager 配置语法 # kubectl exec -n monitoring alertmanager-0 -- amtool check-config /etc/alertmanager/alertmanager.yml ​ # 5. 执行具体监控配置操作根据标题调整 echo 执行监控组件具体配置操作... echo 请根据操作方案执行具体步骤 ​ # 6. 应用监控配置变更 # kubectl apply -f /tmp/monitor_config.yaml # kubectl rollout restart deployment/prometheus -n monitoring # kubectl rollout restart deployment/grafana -n monitoring # kubectl rollout restart statefulset/alertmanager -n monitoring ​ # 7. 等待监控组件重启完成 kubectl rollout status deployment/prometheus -n monitoring --timeout120s 2/dev/null kubectl rollout status deployment/grafana -n monitoring --timeout120s 2/dev/null kubectl rollout status statefulset/alertmanager -n monitoring --timeout120s 2/dev/null echo 监控组件重启完成 ​4. 验证监控数据采集与业务无感知# 1. 验证监控组件状态 kubectl get pods -n monitoring -o wide 2/dev/null # 预期所有监控组件 Pod RunningREADY 正常 ​ # 2. 验证 Prometheus 数据采集 # 检查 Targets 状态 # kubectl port-forward -n monitoring svc/prometheus 9090:9090 # sleep 5 # curl -s http://localhost:9090/api/v1/targets | jq .data.activeTargets[] | select(.health!up) | {job, health, lastError} # 预期所有 Targets 状态为 up无异常 ​ # 3. 验证 Prometheus 查询 # curl -s http://localhost:9090/api/v1/query?queryup | jq .data.result[] | {metric: .metric.job, value: .value[1]} | head -20 # 预期查询返回正常数据 ​ # 4. 验证 Grafana 访问 # kubectl port-forward -n monitoring svc/grafana 3000:3000 # sleep 5 # curl -s http://admin:adminlocalhost:3000/api/health # 预期Grafana 健康检查正常 ​ # 5. 验证 Grafana 数据源 # curl -s http://admin:adminlocalhost:3000/api/datasources | jq .[].name # 预期Prometheus 数据源已配置 ​ # 6. 验证 Alertmanager 状态 # kubectl port-forward -n monitoring svc/alertmanager 9093:9093 # sleep 5 # curl -s http://localhost:9093/api/v2/status | jq .cluster # 预期Alertmanager 集群状态正常 ​ # 7. 验证告警规则 # curl -s http://localhost:9090/api/v1/rules | jq .data.groups[] | {name, rules: [.rules[] | {name, health}]} | head -50 # 预期告警规则已加载状态健康 ​ # 8. 清理 port-forward # pkill -f port-forward 2/dev/null echo 验证完成 ​5. 监控告警规则与面板配置# 1. 配置监控告警规则 # 检查现有告警规则 # kubectl get cm -n monitoring prometheus-rules -o yaml 2/dev/null | head -100 ​ # 2. 配置 Alertmanager 告警路由 # 检查 Alertmanager 配置 # kubectl get cm -n monitoring alertmanager-config -o yaml 2/dev/null ​ # 3. 配置监控告警渠道 # 企业微信/钉钉/邮件/短信告警渠道配置 # 检查 Secret 中的告警渠道配置 # kubectl get secret -n monitoring alertmanager-secret -o yaml 2/dev/null ​ # 4. 配置监控面板 # 检查 Grafana 数据源和面板 # kubectl get cm -n monitoring grafana-dashboards -o yaml 2/dev/null | head -50 ​ # 5. 配置监控数据持久化 # 检查 PVC 绑定状态 kubectl get pvc -n monitoring -o wide 2/dev/null # 预期PVC 已 Bound数据持久化正常 ​ # 6. 配置监控组件资源限制 # 检查 Deployment/StatefulSet 资源限制 kubectl get deployment -n monitoring -o jsonpath{.items[*].spec.template.spec.containers[*].resources} 2/dev/null kubectl get statefulset -n monitoring -o jsonpath{.items[*].spec.template.spec.containers[*].resources} 2/dev/null ​ # 7. 配置监控组件高可用 # 检查副本数和反亲和性 kubectl get deployment -n monitoring -o jsonpath{.items[*].spec.replicas} 2/dev/null kubectl get statefulset -n monitoring -o jsonpath{.items[*].spec.replicas} 2/dev/null ​ # 8. 配置监控组件日志轮转 # 检查日志配置 kubectl get cm -n monitoring -o name 2/dev/null | head -20 ​6. 验证操作结果与生成报告# 1. 验证监控组件状态 kubectl get pods -n monitoring -o wide 2/dev/null # 预期所有监控组件 Pod RunningREADY 正常 ​ # 2. 验证监控数据采集 # 检查 Prometheus Targets # kubectl port-forward -n monitoring svc/prometheus 9090:9090 # sleep 5 # curl -s http://localhost:9090/api/v1/targets | jq .data.activeTargets | length # 预期Targets 数量符合预期 ​ # 3. 验证告警规则 # curl -s http://localhost:9090/api/v1/rules | jq .data.groups | length # 预期告警规则组已加载 ​ # 4. 验证 Grafana 面板 # curl -s http://admin:adminlocalhost:3000/api/search | jq .[].title | head -20 # 预期监控面板已配置 ​ # 5. 验证 Alertmanager 告警 # curl -s http://localhost:9093/api/v2/alerts | jq length # 预期告警状态正常 ​ # 6. 验证监控数据持久化 kubectl get pvc -n monitoring -o wide 2/dev/null # 预期PVC Bound数据持久化正常 ​ # 7. 验证监控组件资源使用 kubectl top pods -n monitoring 2/dev/null # 预期资源使用在合理范围内 ​ # 8. 生成操作报告 echo 监控操作报告 /tmp/monitor_operation_report.txt echo 操作时间: $(date) /tmp/monitor_operation_report.txt echo 监控组件 Pod 数: $(kubectl get pods -n monitoring --no-headers 2/dev/null | wc -l) /tmp/monitor_operation_report.txt echo 异常 Pod: $(kubectl get pods -n monitoring --no-headers 2/dev/null | grep -v Running | grep -v NAME | wc -l) /tmp/monitor_operation_report.txt echo PVC 数: $(kubectl get pvc -n monitoring --no-headers 2/dev/null | wc -l) /tmp/monitor_operation_report.txt echo Service 数: $(kubectl get svc -n monitoring --no-headers 2/dev/null | wc -l) /tmp/monitor_operation_report.txt echo ConfigMap 数: $(kubectl get cm -n monitoring --no-headers 2/dev/null | wc -l) /tmp/monitor_operation_report.txt cat /tmp/monitor_operation_report.txt ​ # 9. 清理 port-forward # pkill -f port-forward 2/dev/null ​验证流程# 1. 监控组件状态验证 kubectl get pods -n monitoring -o wide 2/dev/null # 预期所有监控组件 Pod RunningREADY 正常 ​ # 2. Prometheus 数据采集验证 # kubectl port-forward -n monitoring svc/prometheus 9090:9090 # sleep 5 # curl -s http://localhost:9090/api/v1/targets | jq .data.activeTargets[] | select(.health!up) | {job, health} # 预期所有 Targets 状态 up ​ # 3. Prometheus 查询验证 # curl -s http://localhost:9090/api/v1/query?queryup | jq .data.result | length # 预期查询返回正常数据 ​ # 4. Grafana 访问验证 # curl -s http://admin:adminlocalhost:3000/api/health # 预期Grafana 健康 ​ # 5. Alertmanager 状态验证 # curl -s http://localhost:9093/api/v2/status | jq .cluster.status # 预期Alertmanager 集群正常 ​ # 6. 监控数据持久化验证 kubectl get pvc -n monitoring -o wide 2/dev/null # 预期PVC Bound ​ # 7. 监控组件资源验证 kubectl top pods -n monitoring 2/dev/null # 预期资源使用合理 ​ # 8. 操作报告验证 cat /tmp/monitor_operation_report.txt # 预期报告包含操作前后对比 ​排错方案Prometheus 启动失败检查配置文件语法、PVC 挂载、权限、端口冲突、镜像版本、资源限制Prometheus 采集失败 Target Down检查目标服务状态、网络连通性、防火墙端口、RBAC 权限、服务发现配置Prometheus 内存溢出 OOM检查指标基数、采集频率、保留时间、内存限制、TSDB 配置、查询优化Prometheus CPU 占用过高检查高基数指标、复杂查询、采集任务数量、规则评估频率、资源限制Prometheus 磁盘 IO 打满检查 TSDB 写入、压缩、保留策略、磁盘性能、PVC 容量、IO 调度器Prometheus 配置热更新失败检查配置文件语法、reload 接口、配置校验、ConfigMap 更新、Pod 重启策略Prometheus 高可用数据不一致检查远程读写、联邦集群、数据同步、时间漂移、存储配置Prometheus 服务发现失败检查 RBAC 权限、API Server 连通性、服务发现配置、标签选择器、网络策略
延伸阅读

更多相关文章

2026/11/5 13:49:12

多K8s集群统一监控汇聚方案落地

多K8s集群统一监控汇聚方案落地技术栈:Kubernetes v1.32.13 Rocky Linux 8.6 监控告警系统 Containerd 1.7.x操作环境 / 对接原理 / 详细步骤 / 完整命令 / 配置文件 / 验证流程 / 排错方案多K8s集群统一监控汇聚方案落地操作环境K8s 集群 3 节点:k8s…

2026/11/5 22:12:57

MiniMax H3 LoRA 4步加速:ComfyUI零插件部署全指南

这篇内容其实是很多同学最近在折腾 MiniMax H3 本地推理时都会遇到的问题:LoRA 权重拿到了,加速方案也看到了,但往 ComfyUI 里一拖,要么依赖某个自定义节点,要么报一堆版本兼容错误。尤其是这类“加速型 LoRA”&#x…

2026/11/2 1:13:15

论文降重避坑指南:如何识别不可靠服务并建立可控修改流程

别让论文降重服务坑了你:识别不可靠服务的实用指南 在写毕业论文的过程中,很多同学都会遇到论文降重或文本改写的需求。为了避免重复率过高,许多学生选择使用各种在线服务。然而,市面上充斥着各类不可靠的降重服务,稍…

2026/11/5 16:51:33

EasyU优启通PE维护盘实战指南:制作、启动与核心操作全解析

1. 为什么一个PE维护盘值得单独拿出来聊装系统、修引导、救数据、清病毒,这些活儿但凡干过几次的人都知道,真正决定效率的往往不是你手速多快,而是手边那套PE环境靠不靠谱。EasyU(圈内习惯叫优启通)就是在这个场景下被…

2026/11/5 16:26:13

Rust原来很简单二:所有权系统

Part 2 核心篇 —— 所有权系统 本篇覆盖 第 6 ~ 10 章:所有权、借用与引用、生命周期、字符串与切片、内存模型。 ⚠️ 这是全书最重要的一篇。 把它吃透,Rust 从此“很简单”;跳过它,你会处处碰壁。请慢下来,动手敲每一段代码。 第 6 章 所有权:Rust 的第一性原理 6…

2026/11/5 15:00:49

基于Hadoop+Spark的民宿智能推荐系统设计与实现

1. 项目概述:大数据时代的民宿智能推荐这个毕业设计项目融合了当前大数据领域最主流的技术栈,构建了一个完整的民宿推荐系统解决方案。作为一名长期从事大数据系统开发的工程师,我认为这个选题非常贴合实际应用场景——随着旅游业的复苏和共享…

2026/11/5 14:10:30

ADS122U04IPWR+STM32F427ZI工业级温度测量信号链设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 14:10:30

UART接口24位ADC搭配RS485,解决远距离温度监控难题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 14:10:30

UART接口24位ADC搭配PIC18F46K22的RTD与热电偶测温实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 15:39:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 0:02:07

多智能体协作系统架构设计与实践优化

1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中…

2026/11/5 0:02:07

大模型系统性入门实战指南:从原理到部署微调的全链路路线

提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#…

2026/11/5 0:02:07

鸿蒙文件系统沙箱机制解析与开发实践

1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的…

2026/11/5 15:39:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑