提问者:小点点

不带Spring的定制普罗米修斯公制


我需要为web应用程序提供自定义度量。问题是我不能使用Spring,而是必须使用jax-rsendpoint。要求非常简单。假设您有一个带有键值对的映射,其中键是度量名称,值是一个简单的整数,它是一个计数器。代码如下所示:

public static Map<String, Integer> metrics = Map.of(
    "logged_in_users_today", 123
);

@GET
@Path("/metrics/{metricId}")
public Integer getMetric(@PathParam("metricId") String metricId) {
    int count = metrics.get(metricId);
    return count;
}

共1个答案

匿名用户

这的确相当容易。这是代码:

public static double metricValue = 123;

@GET
@Path("/metrics")
public String getMetrics() {
    Writer writer = new StringWriter();
    CollectorRegistry registry = new CollectorRegistry();
    Gauge gauge = Gauge.build().name("logged_in_users").help("Logged in users").register(registry);
    gauge.set(metricValue);
    TextFormat.write004(writer, registry.metricFamilySamples());
    return writer.toString();
}

我一直在纠结于方法MetricFamilySamples的名称,因为我认为它只会输出示例数据。