我有一个带有Jersey RESTendpoint的web应用程序(war)。我正在与prometheus/micrometer集成以生成度量。我在这里公开了“/metrics”endpoint
@Path("/metrics")
public class Metrics {
private static final PrometheusMeterRegistry prometheusRegistry = new PrometheusMeterRegistry(PrometheusConfig.DEFAULT);
static {
new JvmGcMetrics().bindTo(prometheusRegistry);
new JvmMemoryMetrics().bindTo(prometheusRegistry);
new JvmCompilationMetrics().bindTo(prometheusRegistry);
new JvmThreadMetrics().bindTo(prometheusRegistry);
}
@GET
public String getMetrics() {
return prometheusRegistry.scrape();
}
}
我被困在如何生成http请求度量上。我找不到任何与获取这些指标相关的代码。有人能帮我吗?
您需要包含一个过滤器
,以便在收到每个请求时记录该请求。请参阅 https://github.com/spring-projects/spring-boot/blob/master/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/web/servlet/WebMvcMetricsFilter.java 了解Spring如何做到这一点。
如果可能的话,我建议不要使用< code>static注册表,而应该使用依赖注入。
这是您可以在过滤器的doFilter
方法中执行的操作的一个小例子
long start = System.nanoTime()
try {
filterChain.doFilter(request, response);
long durationNanos = System.nanoTime() - start;
prometheusRegistry.timer("http.server.requests", "status", response.getStatus().toString()).record(durationNanos, TimeUnit.NANOSECONDS)
} catch (Exception ex) {
//Equivalent exception timer recording
throw ex;
}
作为检查所建议的替代方案,您可以使用甚至在1.0.0
版本之前以micromet-jersey2
库的形式存在的Microeter的泽西服务器检测。您可以在这里找到源代码。
您的入口点是MetricsApplicationEventListener
,它可以在JerseyResourceConfig
中注册。例如,您可以查看测试类,了解如何实现这一点。
您还可以在此处查看如何在Spring Boot中集成/自动配置此功能。
最后一点:Spring启动指标名称是 http.server.requests
(以区别于 HTTP 客户端请求指标),如果有一天您将迁移到Spring启动,或者您的平台已经在运行Spring启动应用程序,则您的非Spring启动 HTTP 请求指标将很好地匹配,事不宜迟。
我正在将JavaSpring项目从java 8迁移到java 11。所以我需要将dropwizard指标替换为千分尺。Dropwizard指标记录到达特定endpoint时的状态和响应。例如:endpoint- 有没有办法在千分尺中实现相同的效果?我知道有注释,但由于某种原因它不起作用。(我把它放在endpoint方法上)。 我的属性文件(仅与指标相关的值):
所以我试着在Spring靴2上使用测微计。X向普罗米修斯记录指标。我在gradle中添加了依赖项: 然后我尝试添加任何指标,例如: 当我去localhost:端口/执行器/普罗米修斯我可以看到一些指标,如: 但我加上的计时器、仪表或计数器什么都没有。我通过代码对自己进行了调试,我可以看到代码已经执行,当我查看compositeRegistry对象时,我可以看到一些可用的东西,即使我没有看到值中任何
我有一个应用程序,其中包含2打Spring批处理cronjobs.There没有Rest控制器,因为它是一个分析应用程序,它每天运行,从数据库读取数据,处理它,然后将聚合数据存储在另一个数据库中。我想使用千分尺对作业进行Spring内置度量,并将它们推送到Prometheus。由于我的应用程序不是网络服务器应用程序,所以千分尺仍然会在HOST: 8080上发布结果?执行器会自动在HOST: 808
我正在将一个微服务更新到spring Boot2,并将度量标准从dropwizard迁移到Micrometer。我们正在使用普罗米修斯来存储度量标准,并使用格拉法纳来显示它们。我想测量每秒对所有URL的请求。千分尺文档说明:
有没有办法关闭执行器/千分尺中的一些返回的度量值?现在看着它们,我看到大约1000个,并想将它们缩减到精选的几个,比如100个,以便实际发送到我们的注册表。
我对Spring很陌生,正在尝试将我的应用程序连接到麋鹿。该应用程序运行的是Spring boot 1.5.5,因此我使用的是微米遗产。我的pom看起来像这样: 每当我尝试启动我的应用程序时,我都会收到以下错误: 根本原因似乎是类io.micrometer.core.instrument.config.validate.Validated它似乎没有像它应该的那样出现在包中。对此有什么想法吗?