Prometheus Exporter for Starlette 和 FastAPI

Prometheus Exporter for Starlette 和 FastAPI

starlette_exporter Prometheus exporter for Starlette and FastAPI starlette_exporter 项目地址: https://gitcode.com/gh_mirrors/st/starlette_exporter

1. 项目介绍

starlette_exporter 是一个用于Starlette和FastAPI应用的开源Prometheus指标导出器。它收集基本的指标,如请求总数、请求持续时间直方图、以及正在处理的并发请求数。这些指标带有HTTP方法、路径和响应状态码的标签,可以帮助开发者监控和优化应用性能。

2. 项目快速启动

以下是如何在Starlette或FastAPI项目中集成 starlette_exporter 的步骤:

安装

首先,确保已经安装了 starlette_exporter。可以使用pip命令进行安装:

pip install starlette_exporter

在Starlette中集成

from starlette.applications import Starlette
from starlette_exporter import PrometheusMiddleware, handle_metrics

app = Starlette()
app.add_middleware(PrometheusMiddleware)
app.add_route("/metrics", handle_metrics)

在FastAPI中集成

from fastapi import FastAPI
from starlette_exporter import PrometheusMiddleware, handle_metrics

app = FastAPI()
app.add_middleware(PrometheusMiddleware)
app.add_route("/metrics", handle_metrics)

运行

启动你的Starlette或FastAPI应用,访问 /metrics 路由将可以看到导出的Prometheus指标。

3. 应用案例和最佳实践

添加自定义标签

你可以通过传递一个字典来为导出的指标添加自定义标签:

app.add_middleware(PrometheusMiddleware, labels={"env": "production"})

使用指标示例

如果你想为直方图观察或计数器增加跟踪ID作为示例,可以使用 exemplars 参数:

app.add_middleware(PrometheusMiddleware, exemplars=lambda: {"trace_id": get_trace_id})

确保你的 /metrics 路由使用 handle_openmetrics 处理器来输出包含示例的指标:

app.add_route("/metrics", handle_openmetrics)

限制指标收集

如果你想排除某些路径或HTTP方法,可以使用 skip_pathsskip_methods 参数:

app.add_middleware(PrometheusMiddleware, skip_paths=["/health"], skip_methods=["OPTIONS"])

4. 典型生态项目

starlette_exporter 是Starlette和FastAPI生态系统中的一部分,以下是一些相关的项目:

  • Prometheus Python client:Prometheus的Python客户端库。
  • Starlette:一个轻量级的ASGI框架,用于构建Web应用。
  • FastAPI:一个现代、快速(高性能)的Web框架,用于构建APIs。

这些项目共同构建了一个强大的Python Web应用监控和性能分析生态系统。

starlette_exporter Prometheus exporter for Starlette and FastAPI starlette_exporter 项目地址: https://gitcode.com/gh_mirrors/st/starlette_exporter

Prometheus exporter是一种将应用程序指标公开为Prometheus所能够接受的格式的服务。它是由Prometheus社区维护的开放源代码软件。可以使用各种编程语言和库来编写Exporter,以便在Prometheus上监视应用程序的所有方面。Exporter将应用程序的度量标准转换为Prometheus所需的格式,使得Prometheus能够定期抓取度量标准,进行存储和查询。以下是使用Python编写Prometheus exporter的一个例子: ```python from prometheus_client import start_http_server, Metric, REGISTRY import random import time class CustomCollector(object): def __init__(self): pass def collect(self): # 模拟获取应用程序指标 metric = Metric('custom_metric', 'Custom metric description', 'gauge') metric.add_sample('custom_metric', value=random.randint(0, 10), labels={}) yield metric if __name__ == '__main__': start_http_server(8000) REGISTRY.register(CustomCollector()) while True: time.sleep(1) ``` 上述Python代码中,我们定义了一个名为CustomCollector的类来生成我们自己的指标。稍后,我们将该类注册到Prometheus的默认注册表中。在collect()函数中,我们模拟生成一个名为custom_metric的指标。我们使用gauge类型来定义它,并添加了一些随机值。在主函数中,我们启动了一个HTTP服务器,监听端口号8000。然后,我们注册我们的CustomCollector类,并定期地生成一些随机的度量标准,以便Prometheus可以抓取和存储。最后,我们进入了一个无限循环,防止程序退出,以便我们可以继续生成度量标准。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙天林

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值