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

时间:2018-06-27 11:58:50

标签: spring-boot

我正在使用Spring Boot 2.x和Prometheus。

我想公开一个Prometheus可以刮除的端点:端口,该端口与执行器路径上的其他端点分开。

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

2 个答案:

答案 0 :(得分:1)

您可以使用io.prometheus。

添加到您的pom.file

            <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 /指标

答案 1 :(得分:0)

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

此类https://github.com/spring-projects/spring-boot/blob/master/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/export/prometheus/PrometheusScrapeEndpoint.java公开了Spring Boot上的默认Prometheus端点

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

@WebEndpoint(id = "prometheus")

这将公开第二个端点。然后,您可以配置Prometheus以不同的刮擦间隔刮擦两个单独的端点