001package io.prometheus.client.exporter; 002 003import io.prometheus.client.Collector; 004import io.prometheus.client.CollectorRegistry; 005import io.prometheus.client.exporter.common.TextFormat; 006 007import javax.servlet.ServletException; 008import javax.servlet.http.HttpServlet; 009import javax.servlet.http.HttpServletRequest; 010import javax.servlet.http.HttpServletResponse; 011import java.util.Collections; 012import java.util.Enumeration; 013import java.io.IOException; 014import java.io.Writer; 015 016public class MetricsServlet extends HttpServlet { 017 018 private CollectorRegistry registry; 019 020 /** 021 * Construct a MetricsServlet for the default registry. 022 */ 023 public MetricsServlet() { 024 this(CollectorRegistry.defaultRegistry); 025 } 026 027 /** 028 * Construct a MetricsServlet for the given registry. 029 */ 030 public MetricsServlet(CollectorRegistry registry) { 031 this.registry = registry; 032 } 033 034 @Override 035 protected void doGet(final HttpServletRequest req, final HttpServletResponse resp) 036 throws ServletException, IOException { 037 resp.setStatus(HttpServletResponse.SC_OK); 038 resp.setContentType(TextFormat.CONTENT_TYPE_004); 039 040 Writer writer = resp.getWriter(); 041 TextFormat.write004(writer, registry.metricFamilySamples()); 042 writer.flush(); 043 writer.close(); 044 } 045 046 @Override 047 protected void doPost(final HttpServletRequest req, final HttpServletResponse resp) 048 throws ServletException, IOException { 049 doGet(req, resp); 050 } 051 052}