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}