Python Web集成Prometheus

本文分享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

通用指标如下图:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/xwd127429/article/details/120767996
今日推荐