本文目录导读:

是的,Python 监控最常用 Prometheus 客户端库(prometheus_client),它是 Python 生态中对接 Prometheus 监控体系的标准方案。
主要 Python Prometheus 客户端
prometheus_client(官方推荐)
from prometheus_client import start_http_server, Counter, Gauge, Histogram
import time
# 定义指标
requests_total = Counter('http_requests_total', 'Total HTTP requests')
in_progress = Gauge('http_requests_in_progress', 'Number of HTTP requests in progress')
request_duration = Histogram('http_request_duration_seconds', 'HTTP request latency')
# 启动 HTTP 服务(暴露 metrics)
start_http_server(8000)
while True:
requests_total.inc()
with in_progress.track_inprogress():
with request_duration.time():
time.sleep(0.1)
常用的指标类型
| 类型 | 用途 | 示例 |
|---|---|---|
| Counter | 只增不减的计数器 | 请求总数、错误次数 |
| Gauge | 可增可减的瞬时值 | 内存使用、在线用户数 |
| Histogram | 分布统计(分桶) | 请求延迟分布 |
| Summary | 分位数统计 | 请求延迟的 p99 |
集成 Web 框架
Flask 集成示例:
from flask import Flask
from prometheus_client import make_wsgi_app
from werkzeug.middleware.dispatcher import DispatcherMiddleware
app = Flask(__name__)
# 将 /metrics 端点挂载到 Flask
app.wsgi_app = DispatcherMiddleware(app.wsgi_app, {
'/metrics': make_wsgi_app()
})
@app.route('/')
def index():
return 'Hello World'
FastAPI/Django 集成:通常使用对应的中间件或直接暴露 /metrics 端点。
常见使用场景
业务监控
order_counter = Counter('orders_total', 'Number of orders', ['status'])
order_counter.labels(status='success').inc()
性能监控
request_latency = Histogram('request_latency_seconds', 'Request latency',
buckets=[0.1, 0.5, 1, 2, 5])
@request_latency.time()
def handle_request():
pass
系统资源监控
memory_usage = Gauge('memory_usage_bytes', 'Current memory usage')
memory_usage.set(process.memory_info().rss)
与其他监控方案的对比
| 方案 | 优点 | 缺点 |
|---|---|---|
| Prometheus Client | 标准、灵活、社区活跃 | 需要部署 Prometheus 服务 |
| StatsD | 简单、低开销(UDP) | 不支持多维标签、精度有限 |
| OpenTelemetry | 可同时输出到多种后端 | 配置较复杂 |
| Datadog Agent | 开箱即用、功能丰富 | 商业产品、有成本 |
最佳实践建议
- 命名规范:使用下划线命名,以应用名称为前缀(
myapp_requests_total) - 标签管理:标签基数不要太高(避免
label值过多导致性能问题) - 指标类型选择:根据数据特性选择(计数用 Counter,采样用 Histogram)
- 服务注册:如果使用 Kubernetes,配合 Prometheus Operator 自动发现服务
Python 监控优先使用 prometheus_client 库,它是 Prometheus 官方维护的标准方案,适合大多数应用监控场景。