使用 Prometheus 与 Grafana 处理指标
设置 Prometheus 收集 Cluster 和应用指标,并使用 Grafana 将其可视化。
使用 Prometheus 与 Grafana 处理指标 是 CoddyKit 上的免费 DevOps Bootcamp 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 DevOps Bootcamp 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 DevOps Bootcamp 课程共包含 4 节课。
指标的作用
指标是描述应用程序和基础设施状态及性能的数值测量结果。您可以将它们视为软件的生命体征!
它们可以为以下方面提供有价值的洞察:
- 性能:您的应用响应速度有多快?
- 资源使用情况:您的服务器是否即将耗尽内存?
- 可用性:您的服务是否正在运行并可供用户使用?
通过跟踪指标,您可以了解趋势、检测异常,并主动排查问题。
认识普罗米修斯
普罗米修斯是一个开源监控系统,专为可靠性和可扩展性而设计。它是云原生可观测性技术栈中的重要工具。
它的主要任务是:
- 抓取:从已配置的目标(例如您的应用程序)收集指标。
- 存储:将这些指标保存到时间序列数据库中。
- 查询:允许您针对收集的数据提出问题。
普罗米修斯可以帮助您清晰了解 Kubernetes 集群内部正在发生的情况。
普罗米修斯的“抓取”模型
普罗米修斯使用“拉取”模型收集指标。应用程序不是将数据推送给普罗米修斯,而是由普罗米修斯主动从应用程序中“抓取”或拉取指标。
其一般工作方式如下:
- 您的应用程序在特定的 HTTP 端点公开指标(通常是
/metrics)。 - 普罗米修斯配置有一个目标列表(例如应用程序的 IP 和端口)。
- 普罗米修斯按固定时间间隔向每个目标的
/metrics端点发送 HTTP 请求。 - 目标返回当前指标,普罗米修斯随后将其存储。
指标:键值对
普罗米修斯将数据存储为时间序列:由带时间戳的值组成的数据流。每个时间序列都由一个指标名称和一组称为标签的键值对唯一标识。
示例:http_requests_total{method="GET", path="/api"}
普罗米修斯有以下核心指标类型:
- 计数器:只能递增的累积指标(例如请求总数)。
- 仪表盘:可以增加或减少的值(例如当前 CPU 使用率)。
- 直方图/摘要:用于对观测值进行采样,并将其计入可配置的区间(例如请求持续时间)。
让应用程序“说出”指标
要让普罗米修斯抓取指标,您的应用程序需要以普罗米修斯能够理解的格式公开这些指标。通常可以通过 HTTP 端点实现。
许多编程语言都提供客户端库,可以轻松为代码添加指标采集功能:
- 在事件发生时递增计数器。
- 为当前状态设置仪表盘值。
- 记录操作的持续时间。
下面来看一个公开基本计数器指标的极简应用程序示例。
公开指标的 Python 应用程序
这是一个非常小的 Python Flask 应用程序,它公开了一个简单的计数器指标,用于模拟统计页面浏览量。
运行此代码,然后尝试在浏览器或终端中访问 /metrics(例如,运行后访问 http://localhost:5000/metrics)。
from flask import Flask
from prometheus_client import Counter, generate_latest
import time
app = Flask(__name__)
c = Counter('my_app_requests_total', 'Total requests to my app')
@app.route('/')
def hello():
c.inc() # Increment the counter
return "Hello, CoddyKit!"
@app.route('/metrics')
def metrics():
return generate_latest().decode('utf-8')
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)集群中的普罗米修斯
在 Kubernetes 中,高效部署普罗米修斯通常需要使用普罗米修斯运算符。这个运算符可以帮助管理普罗米修斯实例和配置。
普罗米修斯使用的关键 Kubernetes 资源:
- ServiceMonitor:告知普罗米修斯从何处查找指标端点(例如要抓取哪些 Service 和 Pod)。
- PodMonitor:与 ServiceMonitor 类似,但直接以 Pod 为目标。
这些资源允许普罗米修斯自动发现并抓取已部署应用程序的指标。
Grafana:仪表板大师
普罗米修斯负责收集和存储指标,而 Grafana 是用于将指标可视化的首选工具。它是一个开源的分析和交互式可视化 Web 应用程序。
Grafana 允许您:
- 创建美观且信息丰富的仪表板。
- 查询多个数据源(例如普罗米修斯)。
- 根据指标阈值设置警报。
它可以将原始指标数据转化为可采取行动的洞察。
Grafana 与普罗米修斯:强大组合
Grafana 本身不存储指标数据,而是从外部数据源查询数据。要将 Kubernetes 指标可视化,您需要在 Grafana 中将普罗米修斯配置为数据源。
步骤:
- 在 Grafana 中添加新的数据源。
- 选择“普罗米修斯”作为类型。
- 提供普罗米修斯服务器的 URL。
- 使用普罗米修斯的查询语言 PromQL 开始构建仪表板!
这种组合让您可以全面控制集群监控。
测试您的知识!
现在来检查您对普罗米修斯和 Grafana 的理解吧!
回顾:指标与可视化
做得很好!在本课中,您学习了:
- 指标对于可观测性的重要性。
- 普罗米修斯作为抓取和存储时间序列指标的强大系统。
- 应用程序如何公开指标供普罗米修斯收集。
- Grafana 如何创建有洞察力的仪表板并将指标数据可视化。
理解这些工具对于保持 Kubernetes 应用程序健康且高性能至关重要。请继续探索如何为自己的应用程序添加指标采集功能!
常见问题解答
「使用 Prometheus 与 Grafana 处理指标」课时是免费的吗?
是的 — 「使用 Prometheus 与 Grafana 处理指标」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 DevOps Bootcamp 课程的其余内容,请升级到 CoddyKit PRO。 DevOps Bootcamp 课程共包含 4 节课。
「使用 Prometheus 与 Grafana 处理指标」这节课中我会学到什么?
设置 Prometheus 收集 Cluster 和应用指标,并使用 Grafana 将其可视化。 你通过在浏览器中直接运行的动手代码来练习 DevOps Bootcamp,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 DevOps Bootcamp 需要有经验吗?
无需任何先前经验。CoddyKit 上的 DevOps Bootcamp 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「使用 Prometheus 与 Grafana 处理指标」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 DevOps Bootcamp 课中编写并运行代码吗?
能。每节 DevOps Bootcamp 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 使用 kubectl logs 查看日志
- 使用 Prometheus 与 Grafana 处理指标
- 健康检查:存活与就绪探针
- 分布式追踪与事件