没有 Spring 的自定义普罗米修斯指标
Custom prometheus metric without Spring
我需要为 Web 应用程序提供自定义指标。问题是我不能使用 Spring 但我必须改用 jax-rs 端点。要求非常简单。假设您有一个包含键值对的映射,其中键是指标名称,值是一个简单的整数,它是一个计数器。代码将是这样的:
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;
}
但现在我需要使用一些 API 来发布这些指标。我查阅了一些教程,但我只能找到基于 Spring 的演示,这些演示使用千分尺注释来导出指标。我怎样才能以编程方式做到这一点?
确实比较容易。这是代码:
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
因为我认为它只会输出样本数据 ;)。但这确实有效。
我需要为 Web 应用程序提供自定义指标。问题是我不能使用 Spring 但我必须改用 jax-rs 端点。要求非常简单。假设您有一个包含键值对的映射,其中键是指标名称,值是一个简单的整数,它是一个计数器。代码将是这样的:
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;
}
但现在我需要使用一些 API 来发布这些指标。我查阅了一些教程,但我只能找到基于 Spring 的演示,这些演示使用千分尺注释来导出指标。我怎样才能以编程方式做到这一点?
确实比较容易。这是代码:
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
因为我认为它只会输出样本数据 ;)。但这确实有效。