001package io.prometheus.metrics.exporter.httpserver;
002
003import com.sun.net.httpserver.HttpExchange;
004import com.sun.net.httpserver.HttpHandler;
005import io.prometheus.metrics.config.PrometheusProperties;
006import io.prometheus.metrics.exporter.common.PrometheusScrapeHandler;
007import io.prometheus.metrics.model.registry.PrometheusRegistry;
008
009import java.io.ByteArrayOutputStream;
010import java.io.IOException;
011import java.io.PrintStream;
012import java.io.PrintWriter;
013import java.io.StringWriter;
014import java.nio.charset.StandardCharsets;
015import java.util.logging.Level;
016import java.util.logging.Logger;
017
018/**
019 * Handler for the /metrics endpoint
020 */
021public class MetricsHandler implements HttpHandler {
022
023    private final PrometheusScrapeHandler prometheusScrapeHandler;
024
025    public MetricsHandler() {
026        prometheusScrapeHandler = new PrometheusScrapeHandler();
027    }
028
029    public MetricsHandler(PrometheusRegistry registry) {
030        prometheusScrapeHandler = new PrometheusScrapeHandler(registry);
031    }
032
033    public MetricsHandler(PrometheusProperties config) {
034        prometheusScrapeHandler = new PrometheusScrapeHandler(config);
035    }
036
037    public MetricsHandler(PrometheusProperties config, PrometheusRegistry registry) {
038        prometheusScrapeHandler = new PrometheusScrapeHandler(config, registry);
039    }
040
041    @Override
042    public void handle(HttpExchange t) throws IOException {
043        prometheusScrapeHandler.handleRequest(new HttpExchangeAdapter(t));
044    }
045}