001package io.prometheus.jmx; 002 003import io.prometheus.client.exporter.MetricsServlet; 004import org.eclipse.jetty.server.Server; 005import org.eclipse.jetty.servlet.ServletContextHandler; 006import org.eclipse.jetty.servlet.ServletHolder; 007 008import java.io.File; 009import java.net.InetSocketAddress; 010 011public class WebServer { 012 013 public static void main(String[] args) throws Exception { 014 if (args.length < 2) { 015 System.err.println("Usage: WebServer <[hostname:]port> <yaml configuration file>"); 016 System.exit(1); 017 } 018 019 String[] hostnamePort = args[0].split(":"); 020 int port; 021 InetSocketAddress socket; 022 023 if (hostnamePort.length == 2) { 024 port = Integer.parseInt(hostnamePort[1]); 025 socket = new InetSocketAddress(hostnamePort[0], port); 026 } else { 027 port = Integer.parseInt(hostnamePort[0]); 028 socket = new InetSocketAddress(port); 029 } 030 031 JmxCollector jc = new JmxCollector(new File(args[1])).register(); 032 033 Server server = new Server(socket); 034 ServletContextHandler context = new ServletContextHandler(); 035 context.setContextPath("/"); 036 server.setHandler(context); 037 context.addServlet(new ServletHolder(new MetricsServlet()), "/metrics"); 038 server.start(); 039 server.join(); 040 } 041}