普罗米修斯度量导出器,用于Starlete应用程序。
starlette-exporter的Python项目详细描述
starlette_出口商
普罗米修斯Starlette和FastAPI出口商。在
中间件收集基本指标:
- 计数器:starlette_请求总数
- 柱状图:开始时间请求持续时间秒
度量包括HTTP方法的标签、路径和响应状态代码。在
starlette_requests_total{method="GET",path="/",status_code="200"} 1.0
starlette_request_duration_seconds_bucket{le="0.01",method="GET",path="/",status_code="200"} 1.0
在路径/metrics
处使用HTTP处理程序handle_metrics
向Prometheus公开度量端点。在
使用
^{pr2}$Starlette
fromstarlette.applicationsimportStarlettefromstarlette_exporterimportPrometheusMiddleware,handle_metricsapp=Starlette()app.add_middleware(PrometheusMiddleware)app.add_route("/metrics",handle_metrics)...
快速API
fromfastapiimportFastAPIfromstarlette_exporterimportPrometheusMiddleware,handle_metricsapp=FastAPI()app.add_middleware(PrometheusMiddleware)app.add_route("/metrics",handle_metrics)...
选项
app_name
:为导出的度量设置app_name
标签的值(默认值:starlette
)。在
prefix
:设置导出的度量名称的前缀(默认值:starlette
)。在
group_paths
:将其设置为True
将使用路由器路径中的命名参数(如果有)填充路径标签,例如/api/v1/items/{item_id}
。这将按端点将请求分组在一起(不考虑item_id
的值)。对于较大的路由器,此选项可能会导致性能下降。默认值是False
,这将导致不同url的不同度量(例如,/api/v1/items/42
,/api/v1/items/43
,等等)。在
filter_unhandled_paths
:将其设置为True
将导致中间件忽略具有未处理路径的请求(换句话说,404个错误)。这有助于防止用404个错误和/或故意不好的请求填充度量。默认值是False
。在
buckets
:接受一个可选的数字列表,用作直方图存储桶。默认值是None
,这将导致库恢复到普罗米修斯的默认值(当前为[0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1.0, 2.5, 5.0, 7.5, 10.0]
)。在
示例:
app.add_middleware(PrometheusMiddleware,app_name="hello_world",group_paths=True,prefix='myapp',buckets=[0.1,0.25,0.5])
自定义指标
starlette_exporter将从流程中导出所有prometheus度量,因此可以使用prometheus_客户端API创建自定义度量。在
示例:
fromprometheus_clientimportCounterfromstarlette.responsesimportRedirectResponseREDIRECT_COUNT=Counter("redirect_total","Count of redirects",("from",))asyncdefsome_view(request):REDIRECT_COUNT.labels(from="some_view").inc()returnRedirectResponse(url="https://example.com",status_code=302)
新的度量现在将包含在/metrics
端点输出中:
...
redirect_total{from="some_view"} 2.0
...
发展中
git clone https://github.com/stephenhillier/starlette_exporter
cd starlette_exporter
pytest tests
许可证
在Apache License, Version 2.0下发布的代码。在
依赖关系
https://github.com/prometheus/client_python
https://github.com/encode/starlette
学分
星形-https://github.com/encode/starlette
FastAPI-https://github.com/tiangolo/fastapi
烧瓶出口-https://github.com/rycus86/prometheus_flask_exporter
备用Starlette导出器-https://github.com/perdy/starlette-prometheus
- 项目
标签: