运维监控平台(Prometheus + Grafana)部署与维护

发布时间:2026/10/29 1:58:05
运维监控平台(Prometheus + Grafana)部署与维护 运维监控平台Prometheus Grafana部署与维护一、监控平台概述1.1 平台定位与整体架构1.2 技术栈说明二、平台部署流程2.1 部署前准备2.2 Prometheus 部署以单套为例2.3 Exporter 部署2.4 Grafana 部署与数据源接入2.5 仪表盘导入六大文件夹2.6 告警链路建议实装2.7 部署验证清单三、部署完成后日常监控查看3.1 Grafana 基础操作3.2 Node Exporter 仪表盘详解最常用3.2.1 总表列含义3.2.2 单机详情面板Resource Details3.3 SSL Certificate Monitor 解读3.4 JVM / HikariCP 解读四、定期巡检流程SOP4.1 每日巡检3~5 分钟4.2 长假/节前专项巡检以 dev-k8s 三 master 为例4.3 巡检独立命令清单逐条可跑4.4 巡检判定与处置表五、常见风险与维护要点5.1 磁盘写满头号风险5.2 内存 vs 磁盘增长机制差异重要勿误判5.3 etcd 健康与时钟同步5.4 K8s 组件证书周期5.5 SSL 业务证书续期 SOP六、回滚与应急6.1 变更三件套任何生产写操作前6.2 应急判断表七、文档沉淀与持续优化本文基于一套已落地的企业级监控平台Grafana 统一入口 多套 Prometheus 全量 Exporter整理覆盖部署流程、日常监控查看、定期巡检、面板解读、维护与应急五个阶段。所有命令均标注执行位置可直接复制使用。适合刚接手该平台、或需要补齐 SOP 的运维同学。一、监控平台概述1.1 平台定位与整体架构监控平台解决三件事看得见可视化、报得出告警、查得到排障。本平台采用业界主流的 Prometheus 生态┌────────────── 采集层Exporter──────────────┐ │ node_exporter 每台宿主机 │ │ kube-state-metrics K8s 对象状态 │ │ cAdvisor 容器指标kubelet 内置 │ │ dcgm-exporter GPU 节点DaemonSet │ │ blackbox_exporter HTTP/域名/证书探测 │ │ Micrometer/Jolokia Java 应用 JVM连接池 │ │ ModelArts 采集器 华为云 ModelArts │ └────────────────────┬──────────────────────────┘ ↓ PullPrometheus 主动抓取 ┌────────────── 存储层Prometheus─────────────┐ │ prom-k8s dev-k8s 集群 │ │ prom-k8s-test 测试集群 │ │ prom-ucloud Ucloud 环境 │ │ prom-k8s-ucloud-test Ucloud 测试环境 │ └────────────────────┬──────────────────────────┘ ↓ 查询 ┌────────────── 展示层 ───────────────────────────┐ │ Grafana统一入口仪表盘按文件夹分组 │ └──────────────────────────────────────────────────┘判读技巧在任意仪表盘顶部的数据源变量下拉里能看到prom-k8s / prom-k8s-test / prom-ucloud / prom-k8s-ucloud-test说明后端至少部署了 4 套独立的 Prometheus分别对应不同集群/云环境由同一个 Grafana 统一查询。1.2 技术栈说明组件作用部署形态Prometheus指标时序数据库抓取存储查询二进制 / 容器每环境一套Grafana可视化与看板独立服务本文入口 grafana.example.cnnode_exporter宿主机的 CPU/内存/磁盘/网络/TCPsystemd 或 DaemonSetkube-state-metricsK8s 对象状态Pod/Node/Deploy…集群内 DeploymentcAdvisor容器资源指标kubelet 内置无需单独装dcgm-exporterNVIDIA GPU 指标GPU 节点 DaemonSetblackbox_exporter黑盒探测HTTP/证书/端口独立 DeploymentMicrometer JMX/JolokiaJava 应用 JVM、HikariCP 连接池应用内嵌暴露 /actuator/prometheusAlertmanager告警分发钉钉/飞书/邮件可选建议实装二、平台部署流程2.1 部署前准备规划环境按「每集群/每云一套 Prometheus」划分如 dev-k8s、test、ucloud避免跨云拉取指标。统一版本示例Prometheus 2.45Grafana 10.xnode_exporter 1.6kube-state-metrics 2.9。网络Prometheus → 各 Exporter 端口可达Grafana → 各 Prometheus 9090 可达对外仅暴露 GrafanaHTTPS 登录。配置全部版本化Prometheus 的prometheus.yml、rules、Grafana 的 datasource/dashboard 用 Git 管理禁止手工改线上不存档。2.2 Prometheus 部署以单套为例# 在哪执行Prometheus 所在主机# 1) 下载并解压示例版本wgethttps://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-amd64.tar.gztarxf prometheus-2.45.0.linux-amd64.tar.gz-C/opt/# 2) 主配置文件 /opt/prometheus/prometheus.yml节选cat/opt/prometheus/prometheus.ymlEOF global: scrape_interval: 15s evaluation_interval: 15s rule_files: - /opt/prometheus/rules/*.yml scrape_configs: - job_name: node-exporter static_configs: - targets: [10.0.0.11:9100,10.0.0.12:9100] # 各宿主机 node_exporter - job_name: kubernetes-apiservers kubernetes_sd_configs: [{role: endpoints}] EOF# 3) 用 systemd 托管推荐便于开机自启与回滚cat/etc/systemd/system/prometheus.serviceEOF [Unit] DescriptionPrometheus Afternetwork.target [Service] ExecStart/opt/prometheus/prometheus --config.file/opt/prometheus/prometheus.yml --storage.tsdb.path/data/prometheus Restartalways [Install] WantedBymulti-user.target EOFsystemctl daemon-reloadsystemctlenable--nowprometheus多套 Prometheus 仅prometheus.yml的scrape_configs与监听端口不同重复上述步骤即可2.3 Exporter 部署# 在哪执行每台宿主机node_exportertarxf node_exporter-*.tar.gz-C/opt/cat/etc/systemd/system/node_exporter.serviceEOF [Unit] Descriptionnode_exporter [Service] ExecStart/opt/node_exporter/node_exporter Restartalways [Install] WantedBymulti-user.target EOFsystemctlenable--nownode_exporter# 监听 9100# 在哪执行K8s 控制面集群内组件kubectl apply# kube-state-metrics、dcgm-exporter 用官方 manifests 即可示例kubectl apply-fhttps://github.com/kubernetes/kube-state-metrics/blob/master/examples/standard/clusterrole.yaml kubectl apply-fhttps://raw.githubusercontent.com/NVIDIA/dcgm-exporter/master/deployments/dcgm-exporter.yaml# blackbox_exporter 同样 apply 到集群探测目标写在 Grafana 的 Blackbox 仪表盘变量里# Java 应用侧代码层交给开发引入 micrometer-registry-prometheus# 暴露端点后在 Prometheus 的 scrape_configs 增加 job 指向 Pod 的 metrics 端口2.4 Grafana 部署与数据源接入# 在哪执行Grafana 主机dockerrun-d-p3000:3000--namegrafana grafana/grafana:10.4.0# 登录后Configuration → Data Sources → Add Prometheus# 填 http://prom-k8s-ip:9090 → Save# 重复添加 prom-k8s-test / prom-ucloud / prom-k8s-ucloud-test 四套数据源命名建议与变量一致prom-k8s等后续仪表盘顶部「数据源变量」才能直接切换环境2.5 仪表盘导入六大文件夹在 Grafana → Dashboards → Import粘贴官方/社区 Dashboard IDJSON文件夹仪表盘来源服务器资源监控Node Exporter Dashboard ENStarsL.cn 版社区模板服务器资源监控DCGM Exporter Dashboard / Nvidia GPU MetricsNVIDIA 官方k8s 资源监控cluster_summary / pod_by_namespace 等社区 k8s 模板Web 资源监控SSL Certificate Monitor社区证书模板Web 资源监控Blackbox Exporter Dashboard官方 blackboxEnableAIHikariCP / JVM (Micrometer)应用侧模板导入后按业务归类到文件夹文件夹团队视图2.6 告警链路建议实装# 在哪执行告警机# Prometheus rule 示例磁盘85% 告警cat/opt/prometheus/rules/node.ymlEOF groups: - name: node rules: - alert: DiskWillFull expr: (node_filesystem_avail_bytes / node_filesystem_size_bytes) 0.15 for: 10m labels: {severity: warning} annotations: {summary: {{ $labels.instance }} 磁盘剩余 15%} EOF# 配 Alertmanager 把告警推到钉钉/飞书做到故障主动找你2.7 部署验证清单每套 Prometheus 的/targets页面无 DOWNGrafana 能切换 4 个数据源变量并出图六大文件夹仪表盘均有数据非空面板告警规则加载成功promtool check rules配置已提交 Git三、部署完成后日常监控查看3.1 Grafana 基础操作时间范围右上角选 Last 6h / 24h排障时改 5m/1h。自动刷新右上角日常 5m排障 5s/10s。变量切换顶部「数据源变量」切集群prom-k8s ↔ prom-ucloud「Instance/Host」变量下钻单机。星标常用看板点 ⭐首页快速进。下钻总表点行 → 自动选中该 Instance → 下方详情联动。3.2 Node Exporter 仪表盘详解最常用整页分三段顶部总表一台一行→ 中部三个集群汇总图 → 下部单机详情。3.2.1 总表列含义列含义阈值Uptime开机时长突然变小重启过CPU used%CPU 使用率(5m)80% 橙 / 90% 红Memory used%内存使用率85% 关注含缓存看 Available 为准Partition used%磁盘分区使用率80% 橙 / 90% 红最先爆Disk read/write磁盘读写对照基线看毛刺CurEstab当前 TCP 连接突降服务挂持续涨连接泄漏Download/Upload网络带宽突增确认是否合法3.2.2 单机详情面板Resource Details面板看什么Disk Space Used Basic各挂载点使用率etcd 数据盘最重要Memory Basic看Available非 used%CPU iowait10% 磁盘瓶颈etcd 节点最敏感System Load1m 负载 vs CPU corescurrentcores 即过载Time Spent Doing I/OIO 时间占比50% 说明磁盘打满Disk R/W Time参考100ms单次 IO 延迟远低于 100ms 健康Network SockstatTCP 连接分布CurEstab活连接Open File Descriptor文件句柄逼近上限才处理左上 Uptime/CPU cores/RAM 显示 N/A 是仪表盘变量未接好的显示 bug忽略即可3.3 SSL Certificate Monitor 解读按Certificate expires in升序 换证优先级队列。颜色红≈30 天内、黄≈90~180 天、绿充裕以仪表盘实际阈值为准。HTTP Response 列非 200 探测失败服务挂/证书过期。TLS/Connect Time突高 链路或响应劣化。3.4 JVM / HikariCP 解读JVM堆内存是否逼近上限、GC 次数/耗时是否陡增。HikariCPactive逼近max pool size、出现等待线程 数据库连接池瓶颈。四、定期巡检流程SOP4.1 每日巡检3~5 分钟服务器资源监控总表无红/橙行Partition used% 最高一台 80%SSL Certificate Monitor无新增红色、HTTP Response 全 200k8s cluster_summary节点全 Ready、Pod 无大量重启异常项截图留存按 SOP 跟进4.2 长假/节前专项巡检以 dev-k8s 三 master 为例针对dev-k8s-master-1/2/33 master 组成 etcd 集群quorum2/3任意 1 台宕机仍正常目标是别让 2 台同时出事。提供只读脚本dev-k8s-master-inspect.sh三台各跑一遍# 在哪执行每台 masterrootbashdev-k8s-master-inspect.sh# 或批量有 ssh 互信的跳板机fornindev-k8s-master-1 dev-k8s-master-2 dev-k8s-master-3;doecho##$n;sshroot$nbash -sdev-k8s-master-inspect.shdone4.3 巡检独立命令清单逐条可跑# 【OS】在哪执行每台 masteruptime# 负载df-h;df-i# 磁盘 inodefree-h# 内存systemctl--failed# 失败服务journalctl-perr-S2 hour ago--no-pager|tail-20# 近 2h 错误timedatectl show-pNTPSynchronized# 时钟同步必须 yescat/var/run/reboot-required2/dev/null# 待重启# 【K8s】kubectl get nodes kubectl get pods-nkube-system-owide|grep-Eetcd|apiserver|scheduler|controllerkubectl get cs kubectl get events-A--sort-by.lastTimestamp|grep-iEwarning|error|fail|tail-15# 【etcd】3 台都要 healthyETCDCTL_API3etcdctl--cacert/etc/kubernetes/pki/etcd/ca.crt\--cert/etc/kubernetes/pki/etcd/server.crt--key/etc/kubernetes/pki/etcd/server.key\--endpointshttps://127.0.0.1:2379 endpoint healthETCDCTL_API3etcdctl--cacert/etc/kubernetes/pki/etcd/ca.crt\--cert/etc/kubernetes/pki/etcd/server.crt--key/etc/kubernetes/pki/etcd/server.key\--endpointshttps://127.0.0.1:2379 member list-wtable4.4 巡检判定与处置表检查项期望触发动作磁盘分区80%90% 清日志/旧镜像80% 记录节后跟进inode80%高海量小日志清 journal/log失败服务无排查修复NTP 同步yes不同步立即修timedatectl set-ntp truereboot-required无有则择机重启控制面 PodRunning非 Running 先 describe 定性etcd healthhealthyunhealthy 看 etcd 日志 磁盘 IOetcd member3 个 started缺成员紧急联系搭建人五、常见风险与维护要点5.1 磁盘写满头号风险磁盘是持久的写进去不删就一直占着。即使无人操作以下进程 7×24 自动写容器日志Pod stdout/stderr——崩溃循环CrashLoopBackOff的 Pod 会疯狂打日志几天灌满磁盘etcd WAL 快照集群状态每 ~10s 变化systemd journal、kubelet 落盘所以Partition used% 会随时间单调上涨必须节前清理镜像层不会自己变大5.2 内存 vs 磁盘增长机制差异重要勿误判维度磁盘 Partition used%内存 Memory used%是否可回收否除非删除是程序退出/缓存自动回收无人使用时仍缓慢上涨日志/etcd不涨在稳定值波动真危险信号持续升高至 90%Available 持续降低内存泄漏Memory used%含文件缓存常显示 50~60% 属正常判断内存够不够看Available。5.3 etcd 健康与时钟同步etcd 对磁盘 IO 和时钟漂移极敏感时钟不同步会导致 leader 失联。巡检必查NTPSynchronizedyes3 master 混部 etcd 时master 节点的 iowait 高会直接拖垮集群写入5.4 K8s 组件证书周期v1.22 组件证书默认 1 年。实测核查示例dev-k8skubeadm certs check-expiration# apiserver / admin.conf / ... 均 2027-07-31 到期剩余 303 天CA 2123 到期结论当前健康无需操作但 kubeadm 自动续期仅在控制面重启且剩余30 天才触发apiserver 长期不重启不会自动续行动项日历挂提醒 2027-06-30 前复查到期前主动续签cp-r/etc/kubernetes /etc/kubernetes.$(date%F).bak# 备份回滚依据kubeadm certs renew all kubeadm certs check-expirationkubectl get nodes5.5 SSL 业务证书续期 SOP# 1) 核查到期无需登录服务器echo|openssl s_client-connect域名:443-servername域名2/dev/null|openssl x509-noout-dates# 2) 登录目标服务器备份并更换生产写操作三件套备份回滚验证grep-rnssl_certificate/etc/nginx/# 定位证书sudocp/etc/nginx/ssl/old.crt /etc/nginx/ssl/old.crt.$(date%F).bak# 备份sudonginx-tsudonginx-sreload# 校验并生效# 3) 验证Grafana SSL 面板该域名 Certificate expires in 变新周期、HTTP Response200注意同根多子域名如*.redata.com覆盖 api/blog/en/www/cdn常为泛域名证书续签一张覆盖全部六、回滚与应急6.1 变更三件套任何生产写操作前备份改前备份原文件/配置cp ... .$(date %F).bak回滚明确还原命令还原备份 reload/重启验证用 Grafana 指标或命令确认恢复6.2 应急判断表现象紧急度处置1 台 master 宕机不紧急quorum 仍在恢复后 etcd 自动加入节后复盘2 台 master 同时挂紧急控制面不可用立即联系搭建人勿盲操作etcd leader 频繁切换中查磁盘 IO 时钟先稳时钟某业务 Pod 异常视业务按业务 runbookGrafana 打不开低监控盲区≠集群故障直接 kubectl 查节点七、文档沉淀与持续优化SOP 归档同类问题第二次出现即写成 runbook存本地/语雀/ima 对应分类配置版本化Prometheus rules、Grafana dashboard JSON、部署清单全部入 Git告警闭环优先补齐 Alertmanager让磁盘85%、etcd unhealthy、节点 NotReady 主动推送减少人工盯盘定期复盘每次故障/误报后做无责复盘沉淀到本文对应章节附本文配套脚本dev-k8s-master-inspect.sh只读巡检、值班判断表可单独存档复用。平台监控的本质是「一切可观测、一切可回滚、一切可自动化」——先把看板用熟再把告警补齐

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询