当前位置: 首页 > 知识库问答 >
问题:

KafkaMetricsReporter由Spring启动执行器支持

陈马鲁
2023-03-14

我决定回到我的想法,将Kafka指标与Spring Boot Actuator集成,我在这里已经提到:

https://github.com/spring-projects/spring-boot/issues/6227

到目前为止,我有一个单独的“沙盒”项目和工作代码,我想将其合并到Spring Boot中。现在我有点困惑了。我的部分测试需要powermock来模拟Kafka的“超级安全”类:

package org.apache.kafka.common.metrics;

// some imports...

public final class KafkaMetric implements Metric {
    private MetricName metricName;
    private final Object lock;
    private final Time time;
    private final Measurable measurable;
    private MetricConfig config;

    KafkaMetric(Object lock, MetricName metricName, Measurable measurable, MetricConfig config, Time time) {
        this.metricName = metricName;
        this.lock = lock;
        this.measurable = measurable;
        this.config = config;
        this.time = time;
    }

    // some good code here, but no public constructor and the class is final... of course.

}

但powermock并没有在Spring Boot中使用。

我该怎么办?

  1. 在spring boot依赖项和spring boot执行器中添加最新的稳定powermock
  2. 仅将最新的稳定powermock添加到spring boot执行器-让它成为隐藏的秘密助手
  3. 排除需要powermock的测试
  4. 忘了Kafka指标吧,它们巨大而可怕,没有人希望它们出现在我们漂亮友好的Spring启动执行器中

共有1个答案

孙书
2023-03-14

在评论中得到你的确认,我只是在这里复制我的评论作为有效的答案,以正确结束这个问题。

您可以尝试使用度量。addMetric()创建KafkaMetric实例,然后通过kafkastatististicsProvider对其作出反应。metricChange(),您将在测试之前在Metrics实例中注册它。当然不是Powermock。

下周我将设法抽出时间为您的执行器项目贡献这一部分,以避免Powermock。

 类似资料:
  • 问题内容: 我一直在研究Spring / Spring MVC应用程序,并且希望添加性能指标。我遇到过Spring Boot Actuator,它看起来是一个不错的解决方案。但是我的应用程序不是Spring Boot应用程序。我的应用程序在传统容器Tomcat 8中运行。 我添加了以下依赖 我创建了以下配置类。 我什至可以按照StackOverflow另一篇文章的建议在每个配置类上添加 问题答案:

  • Spring Boot Actuator中存在一个错误,如果使用了某些属性,在暴露处的就绪endpoint和处的活动endpoint时不起作用。您会得到一个白标签错误页面。 此应用程序没有显式的/错误映射,因此您将其视为回退。 这些属性包括: 默认情况下,我需要使用管理端口,以便可以使用执行器/指标进行监控。因此,为了进行可靠的健康检查,我需要在主/应用程序端口上公开活动性和就绪性endpoint

  • 我用的是Spring靴。为了监视JVM内存,我正在使用Spring Boot Actuator的/metricsendpoint。 我无法理解键实际上代表什么: 有人能告诉我它们到底是什么吗? CMS(并发标记扫描)和MarkSweepCompact相同吗?我应该使用CMS(并发标记扫描)吗?或者我应该使用哪种GC算法?

  • 我们已经在几个项目中使用了Spring Boot,现在我们使用的是最新版本1.2.3。我们正在合并执行器。到目前为止,一切都很顺利,只是我们发现/health指示器[default]显示服务已关闭。事实并非如此。这些服务是通过数据源实现的。它可以调用其他SOAP或Rest服务。卫生服务部门在看什么来衡量一项服务是否下降?

  • 我有一个带有Spring Security微服务的Spring Boot 2,我已使用米计/Spring Actuator配置了该微服务。当我在antMatcher("/驱动器/**")endpoint上permitAll()时,一切都很好。我能够通过正确配置的Prometheus yaml文件检索Prometheus指标。 但是,我的微服务不在防火墙后面,因此对世界开放。我只希望普罗米修斯能够访

  • 我正在我的项目中使用模块,该模块公开了要监视的RESTendpointURL 默认情况下,仅公开 和 终结点。 根据我的使用案例,我正在通过< code > application . properties 文件自定义endpoint。 我想了解,Spring启动究竟在哪里为和创建实际的endpoint,以及它如何通过HTTP公开它们?