发布时间:2026/9/4 0:05: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/9/4 0:05:58

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

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

2026/9/4 0:05:58

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

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

2026/9/4 0:05:58

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

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

2026/9/4 0:51:03

从全连接到 Transformer 踩了 3 个月坑,我总结的 AI 开发最佳实践

从全连接到 Transformer 踩了 3 个月坑,我总结的 AI 开发最佳实践 周三下午,产品经理走到我工位前:“下周上线一个自动给客服工单打标签的功能,你先用神经网络试试?”我当时想,不就是搭个多分类模型嘛,先把每条工单文本转成 one-hot,再全连接往上堆就完了。 结果第一版模型刚…

2026/9/4 0:51:03

犬类行为与可穿戴运动传感器分类数据集

摘要:数据集用于基于可穿戴运动传感器识别犬类日常行为,共采集45只中大型犬在半受控环境中的活动数据。数据集概述数据集用于基于可穿戴运动传感器识别犬类日常行为,共采集45只中大型犬在半受控环境中的活动数据。实验在铺设人工草坪的犬类运…

2026/9/4 0:51:03

2026多轮晋级投票怎么设置?从初赛到决赛完整操作指南

2026 年很多大型投票活动都会搞多轮晋级,初赛、复赛、决赛一轮一轮筛,既公平又能保持活动热度,但很多主办方第一次办多轮活动都踩过坑:初赛建一个活动、复赛建一个、决赛再建一个,选手信息导了三遍,还把晋级…

2026/9/4 0:51:02

生成式 AI 模型训到过拟合,换三次架构不如一次数据清洗

生成式 AI 模型训到过拟合,换三次架构不如一次数据清洗 灰度上线第三天,监控报警就响了--我们的生成式 AI 质检系统把一批良品打上了「缺陷」标签,产线被迫停摆十分钟。我盯着验证集上 0.98 的 AUC 直发蒙,线上准确率却只剩 71%。这已经是第三版模型,从 ResNet 换到 ViT 再到 …

2026/9/4 0:46:02

北京华帝热水器维修-欧米到家处理VATTI不点火、不加热、不出热水、水温忽冷忽热、漏水、显示故障代码常见故障

北京热水器出现故障,建议先判断类型再安排维修热水器是北京家庭使用频率较高的家电之一,尤其进入秋冬季后,燃气热水器、电热水器的使用时间明显增加,不点火、不加热、不出热水、水温忽冷忽热、漏水、显示故障代码、加热速度慢等问…

2026/9/3 18:28:26

vSound小提琴数字处理器实操指南:从接线到演出的完整配置

电小提琴或者原声小提琴插电演出,第一个绕不开的坎就是声音难听。原声琴的共鸣和空气感一旦进了拾音器,出来的往往是一坨干瘪、发尖、带着奇怪塑料味的信号。我当初第一次把琴接上乐队调音台,直接被主唱吐槽"你这声音像在锯钢丝"。…

2026/9/3 14:29:47

传感器接口IC如何攻克生物化学传感的微弱信号难题?

1. 从电极到比特流:为什么生物化学传感必须依赖专用接口IC 做生物化学传感的人都有过类似的经历:明明传感器本身性能很好,信号输出却一塌糊涂——噪声大、漂移明显、重复性差,怎么调都达不到预期。很多时候问题并不在传感器&#…

2026/9/3 14:30:35

STM32F411CEU6多通道ADC采集:扫描模式+DMA实现详解

1. 多通道 ADC 的用武之地把“Multichannel ADC”和“STM32F411CEU6”这两个关键字放在一起,其实就是嵌入式开发里最常遇到的一类需求:用一块不算贵的 MCU,同时采集多路模拟信号。STM32F411CEU6 是 48 引脚的 Cortex-M4F 主控,主频…

2026/9/4 0:00:58

STM32H743 SPI从机DMA双缓冲通信实战

简介:本资源是面向嵌入式开发工程师与STM32进阶学习者的SPI DMA双机通信从机端完整实现方案,聚焦STM32H743高性能Cortex-M7单片机在工业控制与高速数据交互场景下的从机通信开发痛点。压缩包含1355个文件,主体为599个C源码与321个头文件&…

2026/9/4 0:00:58

CPU开盖降温教程:20元成本让温度直降30度的原理与实践

最近很多朋友都在抱怨,自己的电脑一到夏天就变成"烤箱",玩游戏时CPU温度动不动就飙到90度以上,风扇噪音堪比直升机。更让人头疼的是,明明配置不错,却因为高温降频导致性能大打折扣。如果你也遇到了类似问题&…

2026/9/4 0:00:58

ArkTS 表单工程:场地预约页的三态场次 Grid 与校验

ArkTS 表单工程:场地预约页的三态场次 Grid 与校验 App 14「运动场地预约」场地 Tab(Func1Tab),是整 App 交互最丰富的页面——场地横向切换 三色图例 渐变预约预览卡 快捷模板 今日场次 Grid(可选/已选/已满三态&…

2026/9/3 20:43:36

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/3 17:51:43

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/3 21:06:57

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…