当前位置: 首页 > news >正文

prometheus_client 调用统计

目录

Counter 调用次数

实时队列长度

Gauge 和队列长度区别和优缺点对比

📌 举例说明差异

你用 ask_queue.qsize() 的情况:

你用 Gauge.set(ask_queue.qsize()) 的情况:

CollectorRegistry 注册方式实例化


Counter 调用次数

from prometheus_client import start_http_server, Counter# 定义一个计数器
REQUESTS = Counter('requests_total', 'Total number of requests')def main():# 启动 Prometheus HTTP 服务,默认端口 8000start_http_server(8000)# 模拟请求while True:REQUESTS.inc()  # 每次调用增加 1time.sleep(1)if __name__ == '__main__':main()

实时队列长度

from prometheus_client import Gauge, start_http_server
import time
import queue# 创建注册表(可选)
from prometheus_client import CollectorRegistry
registry_1 = CollectorRegistry()# 定义 Gauge 指标
QUEUE_GAUGE = Gauge('LiveAsrServiceQueueSize', 'current queue size of live asr', registry=registry_1)# 假设你的实时队列
task_queue = queue.Queue()# 模拟添加任务
def add_task():task_queue.put("audio_data")# 模拟处理任务
def process_task():if not task_queue.empty():task_queue.get()# 定期更新 Prometheus 指标
def update_metrics():queue_size = task_queue.qsize()QUEUE_GAUGE.set(queue_size)  # 设置当前队列长度if __name__ == "__main__":# 启动 Prometheus 的 HTTP 服务start_http_server(8000, registry=registry_1)# 模拟生产消费过程while True:add_task()               # 模拟请求进来process_task()           # 模拟处理请求update_metrics()         # 更新队列大小指标time.sleep(1)            # 每秒更新一次

Gauge 和队列长度区别和优缺点对比

特性ask_queue.qsize()prometheus_client.Gauge
定义Python 标准库 queue.Queue 提供的当前元素数量Prometheus 指标类型,用于暴露数值型状态
调用位置代码内部使用(只能在当前进程里访问)暴露为 Web 接口,供外部系统采集
可视化❌ 不能用于监控图表✅ 可接入 Prometheus + Grafana 监控
历史记录❌ 只返回当前值,没有历史✅ Prometheus 会定时抓取并存储,支持趋势分析
报警机制❌ 无法设置阈值报警✅ 可设置如“队列长度 > 100 报警”规则
用途程序逻辑内部判断是否要消费/等待运维监控、服务健康状况展示、预警系统
性能影响极低(直接访问队列)轻微增加(需要暴露 HTTP 接口)


📌 举例说明差异

你用 ask_queue.qsize() 的情况:

if ask_queue.qsize() > 100: print("队列过长,暂停接收任务")

→ 用于程序运行时控制逻辑,不对外公开,开发者调试用。


你用 Gauge.set(ask_queue.qsize()) 的情况:

QUEUE_GAUGE.set(ask_queue.qsize())

→ Prometheus 会定时抓取,记录下来,配合 Grafana 画图并做告警分析:

  • 查看队列高峰时间段;

  • 队列是否慢慢在积压;

  • qsize()代码内部用来判断当前状态

  • prometheus_client.Gauge.set(qsize())用来将这个状态暴露给监控系统

它们不是替代关系,而是搭配使用的:你先用 qsize() 得到数据,再通过 Gauge 让别人能看到这数据。

CollectorRegistry 注册方式实例化

from prometheus_client import Counter, generate_latest, CollectorRegistry, multiprocess, CONTENT_TYPE_LATEST, make_asgi_app, Gaugeregistry = CollectorRegistry()
# 定义 Prometheus 指标
CALL_COUNT = Counter("live_asr_me", "part3 Total number of method calls",["method", "status"],registry=registry
)registry_1 = CollectorRegistry(auto_describe=True)QUEUE_GAUGE = Gauge('LiveceQueueSize', 'curasr', registry=registry_1)

http://www.lryc.cn/news/603666.html

相关文章:

  • HBase、MongoDB 和 Redis 的区别详解
  • Ubuntu 抽取系统制作便于chroot的镜像文件
  • P1020 [NOIP 1999 提高组] 导弹拦截
  • 动态库示例
  • 代码随想录算法训练营第三十五天
  • BGP团体属性
  • MybatisPlus-20.插件功能-通用分页实体与MP转换
  • 【IQA技术专题】纹理相似度图像评价指标DISTS
  • AAA 与 FTP:网络认证授权及文件传输的原理与实践
  • 如何在 Ubuntu 24.04 或 22.04 Linux 上安装和运行 Redis 服务器
  • Redis的持久化策略-AOF和RDB(详细图解)
  • 广告投放数据与管理全解析:从数据解读到高效运营
  • ansible 使用更高版本的python版本
  • 设计一个高可用、可拓展、监控报警系统,使用普罗米修斯和grafana,并给出go实现
  • 第2章 cmd命令基础:常用基础命令(1)
  • SQL排查、分析海量数据以及锁机制
  • 微算法科技(NASDAQ:MLGO)应用区块链联邦学习(BlockFL)架构,实现数据的安全传输
  • Java:为什么需要通配符捕获(wildcard capture)
  • 大文件的切片上传和断点续传前后端(Vue+node.js)具体实现
  • 巡台效率:精准胜勤快
  • 基于YOLOP与GAN的图像修复与防御系统设计与实现
  • 把查出来的值加上双引号,并逗号分隔
  • 宇树 G1 部署(九)——遥操作控制脚本 teleop_hand_and_arm.py 分析与测试部署
  • 汇总数据(使用聚集函数)
  • 智能制造的空间度量:机器视觉标定技术解析
  • 微店商品详情接口micro.item_get请求参数响应参数解析
  • 以太坊十年:智能合约与去中心化的崛起
  • Linux文件归档和备份
  • 自动调优 vLLM 服务器参数(实战指南)
  • IDEA中全局搜索快捷键Ctrl+Shift+F为何失灵?探寻原因与修复指南