普罗米修斯度量导出器,用于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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何获得@sign,以便在Java代码中键入@override?   java Facebook登录不起作用,我忘了什么?   json如何在java中从MongoDB Atlas获取特定字段?   java如何在Android上的JNI中实现委托/协议(在iOS上)?   java为什么这个循环多次的程序在循环后有一个“println”时需要花费时间?   java无法使组合框正常工作   JavaCQ5。如何为作者显示列表发布者?版本5.5   java我可以要求泛型参数具有泛型参数吗?   JavaOKHTTP无法获取整个JSON   数组Java:用字符减去字符意味着什么?   java为什么Eclipse content assist无法从部分方法名生成方法存根?   java使用线程在Android Studio中一次加载一个多位图   java遍历二叉树并返回一个值