为Prometheus公开指标端点的替代方案是什么?

问题描述 投票:0回答:1

我想将Prometheus指标暴露给端点。我没有spring-boot所以我需要自己公开指标。

我从以下代码中获取了示例

https://micrometer.io/docs/registry/prometheus#_configuring

PrometheusMeterRegistry prometheusRegistry = new PrometheusMeterRegistry(PrometheusConfig.DEFAULT);

try {
    HttpServer server = HttpServer.create(new InetSocketAddress(8080), 0);
    server.createContext("/prometheus", httpExchange -> {
        String response = prometheusRegistry.scrape(); (1)
        httpExchange.sendResponseHeaders(200, response.getBytes().length);
        try (OutputStream os = httpExchange.getResponseBody()) {
            os.write(response.getBytes());
        }
    });

    new Thread(server::start).start();
} catch (IOException e) {
    throw new RuntimeException(e);
}

虽然它有效,但我想避免使用防晒包。有没有办法用netty,okhttp或apache这样简短而优雅的方式做到这一点?

谢谢。

java http prometheus micrometer
1个回答
1
投票

你可以使用这段代码:

Server server = new Server(8080);
ServletContextHandler context = new ServletContextHandler();
context.setContextPath("/");
server.setHandler(context);
context.addServlet(new ServletHolder(new MetricsServlet()), "/prometheus");

进口中没有太阳包,只有JettyPrometheus Java client

import io.prometheus.client.exporter.MetricsServlet;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
© www.soinside.com 2019 - 2024. All rights reserved.