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

Prometheus 指标类型

指标类型一般分为四类:

Counter 计数器,用于保存计数型数据,如网站访问量等。

Gauge 仪表盘,用于存储有着起伏特征的指标数据,如空间空闲大小等。

Histogram 直方图,在一段时间范围内对数据进行采样,并将其计入可配置的存储中,后续可通过指定区间筛选样本,也可以统计样本总数,最后一般将数据展示为直方图。

Summary ,Histogram的扩展类型,用于表示一段时间内的数据采样结果(通常是请求持续时间或响应大小等),但它直接存储了分位数(通过客户端计算,然后展示出来),而不是通过区间计算。

Counter 计数器

基于Counter 计数器设计Springboot相关代码,模拟用户请求访问量

    @GetMapping("/metrics/count")public String count() {Counter.builder("metrics_request_count").tags("apiCode", "test").description("Count of requests").register(meterRegistry).increment();return "Hello World";}

相关命令:

//查询当前的总计数值
metrics_request_count_total//一段时间内的增长率
increase(metrics_request_count_total[1m])

Gauge 仪表盘

基于Gauge仪表盘设计Springboot相关代码,模拟统计在线用户数量

  // 用于 Gauge 的动态值(模拟在线用户数)private final AtomicInteger onlineUsers = new AtomicInteger(0);// 用于 Histogram 和 Summary 的随机耗时生成器private final Random random = new Random();@GetMapping("/metrics/gauge")public String gauge() {if (random.nextBoolean()) {onlineUsers.incrementAndGet();}else {onlineUsers.decrementAndGet();}Gauge.builder("metrics_user_online_count", onlineUsers, AtomicInteger::get).tags("apiCode", "test").description("当前用户数").register(meterRegistry);return "Hello World";}

相关命令:

// 当前数量
metrics_user_online_count//最大值
max(metrics_user_online_count)//增长量
increase(metrics_user_online_count[10m])

Histogram 直方图、Summary

参考文档:深入理解和使用 Prometheus 的 Histogram 指标类型 - 知乎

基于Histogram设计Springboot相关代码,模拟统计接口响应耗时

    @GetMapping("/metrics/Histogram")public String histogram() throws InterruptedException {// 1. 构建 Timer,设置自定义 bucket 边界(单位:秒)Timer requestDurationTimer = Timer.builder("api_request_duration_seconds").tags("api", "myApi") // 标签用于区分接口.description("Timer for API request durations").publishPercentiles(0.5, 0.95, 0.99) // 发布百分位数(50th、95th、99th).distributionStatisticBufferLength(60) // 缓冲区大小(影响 bucket 数量).serviceLevelObjectives( // 自定义 bucket 边界(必须按升序排列)Duration.ofMillis(50),   // 0.05 秒Duration.ofMillis(100),  // 0.1 秒Duration.ofMillis(200),  // 0.2 秒Duration.ofMillis(500),  // 0.5 秒Duration.ofSeconds(1)    // 1 秒).register(meterRegistry); // 注册到 MeterRegistry// 2. 模拟随机耗时(50~500 毫秒)Random random = new Random();int durationMs = 50 + random.nextInt(450);Thread.sleep(durationMs);// 3. 记录耗时到 Timer(单位:毫秒)requestDurationTimer.record(durationMs, TimeUnit.MILLISECONDS);return "Hello World";

相关命令:

//查询 Histogram 的桶(bucket)数据
api_request_duration_seconds_bucket//请求的总数
api_request_duration_seconds_count//所有请求的总时间
api_request_duration_seconds_sum//histogram_quantile 是 Prometheus 中一个非常强大的函数,可以用来计算 Histogram 的某个百分位数值(例如 50th、95th 百分位等)
histogram_quantile(0.95, sum(rate(api_request_duration_seconds_bucket[5m])) by (le))//这个查询会返回过去 5 分钟内各个桶的请求数量,by (le) 表示按桶的标签进行分组
sum(rate(api_request_duration_seconds_bucket[5m])) by (le)//这个查询会返回过去 5 分钟内,api_request_duration_seconds_bucket 中小于 0.5 秒的请求数量
sum(rate(api_request_duration_seconds_bucket{le="0.5"}[5m]))//这个查询会返回过去 5 分钟内的请求总数
sum(rate(api_request_duration_seconds_count[5m]))//这个查询会返回过去 5 分钟内请求的总耗时(单位:秒)
sum(rate(api_request_duration_seconds_sum[5m]))//这个查询会计算过去 5 分钟内请求的平均耗时
sum(rate(api_request_duration_seconds_sum[5m])) / sum(rate(api_request_duration_seconds_count[5m]))

Histogram和Summary的区别

http://www.dtcms.com/a/352578.html

相关文章:

  • Solon Web 的两种 Context-Path 配置
  • Vuex 和 Pinia 各自的优点
  • MATLAB中函数的详细使用
  • Linux-孤儿进程和僵死进程
  • RAG中使用到的相关函数注释——LangChain核心函数
  • tracebox工具使用
  • LKT4202UGM耗材防伪安全芯片,守护您的消费电子产品
  • 从串口到屏幕:如何用C#构建一个军工级数据实时监控
  • JUC之synchronized关键字
  • Dify 从入门到精通(第 57/100 篇):Dify 的知识库扩展(进阶篇)
  • 8.26学习总结
  • 在 C# 中使用 Consul 客户端库实现服务发现
  • 卷积操作现实中的意义
  • 发力低空经济领域,移动云为前沿产业加速崛起注入云端动能
  • 微服务-24.网关登录校验-实现登录校验
  • Linux系统日志分析与存储
  • 机器学习:前篇
  • 从行业智能体到一站式开发平台,移动云推动AI智能体规模化落地
  • 产品经理操作手册(3)——产品需求文档
  • Duplicate Same Files Searcher v10.7.0,秒扫全盘重复档,符号链接一键瘦身
  • 【软件测试面试】全网最全,自动化测试面试题总结大全(付答案)
  • 告别出差!蓝蜂物联网网关让PLC程序远程修改零延迟
  • 二、JVM 入门 —— (四)堆以及 GC
  • 渗透测试术语大全(超详细)
  • C++ STL 顶层设计与安全:迭代器、失效与线程安全
  • 【C++游记】栈vs队列vs优先级队列
  • 算法编程实例-快乐学习
  • 随机森林实战:在鸢尾花数据集上与决策树和逻辑斯蒂回归进行对比
  • AI安全监控与人才需求的时间悖论(对AI安全模型、AI安全人才需求的一些思考)
  • AIDL和HIDL的AudioHal对比