001package nl.nlighten.prometheus.tomcat; 002 003 004import javax.servlet.ServletConfig; 005import javax.servlet.annotation.WebServlet; 006 007import io.prometheus.client.Collector; 008import io.prometheus.client.CollectorRegistry; 009import io.prometheus.client.exporter.MetricsServlet; 010import io.prometheus.client.hotspot.DefaultExports; 011 012import java.util.Arrays; 013import java.util.Enumeration; 014import java.util.HashSet; 015 016 017@WebServlet("/") 018public class TomcatMetricsServlet extends MetricsServlet { 019 020 @Override 021 public void init(ServletConfig config) { 022 if (!initialized()) { 023 DefaultExports.initialize(); 024 new TomcatGenericExports(false).register(); 025 if (TomcatJdbcPoolExports.isTomcatJdbcUsed()) { 026 new TomcatJdbcPoolExports().register(); 027 } else { 028 new TomcatDbcp2PoolExports().register(); 029 } 030 } 031 } 032 033 private boolean initialized() { 034 Enumeration<Collector.MetricFamilySamples> samples = CollectorRegistry.defaultRegistry.filteredMetricFamilySamples(new HashSet<String>(Arrays.asList("tomcat_info"))); 035 return samples.hasMoreElements(); 036 } 037} 038 039