Prometheus 监控 Kubernetes Cluster 最新极简教程
Prometheus 监控 Kubernetes Cluster 最新极简教程大家好我是你们的技术博主。今天我们来聊聊一个运维和开发同学都绕不开的话题——如何用 Prometheus 监控 Kubernetes 集群。Kubernetes 的 Pod 像“打地鼠”一样动态伸缩传统监控工具如 Zabbix很难跟踪。而 Prometheus 天生适合云原生环境因为它是基于拉取Pull模型能自动发现目标配上 Grafana 还能画美美的仪表盘。本教程的目标让你从零搭建一个能监控 K8s 集群的 Prometheus 系统并理解核心原理。## 什么是 Prometheus 和 K8s 监控原理Prometheus 是一个开源的系统监控和告警工具包。它的核心思想是-数据采集通过 HTTP 端点/metrics周期性地拉取指标数据。-数据存储本地时序数据库支持多维数据模型指标名 标签。-查询语言PromQL用于聚合和分析数据。在 Kubernetes 中Prometheus 通过服务发现自动找到所有 Pod、Node、Service然后用 kube-state-metrics 和 node-exporter 等组件暴露指标。简单说就是让 K8s 里的每个组件都“开一个窗口”Prometheus 定期去“窗口”取数据。## 准备工作环境与工具你需要- 一个运行的 Kubernetes 集群Minikube 或云服务均可- kubectl 已配置- Helm可选但推荐用于快速部署先检查环境bashkubectl get nodes看到 Ready 状态就 OK。## 第一步部署 Prometheus StackHelm 一键安装最省事的方式是用kube-prometheus-stack它包含了 Prometheus、Alertmanager、Grafana 和一堆导出器。添加 Helm 仓库并安装bashhelm repo add prometheus-community https://prometheus-community.github.io/helm-chartshelm repo updatekubectl create namespace monitoringhelm install prometheus prometheus-community/kube-prometheus-stack --namespace monitoring等待 Pod 启动bashkubectl get pods -n monitoring看到类似prometheus-prometheus-0、alertmanager-prometheus-alertmanager-0、grafana-xxxx都处于 Running 状态说明部署成功。## 第二步访问 Prometheus UI将 Prometheus Server 端口转发到本地bashkubectl port-forward -n monitoring svc/prometheus-operated 9090:9090浏览器打开 http://localhost:9090 你会看到 Prometheus 的查询界面。## 第三步验证监控数据——用 PromQL 查一个指标在 Prometheus UI 的查询框中输入以下 PromQL点击 Executeup你会看到一堆up{job...}的结果值为 1 表示该目标正常运行。这是最常见的健康检查指标。再试试查询 CPU 使用率rate(container_cpu_usage_seconds_total{container!}[5m])这个查询会返回每个容器的 CPU 使用率5 分钟平均。## 代码示例 1自定义应用暴露 /metrics部署一个带 Prometheus 客户端库的 Python 应用。创建文件app.pypython# app.py - 一个简单的 Python HTTP 服务暴露 Prometheus 指标from prometheus_client import start_http_server, Counter, Gaugeimport timeimport random# 定义指标REQUEST_COUNT Counter(app_requests_total, Total number of requests, [method])RANDOM_GAUGE Gauge(app_random_value, A random gauge value)def process_request(): 模拟处理请求 REQUEST_COUNT.labels(methodGET).inc() # 增加计数器 RANDOM_GAUGE.set(random.uniform(0, 100)) # 设置随机值if __name__ __main__: # 启动 HTTP 服务器在 8000 端口暴露指标 start_http_server(8000) print(Metrics server started on :8000) while True: process_request() time.sleep(5)打包成 Docker 镜像Dockerfile 略然后部署到 K8syaml# deployment.yamlapiVersion: apps/v1kind: Deploymentmetadata: name: my-appspec: replicas: 1 selector: matchLabels: app: my-app template: metadata: labels: app: my-app annotations: prometheus.io/scrape: true # 告诉 Prometheus 自动抓取 prometheus.io/port: 8000 spec: containers: - name: app image: your-image:latest ports: - containerPort: 8000部署后Prometheus 会自动发现这个 Pod因为 annotation 配置并在/metrics端点采集app_requests_total和app_random_value指标。去 Prometheus UI 查询app_requests_total就能看到数据了。## 第四步配置 Grafana 仪表盘Grafana 默认已随 Stack 部署。端口转发bashkubectl port-forward -n monitoring svc/grafana 3000:80访问 http://localhost:3000 默认用户名admin密码从 Secret 获取bashkubectl get secret -n monitoring prometheus-grafana -o jsonpath{.data.admin-password} | base64 --decode登录后点击左侧“” → “Import”输入仪表盘 ID例如 315 是 Kubernetes 集群监控模板导入后就能看到集群节点、Pod 的 CPU/内存图表。## 代码示例 2编写 Prometheus 告警规则告警是监控的灵魂。我们写一个简单的规则当某个 Pod 持续 5 分钟 CPU 使用率超过 80% 时触发告警。创建一个 ConfigMap 来定义告警规则yaml# alert-rules.yamlapiVersion: v1kind: ConfigMapmetadata: name: prometheus-alert-rules namespace: monitoringdata: custom-rules.yaml: | groups: - name: custom.rules rules: - alert: HighCPUUsage expr: | rate(container_cpu_usage_seconds_total{container!}[5m]) 0.8 for: 5m labels: severity: warning annotations: summary: Pod {{ $labels.pod }} CPU usage high description: Pod {{ $labels.pod }} in namespace {{ $labels.namespace }} has been using 80% CPU for 5 minutes.然后挂载到 Prometheus 的配置中。由于我们用的是 Helm 部署最好通过 Helm 升级来添加规则这里简化演示手动修改 Prometheus CRD。在 kube-prometheus-stack 中可以用 PrometheusRule 资源yaml# prometheus-rule.yamlapiVersion: monitoring.coreos.com/v1kind: PrometheusRulemetadata: name: custom-rules namespace: monitoringspec: groups: - name: custom.rules rules: - alert: HighCPUUsage expr: | rate(container_cpu_usage_seconds_total{container!}[5m]) 0.8 for: 5m labels: severity: warning annotations: summary: Pod {{ $labels.pod }} CPU usage high应用bashkubectl apply -f prometheus-rule.yaml这样当 CPU 持续飙高时Alertmanager 会收到告警你可以配置它发送邮件或钉钉通知。## 常见问题与排查技巧1.指标抓取不到检查 Pod 的 annotation 是否正确或者用kubectl describe pod pod-name看是否有端口映射。2.Prometheus 重启数据可能丢失建议配置持久化存储PersistentVolume。3.Grafana 图表为空确认数据源是否指向正确的 Prometheus默认已经配置好。## 总结现在你已经掌握了用 Prometheus 监控 Kubernetes 集群的核心步骤1. 用 Helm 部署 kube-prometheus-stack快速获得完整监控栈。2. 理解 Prometheus 通过服务发现自动采集指标。3. 通过 PromQL 查询数据用 Grafana 可视化。4. 自定义应用暴露指标并编写告警规则。这套方案生产可用但实际生产环境还需要考虑高可用Prometheus 联邦集群、长期存储Thanos、权限控制RBAC等。不过对于学习和中小规模集群今天的教程足够你起飞了。最后监控不是目的问题发现和快速定位才是。希望本文能帮你构建起集群的“眼睛”让运维变得更轻松。如果遇到问题欢迎留言讨论。

相关新闻

Unity第三人称控制器开发:从刚体物理到动画集成的完整实现

Unity第三人称控制器开发:从刚体物理到动画集成的完整实现

1. 项目概述:从零构建一个丝滑的第三人称控制器 如果你刚接触Unity3D,想找一个能串联起动画、物理、输入和摄像机逻辑的综合性练习项目,那“第三人称控制器”绝对是你的不二之选。这玩意儿听起来简单,不就是控制一个角色在3D世界里…

2026/10/12 14:29:47 阅读更多 →
DamaiHelper:告别手速焦虑!用Python自动化抢票工具轻松抢到心仪演出门票

DamaiHelper:告别手速焦虑!用Python自动化抢票工具轻松抢到心仪演出门票

DamaiHelper:告别手速焦虑!用Python自动化抢票工具轻松抢到心仪演出门票 【免费下载链接】damaihelper 支持大麦网,淘票票、缤玩岛等多个平台,演唱会演出抢票脚本 项目地址: https://gitcode.com/gh_mirrors/dam/damaihelper …

2026/10/10 4:35:33 阅读更多 →
jBPM7.73.0

jBPM7.73.0

工作流Jbpm7.73.0

2026/10/11 22:33:22 阅读更多 →

最新新闻

gRPC C++ 从零搭建可编译项目:构建方式、依赖管理与 CMake 实战

gRPC C++ 从零搭建可编译项目:构建方式、依赖管理与 CMake 实战

1. 从一份空白的构建脚本说起:gRPC C 项目到底难在哪如果你第一次接触 gRPC 的 C 版本,大概率会被它的构建流程劝退。Python、Go 这些语言装个包就能跑,而 C 这边,光是让一个"Hello World"级别的服务端和客户端编译通过…

2026/10/12 16:20:48 阅读更多 →
Claude Code 在 Windows 报 git-bash 错误?把 CLAUDE_CODE_GIT_BASH_PATH 改到 TaoToken 前先修好 bash.exe

Claude Code 在 Windows 报 git-bash 错误?把 CLAUDE_CODE_GIT_BASH_PATH 改到 TaoToken 前先修好 bash.exe

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

2026/10/12 16:20:48 阅读更多 →
基于Isaac Gym的机械臂强化学习:SAC2019与演示学习实战

基于Isaac Gym的机械臂强化学习:SAC2019与演示学习实战

简介:这是一套基于NVIDIA Isaac Gym构建的机械臂深度强化学习框架,集成了SAC2019与从演示中学习的先进算法,主要面向计算机、自动化、电子信息等专业的毕业设计、课程设计或大作业场景。压缩包共1372个文件,约223.83MB&#xff0c…

2026/10/12 16:20:48 阅读更多 →
【清华代码熊】GVPO:Coding Agent RL 解决奖励错位问题

【清华代码熊】GVPO:Coding Agent RL 解决奖励错位问题

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

2026/10/12 16:20:48 阅读更多 →
DeepSeek接入微信完整指南:从选型到搭建与避坑

DeepSeek接入微信完整指南:从选型到搭建与避坑

简介:deepseek接入微信聊天的项目实现包,面向有一定Python基础的开发者,旨在解决将DeepSeek大模型能力接入微信聊天场景的问题。项目采用模块化设计,包含模型调用、微信机器人交互、页面展示与文件处理等环节,适合用于…

2026/10/12 16:20:48 阅读更多 →
服务器故障排查实战:CPU、内存、磁盘、网络与服务启动全解析

服务器故障排查实战:CPU、内存、磁盘、网络与服务启动全解析

1. 从一次深夜告警说起:服务器故障排查的底层逻辑凌晨两点,手机突然震动,监控平台推送了一条告警:某台业务服务器的CPU使用率持续15分钟超过95%。我爬起来打开电脑,第一反应不是直接重启,而是先连上去看看到…

2026/10/12 16:19:47 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/11 14:36:54 阅读更多 →