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

如何在Spring Boot执行器上拆分指标以分离endpoint/端口

柳弘方
2023-03-14

我用的是Spring靴2。x和普罗米修斯。

我想公开一个endpoint:普罗米修斯可以刮取的端口,它与执行器路径上的其他endpoint分离。

这是为了允许围绕执行器的不同安全模型与指标,是否有人知道这是否可行以及如何实现?

共有2个答案

沈高峻
2023-03-14

您可以使用io。普罗米修斯。

添加pom。文件

            <groupId>io.prometheus</groupId>
            <artifactId>simpleclient</artifactId>
            <version>${prom.version}</version>
        </dependency>
        <dependency>
            <groupId>io.prometheus</groupId>
            <artifactId>simpleclient_hotspot</artifactId>
            <version>${prom.version}</version>
        </dependency>
        <dependency>
            <groupId>io.prometheus</groupId>
            <artifactId>simpleclient_httpserver</artifactId>
            <version>${prom.version}</version>
        </dependency>

创建一个这样的班级

@Configuration
@ComponentScan(basePackageClasses = MetricConfiguration.class)
public class MetricConfiguration {
    private static final Logger LOGGER = LoggerFactory.getLogger(MetricConfiguration.class);
    private HTTPServer server;

    private static final int DEFAULT_PORT = 28080;

    @PostConstruct
    private void init() {
       DefaultExports.initialize();
       server = new HTTPServer(DEFAULT_PORT);
       LOGGER.info("prometheus exporter started on port {}", DEFAULT_PORT);
    }

    @PreDestroy
    private void destroy() {
        server.stop();
        LOGGER.info("prometheus exporter stopped");

    }
}

享受应用程序上的指标:28080/指标

孙海
2023-03-14

这是我从Slack频道得到的答案。希望这能有所帮助

spring boot上的默认prometheusendpoint由此类公开https://github.com/spring-projects/spring-boot/blob/master/html" target="_blank">spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/export/prometheus/PrometheusScrapeEndpoint.java

您可以在下面创建另一个具有不同id的类

@WebEndpoint(id = "prometheus")

这将公开第二个endpoint。然后,您可以配置prometheus以不同的刮取间隔刮取两个单独的endpoint

 类似资料:
  • spark如何给一个执行器分配一个分区? 当我使用 1 个驱动程序和 5 个执行器在火花外壳中运行以下行时: 重新分区后,10个分区仍然位于原来的两个节点上(总共5个)。这似乎非常低效,因为5个任务在包含分区的每个节点上重复运行,而不是平均分布在节点上。在同一个rdds上重复多次的迭代任务中,效率低下最为明显。 所以我的问题是,Spark如何决定哪个节点具有哪个分区,有没有办法强制将数据移动到其他

  • 我希望所有执行器endpoint(在文档中描述)都可用。在文档之后,添加了启动器启动器依赖项和属性,但大多数endpoint不可用(HTTP 404)。 唯一可用的endpoint是,但它显示无用的信息: 添加属性。 添加了依赖项: 获取/执行器的结果 启用执行器endpoint的最小设置是什么?

  • 根据Spring靴执行器的文件 来启用检测 和 生成度量 当添加时,会出现以下错误 即使@bean在那里…

  • 我正在将一个旧的java Spring项目重构为springboot,并以传统的war风格部署它。出于某种原因,我必须坚持传统的web.xml来启动应用程序。多亏了Springboot遗产,我可以通过web.xml实现这一点: 此外,我添加了springboot执行器依赖项。应用程序。属性如下所示: 应用程序可以正常启动,但当我尝试从浏览器访问endpoint时,它只返回一个“401需要完全身份验

  • 我正在开发一个Spring集成应用程序。 我有一个入站通道适配器,用于读取目录,然后是一个拆分器,用于将文件拆分为行,最后是一个udp出站通道适配器,用于发送行 我想每秒钟发一封信 我可以通过定义自己的拆分器并在每次读取一行时等待1s来做到这一点,但我想知道是否可以在xml文件中尽可能简单地完成它。 提前谢谢

  • 我试图在与应用程序端口相同的端口上启用执行器endpoint(server.port=8080在application.properties文件中指定),但由于某种原因,它不起作用。当我运行应用程序时,我可以从应用程序返回响应,但不能从执行器endpoint返回响应。我可以看到日志中提到了暴露在基路径“/执行器”下面的endpoint,如下面的屏幕截图所示。但当我尝试点击执行器URL时,它给出了4