我们的系统由多个基于 JAVA 的微服务组成,每个微服务利用io.prometheus simpleclient报告其 RT 状态
集成代码看起来很简单
// Initialize default JVM metrics for Prometheus
DefaultExports.initialize();
DeploymentInfo monitoringServletInfo = Servlets.deployment()
.setClassLoader(MonitoringServer.class.getClassLoader())
.setContextPath("/")
.setDeploymentName("monitoring")
.addServlet(Servlets.servlet(MetricsServlet.class).addMapping("/*"));
DeploymentManager monitoringDeployment = Servlets.defaultContainer().addDeployment(monitoringServletInfo);
monitoringDeployment.deploy();
HttpHandler monitoringHandler = monitoringDeployment.start();
server = Undertow.builder()
.addHttpListener(port, "0.0.0.0")
.setHandler(
Handlers.path().addExactPath(HEALTH_PATH, new HealthHandler())
.addExactPath(MONITORING_PATH, monitoringHandler))
.build();
server.start();
由于所有微服务都公开了相同的指标名称,我们正在寻找一种方法来通过为每个微服务提供自定义标签来区分它们
例如,此指标具有以下定义
jvm_buffer_pool_used_bytes{pool="direct",} 116776.0
我们的目的是添加一个自定义标签,然后它会比在 Grafana 中更容易分离。
jvm_buffer_pool_used_bytes{pool="direct",service="foo"} 116776.0
我想相信这个库必须有这样的能力,不幸的是用谷歌搜索了一段时间并没有那么成功
任何想法将不胜感激。