首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Java prometheus sdk创建带有标签的量规指标?

如何使用Java prometheus sdk创建带有标签的量规指标?
EN

Stack Overflow用户
提问于 2020-03-26 21:15:02
回答 2查看 3K关注 0票数 1

我有一个springboot Kotlin web服务,它使用Actuator (spring-boot-starter-actuator)和测微器(micrometer-registry-prometheus)向prometheus scraper公开指标。

为了监控队列中操作的大小,我使用了一个自定义的量规

代码语言:javascript
复制
val gauge = Gauge.build()
        .name("operation_queue_size")
        .help("Size of queue")
        .register(collectorRegistry)

# later
gauge.inc()
# or
gauge.dec()

我想通过添加一个表示队列中操作类型的标记来改进这个指标,但在Builder类上找不到任何合适的方法。

我们的目标是公开一个度量标准,比如:

代码语言:javascript
复制
operation_queue_size{op_type="deletions"} 999
operation_queue_size{op_type="insertions"} 999

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2020-03-26 21:27:24

我找到了解决方案:

代码语言:javascript
复制
val gauge = Gauge.build()
        .name("ic_queue_size")
        .help("Size of queue")
        .labelNames("op_type")
        .register(collectorRegistry)

# later
gauge.labels("deletions").inc()
# or
gauge.labels("deletions").dec()

之所以很难找到,是因为这个库使用了术语labels,而普罗米修斯的文档将它们称为tags

票数 2
EN

Stack Overflow用户

发布于 2020-12-11 01:46:11

创建仪表盘有两种方法:

千分尺芯

使用测微仪,您可以从要检查的对象方法创建仪表盘,例如from baeldung

代码语言:javascript
复制
import io.micrometer.core.instrument.Gauge;
import io.micrometer.core.instrument.MeterRegistry;

List<String> list = new ArrayList<>(4);

Gauge gauge = Gauge
  .builder("cache.size", list, List::size)
  .tags("example", "list size")
  .register(registry);

它接受一个字符串"cache.size"作为仪表的名称,一个对象list和一个lambda (() -> ),这里是list::size。多亏了这一点,仪表将会更新。

然后仪表每次都会自动更新(这里是一个带有断言的示例,其值是什么):

代码语言:javascript
复制
assertEquals(0.0, gauge.value());
list.add("1");
assertEquals(1.0, gauge.value());

普罗米修斯客户端

对于prometheus sdk,它是:

代码语言:javascript
复制
import io.prometheus.client.CollectorRegistry;
import io.prometheus.client.Gauge;

Gauge gauge = Gauge.build()
        .build("cache.size", "size of the cache")
        .labelNames("type")
        .register(collectorRegistry);

但是,您需要手动更改仪表值:

代码语言:javascript
复制
# Increase
gauge.labels("list size").inc();
# Decrease
gauge.labels("list size").dec();
# Set value
gauge.labels("list size").set(list.size());

现在你有选择了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60868142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档