下面列出了怎么用io.prometheus.client.exporter.MetricsServlet的API类实例代码及写法,或者点击链接到github查看源代码。
@PostConstruct
public void start() {
logger.info("Starting metrics server on port {}", config.getMetricsHttpPort());
this.executor.execute(() -> {
Server server = new Server(this.config.getMetricsHttpPort());
ServletContextHandler context = new ServletContextHandler();
context.setContextPath("/");
server.setHandler(context);
context.addServlet(new ServletHolder(new MetricsServlet()), "/metrics");
try {
server.start();
server.join();
} catch (Exception e) { // server.start throws Exception, so can't be more general here.
logger.error("Failed to start metrics exporter", e);
}
});
}
public static void main( String[] args ) throws Exception {
Server server = new Server(1234);
ServletContextHandler context = new ServletContextHandler();
context.setContextPath("/");
server.setHandler(context);
// Expose our example servlet.
context.addServlet(new ServletHolder(new ExampleServlet()), "/");
// Expose Promtheus metrics.
context.addServlet(new ServletHolder(new MetricsServlet()), "/metrics");
// Add metrics about CPU, JVM memory etc.
DefaultExports.initialize();
// Start the webserver.
server.start();
server.join();
}
public static void main( String[] args ) throws Exception {
// Increment the counter.
counter.inc();
// Hook the Dropwizard registry into the Prometheus registry
// via the DropwizardExports collector.
CollectorRegistry.defaultRegistry.register(new DropwizardExports(metrics));
// Expose Prometheus metrics.
Server server = new Server(1234);
ServletContextHandler context = new ServletContextHandler();
context.setContextPath("/");
server.setHandler(context);
context.addServlet(new ServletHolder(new MetricsServlet()), "/metrics");
// Add metrics about CPU, JVM memory etc.
DefaultExports.initialize();
// Start the webserver.
server.start();
server.join();
}
protected static void start(String[] args, String defaultStatsPort) throws Exception {
// Register basic JVM metrics
DefaultExports.initialize();
// Start Jetty to serve stats
int port = Integer.parseInt(System.getProperties().getProperty("stats_server_port", defaultStatsPort));
log.info("Starting ZK stats HTTP server at port {}", port);
InetSocketAddress httpEndpoint = InetSocketAddress.createUnresolved("0.0.0.0", port);
Server server = new Server(httpEndpoint);
ServletContextHandler context = new ServletContextHandler();
context.setContextPath("/");
server.setHandler(context);
context.addServlet(new ServletHolder(new MetricsServlet()), "/metrics");
try {
server.start();
} catch (Exception e) {
log.error("Failed to start HTTP server at port {}. Use \"-Dstats_server_port=1234\" to change port number",
port, e);
throw e;
}
// Start the regular ZooKeeper server
QuorumPeerMain.main(args);
}
public static void addWebServerHandlers(WebServer server,
ProxyConfiguration config,
ProxyService service,
BrokerDiscoveryProvider discoveryProvider) {
server.addServlet("/metrics", new ServletHolder(MetricsServlet.class), Collections.emptyList(), config.isAuthenticateMetricsEndpoint());
server.addRestResources("/", VipStatus.class.getPackage().getName(),
VipStatus.ATTRIBUTE_STATUS_FILE_PATH, config.getStatusFilePath());
server.addRestResources("/proxy-stats", ProxyStats.class.getPackage().getName(), ProxyStats.ATTRIBUTE_PULSAR_PROXY_NAME, service);
AdminProxyHandler adminProxyHandler = new AdminProxyHandler(config, discoveryProvider);
ServletHolder servletHolder = new ServletHolder(adminProxyHandler);
servletHolder.setInitParameter("preserveHost", "true");
server.addServlet("/admin", servletHolder);
server.addServlet("/lookup", servletHolder);
for (ProxyConfiguration.HttpReverseProxyConfig revProxy : config.getHttpReverseProxyConfigs()) {
log.debug("Adding reverse proxy with config {}", revProxy);
ServletHolder proxyHolder = new ServletHolder(ProxyServlet.Transparent.class);
proxyHolder.setInitParameter("proxyTo", revProxy.getProxyTo());
proxyHolder.setInitParameter("prefix", "/");
server.addServlet(revProxy.getPath(), proxyHolder);
}
}
private static void addServlets(ServletContextHandler context)
{
context.addServlet(new ServletHolder(new MetricsServlet()), "/metrics");
context.addServlet(RecommendationsService.class, "/recommendations");
context.addServlet(ListApplicationsService.class, "/listApplications");
context.addServlet(HealthService.class, "/health");
}
@Override
public Set<Object> getSingletons() {
return Set.of(
taskResource,
new MetricsServlet(registry),
new OpenApiResource());
}
public void export() throws Exception {
CollectorRegistry.defaultRegistry.register(this.healthChecksCollector);
Server server = new Server(8080);
ServletContextHandler context = new ServletContextHandler();
context.setContextPath("/");
server.setHandler(context);
context.addServlet(new ServletHolder(new MetricsServlet()), "/metrics");
DefaultExports.initialize();
server.start();
server.join();
}
@Override
public void onStartup(ServletContext servletContext) {
if (jHipsterProperties.getMetrics().getPrometheus().isEnabled()) {
String endpoint = jHipsterProperties.getMetrics().getPrometheus().getEndpoint();
log.debug("Initializing prometheus metrics exporting via {}", endpoint);
CollectorRegistry.defaultRegistry.register(new DropwizardExports(metricRegistry));
servletContext
.addServlet("prometheusMetrics", new MetricsServlet(CollectorRegistry.defaultRegistry))
.addMapping(endpoint);
}
}
@Override
public void contextInitialized(ServletContextEvent event) {
// Uncomment the next line to enable the default hotspot events.
// DefaultExports.initialize();
metrics = new Metrics();
ServletContext context = event.getServletContext();
context.addServlet("Metrics", new MetricsServlet()).addMapping("");
}
@Bean
@ConditionalOnMissingBean(name = "prometheusMetricsServletRegistrationBean")
ServletRegistrationBean prometheusMetricsServletRegistrationBean(@Value("${prometheus.metrics" +
".path:/metrics}") String metricsPath) {
DefaultExports.initialize();
return new ServletRegistrationBean(new MetricsServlet(), metricsPath);
}
public static synchronized void initialize() {
if (initalized) {
LOGGER.info("Prometheus already initalized");
return;
}
if (!Config.sharedConfig().getMonitoring().enablePrometheus) {
LOGGER.info("Prometheus monitoring not enabled");
return;
}
DefaultExports.initialize();
Integer port = Config.sharedConfig().getMonitoring().prometheusPort;
LOGGER.info("Initalizing Prometheus endpoint at port {}", port);
server = Optional.of(new Server(port));
ServletContextHandler context = new ServletContextHandler();
context.setContextPath("/");
server.get().setHandler(context);
context.addServlet(new ServletHolder(new MetricsServlet()), "/metrics");
PrometheusExtractionTaskMonitor.init();
ImportTaskMonitor.init();
DatabaseHealthMonitor.init();
RetrievalTaskMonitor.init();
try {
server.get().start();
} catch (Exception e) {
e.printStackTrace();
}
initalized = true;
}
@Override
public void onStartup(ServletContext servletContext) {
if (jHipsterProperties.getMetrics().getPrometheus().isEnabled()) {
String endpoint = jHipsterProperties.getMetrics().getPrometheus().getEndpoint();
log.debug("Initializing prometheus metrics exporting via {}", endpoint);
CollectorRegistry.defaultRegistry.register(new DropwizardExports(metricRegistry));
servletContext
.addServlet("prometheusMetrics", new MetricsServlet(CollectorRegistry.defaultRegistry))
.addMapping(endpoint);
}
}
@Bean
@ConditionalOnMissingBean(name = "prometheusMetricsServletRegistrationBean")
ServletRegistrationBean prometheusMetricsServletRegistrationBean(@Value("${prometheus.metrics" +
".path:/metrics}") String metricsPath) {
DefaultExports.initialize();
return new ServletRegistrationBean(new MetricsServlet(), metricsPath);
}
public static void main(String[] args) throws Exception {
if (args.length < 2) {
System.err.println("Usage: WebServer <port> <yml configuration file>");
System.exit(1);
}
configFilePath = args[1];
CloudWatchCollector collector = null;
FileReader reader = null;
try {
reader = new FileReader(configFilePath);
collector = new CloudWatchCollector(new FileReader(configFilePath)).register();
} finally {
if (reader != null) {
reader.close();
}
}
ReloadSignalHandler.start(collector);
int port = Integer.parseInt(args[0]);
Server server = new Server(port);
ServletContextHandler context = new ServletContextHandler();
context.setContextPath("/");
server.setHandler(context);
context.addServlet(new ServletHolder(new MetricsServlet()), "/metrics");
context.addServlet(new ServletHolder(new DynamicReloadServlet(collector)), "/-/reload");
context.addServlet(new ServletHolder(new HealthServlet()), "/-/healthy");
context.addServlet(new ServletHolder(new HealthServlet()), "/-/ready");
context.addServlet(new ServletHolder(new HomePageServlet()), "/");
server.start();
server.join();
}
@Activate
public void activate(ComponentContext componentContext) throws Exception {
if (componentContext.getProperties().get("alias") != null) {
alias = componentContext.getProperties().get("alias").toString();
}
httpService.registerServlet(alias, new MetricsServlet(), null, null);
}
public static void main(String[] args) throws Exception {
if (args.length < 2) {
System.err.println("Usage: WebServer <port> <yml configuration file>");
System.exit(1);
}
configFilePath = args[1];
CloudWatchCollector collector = null;
FileReader reader = null;
try {
reader = new FileReader(configFilePath);
collector = new CloudWatchCollector(new FileReader(configFilePath)).register();
} finally {
if (reader != null) {
reader.close();
}
}
ReloadSignalHandler.start(collector);
int port = Integer.parseInt(args[0]);
Server server = new Server(port);
ServletContextHandler context = new ServletContextHandler();
context.setContextPath("/");
server.setHandler(context);
context.addServlet(new ServletHolder(new MetricsServlet()), "/metrics");
context.addServlet(new ServletHolder(new DynamicReloadServlet(collector)), "/-/reload");
context.addServlet(new ServletHolder(new HealthServlet()), "/-/healthy");
context.addServlet(new ServletHolder(new HealthServlet()), "/-/ready");
context.addServlet(new ServletHolder(new HomePageServlet()), "/");
server.start();
server.join();
}
@Override
public boolean start(String name) {
boolean success = false;
TelemetryConfig config = telemetryConfigService.getConfig(name);
PrometheusTelemetryConfig prometheusConfig = fromTelemetryConfig(config);
if (prometheusConfig != null && !config.name().equals(PROMETHEUS_SCHEME) &&
config.status() == ENABLED) {
try {
// TODO Offer a 'Authentication'
Server prometheusExporter = new Server(prometheusConfig.port());
ServletContextHandler context = new ServletContextHandler();
context.setContextPath("/");
prometheusExporter.setHandler(context);
context.addServlet(new ServletHolder(new MetricsServlet()), "/metrics");
log.info("Prometheus server start");
prometheusExporter.start();
prometheusExporters.put(name, prometheusExporter);
success = true;
} catch (Exception ex) {
log.warn("Failed to start prometheus server due to {}", ex);
}
}
return success;
}
public static void main(String[] args) throws Exception {
DefaultExports.initialize();
Server server = new Server(1234);
ServletContextHandler context = new ServletContextHandler();
context.setContextPath("/");
server.setHandler(context);
context.addServlet(new ServletHolder(new MetricsServlet()), "/metrics");
server.start();
server.join();
}
@Bean
public ServletRegistrationBean servletRegistrationBean() {
DefaultExports.initialize();
return new ServletRegistrationBean(new MetricsServlet(), "/metrics");
}
@Bean
@ConditionalOnProperty(name="OPENTRACING_METRICS_EXPORTER_HTTP_PATH")
ServletRegistrationBean registerPrometheusExporterServlet() {
return new ServletRegistrationBean(new MetricsServlet(collectorRegistry), metricsPath);
}
private void go() throws Exception {
DefaultExports.initialize();
new Sqs().register();
Server server = new Server(9384);
ServletHandler handler = new ServletHandler();
server.setHandler(handler);
handler.addServletWithMapping(IndexServlet.class, "/");
handler.addServletWithMapping(MetricsServlet.class, "/metrics");
handler.addFilterWithMapping(DisableMethodsFilter.class, "/*", EnumSet.of(DispatcherType.REQUEST));
server.start();
logger.info("Exporter has started.");
startup.inc();
HttpGenerator.setJettyVersion("");
server.join();
}
/**
* Creates a custom Prometheus Collector registry, registers
* the dropwizard metrics with this registry, and attaches
* it to a MetricsServlet, which is returned to the caller.
*/
public static Servlet createMetricsServlet() {
CollectorRegistry registry = new CollectorRegistry();
registry.register(new DropwizardExports(RegistryHolder.REGISTRY));
return new MetricsServlet(registry);
}
@Bean
public ServletRegistrationBean<MetricsServlet> servletRegistrationBean() {
DefaultExports.initialize();
return new ServletRegistrationBean<>(new MetricsServlet(), "/metrics");
}
/**
* Add Prometheus exposition to an existing HTTP server using servlets.
*
* <p>https://github.com/prometheus/client_java/tree/b61dd232a504e20dad404a2bf3e2c0b8661c212a#http
*
* @return HTTP servlet for returning metrics data
*/
@Bean
public ServletRegistrationBean<HttpServlet> metricsServlet() {
return new ServletRegistrationBean<>(new MetricsServlet(), PROMETHEUS_METRICS_PATH);
}