prometheus的agent 二次开发代码参考

import com.codahale.metrics.MetricRegistry;
import io.prometheus.client.CollectorRegistry;
import io.prometheus.client.dropwizard.DropwizardExports;
import io.prometheus.client.exporter.MetricsServlet;
import io.prometheus.client.hotspot.DefaultExports;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;web

public class PrometheusReporter {服务器

 

//建立Server,加载Connectors,加载handlers,加载Servlets等,启动服务start,最后加入服务器join。
//webappcontext 继承于servletContextHandler,servletContextHandler继承于contexthandler
//server 用于存储handler,handler分不少种,此处是servlet 运行在servletcontext 中,servlet 的工做是由handler来指挥和安排,handler是遵从于外界的web 请求app

//当外界web 请求过来时,首先接到这个请求的是handler,contexthandler 会根据请求的path找到and交由内部对应的servlet 来处理eclipse

//serlvet的存在和建立(即须要如下步骤完成的状况下才可能存在):包括建立server ,设置server端口,建立context ,设置contextpath,设置contexthandlerwebapp

//添加servlet :需serlvet的存在和建立下能够操做的url

public static void start( MetricRegistry registry ) throws Exception {视频

// Hook the Dropwizard registry into the Prometheus registry
// via the DropwizardExports collector.server

//启动汽车前,先把汽车的监控链接到对的监控视屏上,方便监控视频能够采集到汽车的数据
CollectorRegistry.defaultRegistry.register(new DropwizardExports(registry));继承

// Expose Prometheus metrics.
Server server = new Server(9404);//将本身的端口设置为9094
ServletContextHandler context = new ServletContextHandler();//声明一个context
context.setContextPath("/");////设置contextPath
server.setHandler(context);//设置handler
context.addServlet(new ServletHolder(new MetricsServlet()), "/metrics");//指定servlet和servlet匹配的url
//context.addServlet(new ServletHolder(new MetricsServlet()), "/hhh");
DefaultExports.initialize();
// Start the webserver.
server.start();
server.join();
}
}ip

相关文章
相关标签/搜索