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}