本文分享Python集成Prometheus的方法。
主要内容:
- FastApi/Starlette集成Prometheus
- 通用方法集成Prometheus
FastApi/Starlette集成Prometheus
使用FastApi开发的Web应用,想要添加监控指标,主流方案是对接Prometheus。
寻找解决方案时,发现Starlette有一个中间件 Starlette Prometheus。
FastApi继承自Starlette,可以直接使用其中间件。
这个中间件的官方文档描述的使用说明是以Starlette应用为例的,这里简单描述FastApi的使用方法。
一、安装
pip install starlette-prometheus
二、添加中间件
from fastapi import FastAPI
from starlette_prometheus import metrics, PrometheusMiddleware
app = FastAPI()
app.add_middleware(PrometheusMiddleware, filter_unhandled_paths=True) # filter_unhandled_paths=True将过滤掉不属于starlette应用的path
app.add_route('/metrics', metrics) # 设置metrics path
# app.add_route('/prometheus/metrics', metrics) # 设置metrics path
三、配置Prometheus
暴露prometheus metrics path后,在prometheus.yml文件中进行配置即可。
假设应用地址为 localhost:8000,配置示例如下:
scrape_configs:
- job_name: "fastapi"
# metrics_path: "/prometheus/metrics" # 设置metrics path,默认为 /metrics
static_configs:
- targets: ["localhost:8000"]
通用方法集成Prometheus
在使用 Starlette Prometheus中间件时,发现其底层使用的是Prometheus Python Client。这个库是Prometheus官方提供的Python Client,是Python集成Prometheus的通用方案,不过这个库默认只收集了通用的系统指标数据,想要收集应用的请求、响应等指标就需要自己开发了,如果实在没有可用的第三方库,也只能使用这个库开发指标了。
使用方法详见Prometheus Python Client。
通用指标如下图: