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