我正在使用Spring Boot 2.x和Prometheus。
我想公开一个端点:端口,普罗米修斯可以抓取它与执行器路线上的其余端点分开。
这是为了允许围绕执行器与指标使用不同的安全模型,有谁知道这是否可能以及如何?
这是我从Slack频道得到的答案。希望这有帮助
Spring Boot 上的默认 Prometheus 端点由此类公开 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
您可以在下面创建具有不同 ID 的第二个类
@WebEndpoint(id = "prometheus")
这将公开第二个终结点。然后,您可以将 Prometheus 配置为使用不同的抓取间隔抓取两个单独的端点
你可以使用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/指标