如何在 Python 程序中暴露 Prometheus 指标

本文介绍了如何在Python应用中使用Prometheus Client Library来定义和暴露SLI,通过FastAPI创建接口并利用prometheus_client统计访问次数,同时展示了如何通过Label区分不同API的指标信息。
摘要由CSDN通过智能技术生成

SLI 与 SLO


SLI(服务质量指标) 指的是一个服务的某项服务质量的一个具体量化指标(如请求延迟、错误率、QPS)。

SLO(服务质量目标) 则是服务的某个 SLI 的目标值,例如,我们可以定义一个SLO,要求 95% 的请求的延迟小于 100ms。

SLI与SLO是传统运维转型SRE绕不过的主题,它们是SRE实践的核心。传统运维通常追求 100% 的可用性,但这个目标是不可能实现的,通过实施SLO,可以带来如下好处:

  • 监控应用程序的行为,以便更好地改进应用程序

  • 确定工作优先级,即开发新特性还是保障服务稳定性

  • 作为控制手段使用,通过比较SLI与SLO,决定某项操作是否执行

  • 建立用户预期

定义 SLI


要实施 SLO,首先要定义出来 SLI,而 Prometheus 监控则是定义 SLI 的一种很好的工具,下面将介绍在 Python 程序中暴露 Prometheus Metric 来定义 SLI。

在 Python 程序中暴露 Prometheus 指标


按照 Prometheus 官方文档[1]中的说明,在 Python 中暴露 Prometheus 指标,可以使用 Python 的 Prometheus Client Library —— prometheus_client。

使用 prometheus_client 之前,先通过如下命令安装该模块:

<
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Prometheus是一个开源的监控系统,它可以收集和处理来自不同应用程序的监控指标数据。要在Python程序集成Prometheus,你需要使用一个Python库,例如`prometheus_client`。以下是一个基本的示例程序,它演示如何在Python应用程序使用Prometheus来收集指标数据: ```python from prometheus_client import start_http_server, Gauge import random import time # 创建一个名为“my_gauge”的Gauge类型指标 my_gauge = Gauge('my_gauge', 'This is my gauge') # 启动一个HTTP服务,监听在本地的9090端口上 start_http_server(9090) while True: # 在0到10之间生成一个随机数,并将其设置为my_gauge指标的值 my_gauge.set(random.randint(0, 10)) # 暂停1秒钟,以便可以看到指标Prometheus UI的变化 time.sleep(1) ``` 此示例创建一个名为“my_gauge”的指标,它是Gauge类型的指标。然后,它启动一个HTTP服务器,以便Prometheus可以通过这个服务器收集指标数据。最后,它在一个无限循环生成一个随机数,并将其设置为my_gauge指标的值。 要在Prometheus使用这个指标,你需要在Prometheus的配置文件添加以下内容: ```yaml scrape_configs: - job_name: 'my_python_app' scrape_interval: 5s static_configs: - targets: ['localhost:9090'] ``` 在这个配置文件,我们定义了一个名为“my_python_app”的作业,并且告诉Prometheus每5秒钟从这个作业的目标地址(localhost:9090)上抓取数据。此时,在Prometheus UI,你应该能够看到一个名为“my_gauge”的指标,并且可以查看其在时间上的变化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值