Какова будет альтернатива выставить конечную точку метрики для Прометея? - PullRequest
0 голосов
/ 26 марта 2019

Я бы хотел показать метрики Прометея конечной точке. У меня нет весенней загрузки, поэтому мне нужно выставлять метрики самостоятельно.

Я взял пример кода с:

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);
}

Пока это работает, я бы хотел избежать использования пакета Sun. Есть ли способ сделать это как короткий и элегантный, например, с помощью netty, ohttp или apache?

Спасибо.

1 Ответ

1 голос
/ 22 апреля 2019

Вы можете использовать этот кусок кода:

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

В импорте нет пакетов sun, только Jetty и Клиент Prometheus Java :

import io.prometheus.client.exporter.MetricsServlet;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
...