001package io.prometheus.client.servlet.jakarta.exporter; 002 003import io.prometheus.client.CollectorRegistry; 004import io.prometheus.client.Predicate; 005import io.prometheus.client.servlet.common.exporter.Exporter; 006 007import io.prometheus.client.servlet.common.exporter.ServletConfigurationException; 008import jakarta.servlet.ServletConfig; 009import jakarta.servlet.ServletException; 010import jakarta.servlet.http.HttpServlet; 011import jakarta.servlet.http.HttpServletRequest; 012import jakarta.servlet.http.HttpServletResponse; 013import java.io.IOException; 014 015import static io.prometheus.client.servlet.jakarta.Adapter.wrap; 016 017/** 018 * The MetricsServlet class provides a simple way of exposing the metrics values. 019 */ 020public class MetricsServlet extends HttpServlet { 021 022 private final Exporter exporter; 023 024 public MetricsServlet() { 025 this(CollectorRegistry.defaultRegistry, null); 026 } 027 028 public MetricsServlet(Predicate<String> sampleNameFilter) { 029 this(CollectorRegistry.defaultRegistry, sampleNameFilter); 030 } 031 032 public MetricsServlet(CollectorRegistry registry) { 033 this(registry, null); 034 } 035 036 public MetricsServlet(CollectorRegistry registry, Predicate<String> sampleNameFilter) { 037 exporter = new Exporter(registry, sampleNameFilter); 038 } 039 040 @Override 041 public void init(ServletConfig servletConfig) throws ServletException { 042 try { 043 exporter.init(wrap(servletConfig)); 044 } catch (ServletConfigurationException e) { 045 throw new ServletException(e); 046 } 047 } 048 049 @Override 050 protected void doGet(final HttpServletRequest req, final HttpServletResponse resp) throws IOException { 051 exporter.doGet(wrap(req), wrap(resp)); 052 } 053 054 @Override 055 protected void doPost(final HttpServletRequest req, final HttpServletResponse resp) throws IOException { 056 exporter.doPost(wrap(req), wrap(resp)); 057 } 058}