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;

public class PrometheusReporter {

 

//創建Server,加載Connectors,加載handlers,加載Servlets等,啟動服務start,最后加入服務器join。
//webappcontext 繼承於servletContextHandler,servletContextHandler繼承於contexthandler
//server 用於存儲handler,handler分很多種,此處是servlet 運行在servletcontext 中,servlet 的工作是由handler來指揮和安排,handler是聽從於外界的web 請求

//當外界web 請求過來時,首先接到這個請求的是handler,contexthandler 會根據請求的path找到and交由內部對應的servlet 來處理

//serlvet的存在和創建(即需要以下步驟完成的情況下才可能存在):包括創建server ,設置server端口,創建context ,設置contextpath,設置contexthandler

//添加servlet :需serlvet的存在和創建下可以操作的

public static void start( MetricRegistry registry ) throws Exception {

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

//啟動汽車前,先把汽車的監控連接到對的監控視屏上,方便監控視頻可以采集到汽車的數據
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();
}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM