如何从 java 客户端正确使用 Prometheus Histogram 来跟踪大小而不是延迟?

2023-12-23

我有一个处理集合的 API。 该API的执行时间与集合大小有关(集合越大,花费的时间就越多)。

我正在研究如何使用普罗米修斯做到这一点,但不确定我是否正确地做事(该领域的文档有点缺乏)。

我做的第一件事是定义一个摘要指标来衡量 API 的执行时间。我正在使用规范率(总和)/率(计数),如所解释的here https://prometheus.io/docs/practices/histograms/.

现在,因为我知道延迟可能会受到输入大小的影响,所以我还想覆盖请求size平均执行时间。因为我不想测量每个可能的尺寸,所以我想我应该使用直方图。就像这样:

Histogram histogram = Histogram.build().buckets(10, 30, 50)
        .name("BULK_REQUEST_SIZE")
        .help("histogram of bulk sizes to correlate with duration")
        .labelNames("method", "entity")
        .register();

Note:术语“尺寸”确实not与以字节为单位的大小有关,但与length需要处理的集合。 2 件、5 件、50 件...

在执行过程中我做了(简化):

@PUT
void process(Collection<Entity> entitiesToProcess, string entityName){
   Timer t = summary.labels("PUT_BULK", entityName).startTimer()

      // process...

   t.observeDuration();
   histogram.labels("PUT_BULK", entityName).observe(entitiesToProcess.size())
}

问题:

  • 后来,当我查看 Grafana 中的 BULK_REQUEST_SIZE_bucket 时,我发现所有存储桶都具有相同的值,所以显然我做错了什么。
  • 有没有更规范的方法来做到这一点?

您的代码是正确的(尽管bulk_request_size_bytes将是一个更好的指标名称)。

问题可能是您的存储桶不是最理想的,因为 10、30 和 50 字节对于大多数请求大小来说都非常小。我会尝试更大的存储桶尺寸来覆盖更典型的值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 java 客户端正确使用 Prometheus Histogram 来跟踪大小而不是延迟? 的相关文章

  • 在 JavaScript 中嵌套“switch”案例:有速度优势吗?

    这里有新手问题 我有一个包含大量字符串的 开关 像这样按字母顺序拆分是否有速度优势 switch myString substring 0 1 case a switch myString case a string beginning w
  • Angularjs 在生产中禁用调试数据

    我正在尝试按照角度文档中的建议禁用生产服务器中的调试数据here https docs angularjs org guide production 补充一点 我并没有真正看到性能和加载时间有任何改进 这是我的代码在 app js 中的样子
  • HTML if 语句在 CDN 失败时加载本地 JS/CSS

    当从 CDN 或任何外部服务器加载 CSS JS 文件时 有可能 即使概率很低 由于外部故障而丢失该文件 在这种情况下 html 页面将因缺乏适当的 CSS 和 JS 而被损坏 有没有一种实用的方法可以在 CDN 故障时加载本地版本 IF
  • 普罗米修斯警报中缺少标签

    我对 Prometheus 警报规则有疑问 我设置了各种 cAdvisor 特定警报 例如 alert ContainerCpuUsage expr sum rate container cpu usage seconds total 3m
  • 为什么 std::atomic 比 volatile bool 慢很多?

    多年来我一直使用 volatile bool 来控制线程执行 并且效果很好 in my class declaration volatile bool stop In the thread function while stop do th
  • 如何缓存 ASP.NET 网站以获得更好的性能

    我是一名网页设计师 通常设计不需要更新的企业网站 所以我想将输出缓存一天 我怎样才能做到这一点 此外 任何有关在慢速服务器上提高 ASP NET 性能的建议都被接受 请注意 ASP NET 缓存有一个bug http connect mic
  • 为什么 cross_val_predict 比 KNeighborsClassifier 的拟合慢得多?

    在 Jupyter 笔记本上本地运行并使用 MNIST 数据集 28k 条目 每个图像 28x28 像素 以下内容为27秒 from sklearn neighbors import KNeighborsClassifier knn clf
  • WPF 应用程序在第一次交互(例如单击按钮)后停止/冻结

    我目前在 WPF 中遇到问题 UI 加载正常 但每当进行第一次用户交互时 例如单击按钮 应用程序似乎会停止 或者例如 如果我有两个显示 MessageBox 的按钮 则第一次单击将等待几秒钟 然后显示MessageBox 但任何后续交互都是
  • Oracle Many OR 与 IN () 的 SQL 性能调优 [重复]

    这个问题在这里已经有答案了 我手头没有 解释计划 您能帮忙判断以下哪一个更有效吗 选项1 select from VIEW ABC where STRING COL AA OR STRING COL BB OR STRING COL BB
  • 为什么 Orchard 在执行内容项查询时如此慢?

    假设我想查询所有 Orchard 用户 ID 并且还想包括那些已被删除 也称为软删除 的用户 该数据库包含大约 1000 个用户 Option A 大约需要 2 分钟 Orchard ContentManagement IContentMa
  • C# 的快速线程安全随机数生成器

    我需要在多个正在运行的线程中快速生成随机浮点数 我尝试过使用System Random 但它对于我的需求来说太慢了 并且它在多个线程中返回相同的数字 当我在单线程中运行应用程序时 它工作正常 此外 我需要确保生成的数字在 0 到 100 之
  • HTML5 Canvas 性能:加载图像与绘图

    我正计划使用 javascript canvas 编写一个游戏 我只有一个问题 在加载图像与仅使用 canvas 的方法进行绘图方面 我应该考虑什么样的性能考虑因素 因为我的游戏将使用非常简单的几何图形 圆形 正方形 直线 所以任何一种方法
  • setInterval() 如何影响性能?

    我们正在使用 Twitter Bootstrap 作为框架构建一个 Web 应用程序 但在显示 隐藏工具提示时遇到问题 除了尝试找到实际问题的解决方案之外 我还有一个关于我们同时使用的解决方法的问题 从性能角度来看 使用 setInterv
  • 处理 C++ 中执行时间的大量分析

    我目前正在进行一个科学计算项目 涉及海量数据和复杂算法 因此需要进行大量代码分析 我目前依靠的是
  • 渲染 ThreeJS 应用程序第一帧时的性能问题

    目前 当我渲染以下内容时 我的 ThreeJS 应用程序的性能受到很大影响第一帧 它会导致 Edge 和 IE 11 浏览器冻结 5 秒 并弹出窗口指示 此窗口没有响应 这可能会吓到我的用户 使用 Chrome 的性能分析器 问题似乎来自几
  • 有效地生成所有排列

    我需要尽快生成所有排列 https en wikipedia org wiki Permutation整数的0 1 2 n 1并得到结果作为NumPy https numpy org 形状数组 factorial n n 或者迭代此类数组的
  • SQL Server 不使用索引将日期时间与非空进行比较

    我有一个与其他任何表都不相关的简单表 它有一个非 PK 列 它是一个日期 我已经为该列创建了一个非聚集索引 如果我提出这个查询 select from table where datecolumn is not null 但如果我删除 no
  • 为什么对于小数组,for-of 循​​环比标准 for 循环快,而对于大数组则慢?

    在 JavaScript 中 我注意到 ES6for of循环的性能与传统的有很大不同for start stop step loop 基准 const n 10000 const arr Array n fill map e i gt i
  • 大数组上的 SSE 性能较慢

    我是 SSE 编程新手 所以我希望有人可以帮助我 我最近使用 GCC SSE 内在函数实现了一个函数来计算 32 位整数数组的总和 下面给出了我的实现代码 int ssum const int d unsigned int len stat
  • 抛出 Java 异常时是否会生成堆栈跟踪?

    这是假设我们不调用 printstacktrace 方法 只是抛出和捕获 我们正在考虑这样做是为了解决一些性能瓶颈 不 堆栈跟踪是在构造异常对象时生成的 而不是在抛出异常对象时生成的 Throwable 构造函数调用 fillInStack

随机推荐

  • Django FormView 和分页

    如果表单有效 我正在使用 django 的 FormView 返回对象集 我的视图函数是这样的 class IdeaView FormView template name contributor browse photo html def
  • 无法启动应用程序(CreateProcess 错误=87),无法使用缩短类路径解决方法

    当我在 Windows 上的 Eclipse 中启动应用程序时 我收到以下错误 执行命令行时发生异常 无法运行程序 CreateProcess error 87 参数不正确 我过去通过缩短 CLASSPATH 解决了这个问题 我现在已经到了
  • 如何维护 Web 应用程序中的状态 - 因为 HTTP 是无状态的

    我是构建 Web 应用程序的新手 刚刚开始学习和设置 Grails 我计划构建一个具有 4 到 5 页流程的应用程序 由于HTTP是无状态协议 那么通常页面之间的状态是如何维护的 我很好奇这里接受的标准是什么 我应该创建会话范围的对象并在页
  • 与 ASP.NET MVC 2 中的 SelectList 作斗争

    我有一个看起来像这样的模型 public class SampleModel public static SampleModel Create return new SampleModel Boolean true set several
  • 如何从命令行打开 SourceTree?

    有没有一种快速简单的方法可以从命令行打开 SourceTree 中的 git 存储库 我从终端做了很多 git 工作 但有时没有什么可以替代良好的历史视图 差异 希望能够在不使用书签的情况下打开 安装 SourceTree 命令行工具将为您
  • 如何从完成块中检索返回值?

    是否可以在主线程上运行完成块 例如 我有一个返回值的方法 int test here one method is called with completion block with return type void obj somemeth
  • 使用 sqlmodel 在 fastapi 中深度嵌套响应模型

    我想在这里重复一下之前的内容question https stackoverflow com questions 74719687 getting joined tables from sqlmodel as a nested respon
  • 将静态库链接到其他静态库

    我有一小段代码依赖于许多静态库 a 1 a n 我想将该代码打包在静态库中并使其可供其他人使用 我的静态库 我们称之为 X 编译得很好 我创建了一个简单的示例程序 它使用 X 中的函数 但是当我尝试将其链接到 X 时 我收到许多关于缺少库
  • 在 Unity3d 中打开 iPhone 和 Android 设备相机

    我正在开发一个应用程序 需要在全视图中打开设备摄像头 并且我正在为 iOS 和 Android 制作这个应用程序 那么谁能告诉我如何在 Unity 中为所有 Android 和 iPhone 设备打开全屏设备摄像头 这对我来说会有很大的帮助
  • 选择另一个选项卡时的 popToRootViewController

    Context 我同时使用 TabViewController 和 NavigationController 这两个选项卡是RECENT and POPULAR他们会显示帖子列表 想象你在里面RECENT选项卡并单击帖子 您将进入posts
  • 是否可以设置现有 Azure blob 的内容处置?

    基于刺激在这里的答案 Azure 存储 API 内容配置 https stackoverflow com questions 20719641 azure storage api contentdisposition 以及在这里找到的信息
  • 如何使用 PendingIntent 从服务到客户端/活动进行通信?

    我一直在 Android 开发者网站上阅读以下文本 特别是在框架主题 gt 服务 gt 启动服务 http developer android com guide topics fundamentals services html Star
  • if else 在mysql中查询

    我需要 mysql 查询中嵌套 if else 条件的示例 您还可以将 case 语句用于 if else 条件 SELECT CASE field1 WHEN A THEN value is A WHEN B THEN value is
  • 为什么“splatting”关键字参数时 ** 是可选的?

    鉴于此方法定义 def foo a nil b nil p a a b b end 当我使用单个哈希参数调用该方法时 哈希总是隐式转换为关键字参数 无论 hash b 1 foo hash gt a gt nil b gt 1 foo ha
  • 在 Typescript 中创建 `toFunc` 泛型方法?

    我有一个 Ts 模型 需要填充一些属性 当前的代码简化是 var claimSummaryDetails Name this store selectSync currentUser Result Family find m gt m Me
  • 上传资源文件时,createBlockOutputStream 中 Spark HDFS 异常

    我正在尝试在集群中运行我的 JARyarn cluster但一段时间后我遇到了例外 最后INFO在失败之前是Uploading resource 我已经检查了所有安全组 确实如此hsdf ls成功但仍然收到错误 bin spark subm
  • Mapbox 与 Angular 6.“找不到地图容器”错误

    我正在开发我的第一个角度网络应用程序 我想介绍一些类似于谷歌地图的东西 由于新的计费策略 我不想使用最后一个 所以我尝试了 MapBox 按照教程 我成功创建了我需要的地图 问题是 我不知道如何在角度分量上显示它 我为地图生成了这个文件 并
  • 此上下文中仅支持原始类型或枚举类型

    我已经看到了很多关于这个主题的问题 但我无法对其中任何一个真正解决我所看到的问题进行排序 我有一个活动实体 用于跟踪分配给哪个员工以及哪个员工创建了记录并更新了记录 如果我删除 where a AssignedEmployee curren
  • PHP获取外部页面内容

    我从另一个网站获取 htmlfile get contens 我的问题是如何获得特定的标签值 假设我有 div p class paragraph 1800 p div 我怎样才能获得段落的值 谢谢 如果这个例子真的那么简单 你可以只使用正
  • 如何从 java 客户端正确使用 Prometheus Histogram 来跟踪大小而不是延迟?

    我有一个处理集合的 API 该API的执行时间与集合大小有关 集合越大 花费的时间就越多 我正在研究如何使用普罗米修斯做到这一点 但不确定我是否正确地做事 该领域的文档有点缺乏 我做的第一件事是定义一个摘要指标来衡量 API 的执行时间 我