类io.prometheus.client.exporter.common.TextFormat源码实例Demo

下面列出了怎么用io.prometheus.client.exporter.common.TextFormat的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: hadoop-ozone   文件: PrometheusServlet.java
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException {
  String securityToken =
      (String) getServletContext().getAttribute(SECURITY_TOKEN);
  if (securityToken != null) {
    String authorizationHeader = req.getHeader("Authorization");
    if (authorizationHeader == null
        || !authorizationHeader.startsWith(BEARER)
        || !securityToken.equals(
            authorizationHeader.substring(BEARER.length() + 1))) {
      resp.setStatus(HttpServletResponse.SC_FORBIDDEN);
      return;
    }
  }
  DefaultMetricsSystem.instance().publishMetricsNow();
  PrintWriter writer = resp.getWriter();
  getPrometheusSink().writeMetrics(writer);
  writer.write("\n\n#Dropwizard metrics\n\n");
  //print out dropwizard metrics used by ratis.
  TextFormat.write004(writer,
      CollectorRegistry.defaultRegistry.metricFamilySamples());
  writer.flush();
}
 
源代码2 项目: hadoop-ozone   文件: TestRatisDropwizardExports.java
@Test
public void export() throws IOException {
  //create Ratis metrics
  RaftLogMetrics instance = new RaftLogMetrics("instance");
  instance.getRaftLogSyncTimer().update(10, TimeUnit.MILLISECONDS);
  MetricRegistry dropWizardMetricRegistry =
      instance.getRegistry().getDropWizardMetricRegistry();

  //create and register prometheus collector
  RatisDropwizardExports exports =
      new RatisDropwizardExports(dropWizardMetricRegistry);

  CollectorRegistry collector = new CollectorRegistry();
  collector.register(new RatisDropwizardExports(dropWizardMetricRegistry));

  //export metrics to the string
  StringWriter writer = new StringWriter();
  TextFormat.write004(writer, collector.metricFamilySamples());

  System.out.println(writer.toString());

  Assert.assertFalse("Instance name is not moved to be a tag",
      writer.toString()
          .contains("ratis_core_ratis_log_worker_instance_syncTime"));

}
 
源代码3 项目: dts   文件: MetricsHttpServer.java
public void handle(HttpExchange t) throws IOException {
    String query = t.getRequestURI().getRawQuery();
    ByteArrayOutputStream response = this.response.get();
    response.reset();
    OutputStreamWriter osw = new OutputStreamWriter(response);
    TextFormat.write004(osw, registry.filteredMetricFamilySamples(parseQuery(query)));
    osw.flush();
    osw.close();
    response.flush();
    response.close();
    t.getResponseHeaders().set("Content-Type", TextFormat.CONTENT_TYPE_004);
    t.getResponseHeaders().set("Content-Length", String.valueOf(response.size()));
    if (shouldUseCompression(t)) {
        t.getResponseHeaders().set("Content-Encoding", "gzip");
        t.sendResponseHeaders(HttpURLConnection.HTTP_OK, 0);
        final GZIPOutputStream os = new GZIPOutputStream(t.getResponseBody());
        response.writeTo(os);
        os.finish();
    } else {
        t.sendResponseHeaders(HttpURLConnection.HTTP_OK, response.size());
        response.writeTo(t.getResponseBody());
    }
    t.close();
}
 
源代码4 项目: foremast   文件: PrometheusServlet.java
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    String action = req.getParameter("action");
    if (getCommonMetricsFilter() != null && getCommonMetricsFilter().isActionEnabled() && action != null) {
        String metricName = req.getParameter("metric");
        if ("enable".equalsIgnoreCase(action)) {
            getCommonMetricsFilter().enableMetric(metricName);
        }
        else if ("disable".equalsIgnoreCase(action)) {
            getCommonMetricsFilter().disableMetric(metricName);
        }
        resp.getWriter().write("OK");
        return;
    }

    try {
        StringWriter writer = new StringWriter();
        TextFormat.write004(writer, getCollectorRegistry().metricFamilySamples());
        resp.setContentType(TextFormat.CONTENT_TYPE_004);
        resp.getWriter().write(writer.toString());
    } catch (IOException e) {
        // This actually never happens since StringWriter::write() doesn't throw any IOException
        throw new RuntimeException("Writing metrics failed", e);
    }
}
 
@Override
public void handle(RoutingContext rc) {
  MeterRegistry registry;
  if (registryName == null) {
    registry = BackendRegistries.getDefaultNow();
  } else {
    registry = BackendRegistries.getNow(registryName);
  }
  if (registry instanceof PrometheusMeterRegistry) {
    PrometheusMeterRegistry prometheusMeterRegistry = (PrometheusMeterRegistry) registry;
    rc.response()
      .putHeader(HttpHeaders.CONTENT_TYPE, TextFormat.CONTENT_TYPE_004)
      .end(prometheusMeterRegistry.scrape());
  } else {
    String statusMessage = "Invalid registry: " + (registry != null ? registry.getClass().getName() : null);
    rc.response()
      .setStatusCode(500).setStatusMessage(statusMessage)
      .end();
  }
}
 
@Override
protected void doGet(
        HttpServletRequest httpServletRequest,
        HttpServletResponse httpServletResponse) throws IOException {
    String paramToken = httpServletRequest.getParameter("token");
    String storedToken = secureTokenManager.getToken();

    if (StringUtils.isNotBlank(storedToken) && !storedToken.equals(paramToken)) {
        httpServletResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
        return;
    }

    httpServletResponse.setStatus(HttpServletResponse.SC_OK);
    httpServletResponse.setContentType(TextFormat.CONTENT_TYPE_004);

    try (Writer writer = httpServletResponse.getWriter()) {
        TextFormat.write004(writer, metricCollector.getRegistry().filteredMetricFamilySamples(parse(httpServletRequest)));
        writer.flush();
    }
}
 
@Override
protected void doGet(
        final HttpServletRequest httpServletRequest,
        final HttpServletResponse httpServletResponse) throws IOException {
    String paramToken = httpServletRequest.getParameter("token");
    String storedToken = secureTokenManager.getToken();

    if (StringUtils.isNotBlank(storedToken) && !storedToken.equals(paramToken)) {
        httpServletResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
        return;
    }

    httpServletResponse.setStatus(HttpServletResponse.SC_OK);
    httpServletResponse.setContentType(TextFormat.CONTENT_TYPE_004);

    try (Writer writer = httpServletResponse.getWriter()) {
        TextFormat.write004(writer, metricCollector.getRegistry().filteredMetricFamilySamples(parse(httpServletRequest)));
        writer.flush();
    }
}
 
@Override
protected void doGet(
        final HttpServletRequest httpServletRequest,
        final HttpServletResponse httpServletResponse) throws IOException {
    String paramToken = httpServletRequest.getParameter("token");
    String storedToken = secureTokenManager.getToken();

    if (StringUtils.isNotBlank(storedToken) && !storedToken.equals(paramToken)) {
        httpServletResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
        return;
    }

    httpServletResponse.setStatus(HttpServletResponse.SC_OK);
    httpServletResponse.setContentType(TextFormat.CONTENT_TYPE_004);

    try (Writer writer = httpServletResponse.getWriter()) {
        TextFormat.write004(writer, metricCollector.getRegistry().filteredMetricFamilySamples(parse(httpServletRequest)));
        writer.flush();
    }
}
 
源代码9 项目: Patterdale   文件: MetricsServlet.java
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
    resp.setStatus(HttpServletResponse.SC_OK);
    resp.setContentType(TextFormat.CONTENT_TYPE_004);

    List<ProbeResult> probeResults = metricsCache.get();

    formatProbeResults(probeResults)
            .forEach(formattedProbeResult -> {
                try {
                    resp.getWriter().print(formattedProbeResult + "\n");
                } catch (IOException e) {
                    logger.error("IO error occurred writing to /metrics page.", e);
                }
            });

    try (Writer writer = resp.getWriter()) {
        TextFormat.write004(writer, registry.filteredMetricFamilySamples(parse(req)));
        writer.flush();
    }
}
 
源代码10 项目: Lavalink   文件: PrometheusMetricsController.java
private ResponseEntity<String> buildAnswer(@Nullable String[] includedParam) throws IOException {
    Set<String> params;
    if (includedParam == null) {
        params = Collections.emptySet();
    } else {
        params = new HashSet<>(Arrays.asList(includedParam));
    }

    Writer writer = new StringWriter();
    try {
        TextFormat.write004(writer, this.registry.filteredMetricFamilySamples(params));
        writer.flush();
    } finally {
        writer.close();
    }

    return new ResponseEntity<>(writer.toString(), HttpStatus.OK);
}
 
@RequestMapping( value = "/metrics", method = RequestMethod.GET, produces = TextFormat.CONTENT_TYPE_004 )
@ResponseBody
public String scrape()
{
    try
    {
        Writer writer = new StringWriter();
        TextFormat.write004( writer, this.collectorRegistry.metricFamilySamples() );
        return writer.toString();
    }
    catch ( IOException ex )
    {
        // This never happens since StringWriter::write() doesn't throw IOException

        throw new UncheckedIOException( "Writing metrics failed", ex );
    }
}
 
源代码12 项目: prometheus-hystrix   文件: MetricsListTest.java
@Test
public void shouldWriteNiceMetricsOutput() throws IOException {
    // given
    HystrixPrometheusMetricsPublisher.builder().shouldExportDeprecatedMetrics(false).buildAndRegister();
    TestHystrixCommand command = new TestHystrixCommand("any");

    // when
    command.execute();

    // then
    Writer writer = new FileWriter("target/sample.txt");
    try {
        TextFormat.write004(writer, CollectorRegistry.defaultRegistry.metricFamilySamples());
        writer.flush();
    } finally {
        writer.close();
    }
}
 
源代码13 项目: prometheus-hystrix   文件: MetricsListTest.java
@Test
public void shouldHaveExponentialBuckets() throws IOException {
    // given
    HystrixPrometheusMetricsPublisher.builder().withExponentialBuckets().buildAndRegister();
    TestHystrixCommand command = new TestHystrixCommand("any");

    // when
    command.execute();

    // then
    StringWriter writer = new StringWriter();
    try {
        TextFormat.write004(writer, CollectorRegistry.defaultRegistry.metricFamilySamples());
        writer.flush();
    } finally {
        writer.close();
    }
    String result = writer.toString();
    Assertions.assertThat(result).contains("le=\"0.001\"");
    Assertions.assertThat(result).contains("le=\"2.5169093494697568\"");
}
 
源代码14 项目: prometheus-hystrix   文件: MetricsListTest.java
@Test
public void shouldHaveLinearBuckets() throws IOException {
    // given
    HystrixPrometheusMetricsPublisher.builder().withLinearBuckets(0.1, 0.2, 3).buildAndRegister();
    TestHystrixCommand command = new TestHystrixCommand("any");

    // when
    command.execute();

    // then
    StringWriter writer = new StringWriter();
    try {
        TextFormat.write004(writer, CollectorRegistry.defaultRegistry.metricFamilySamples());
        writer.flush();
    } finally {
        writer.close();
    }
    String result = writer.toString();
    Assertions.assertThat(result).contains("le=\"0.1\"");
    Assertions.assertThat(result).contains("le=\"0.5\"");
}
 
源代码15 项目: prometheus-hystrix   文件: MetricsListTest.java
@Test
public void shouldHaveDistinctBuckets() throws IOException {
    // given
    HystrixPrometheusMetricsPublisher.builder().withBuckets(0.1, 1.0).buildAndRegister();
    TestHystrixCommand command = new TestHystrixCommand("any");

    // when
    command.execute();

    // then
    StringWriter writer = new StringWriter();
    try {
        TextFormat.write004(writer, CollectorRegistry.defaultRegistry.metricFamilySamples());
        writer.flush();
    } finally {
        writer.close();
    }
    String result = writer.toString();
    Assertions.assertThat(result).contains("le=\"0.1\"");
    Assertions.assertThat(result).contains("le=\"1.0\"");
}
 
源代码16 项目: Orienteer   文件: OMetricsResource.java
@Override
	protected ResourceResponse newResourceResponse(Attributes attributes) {
		ResourceResponse response = new ResourceResponse();
        response.setLastModified(Time.now());
//        response.setStatusCode(HttpServlet);
        response.setContentType(TextFormat.CONTENT_TYPE_004);
        response.disableCaching();
        if (response.dataNeedsToBeWritten(attributes)) {
        	
        	PageParameters params = attributes.getParameters();
        	Set<String> includedMetrics = new HashSet<>();
        	params.getValues("name").forEach((sv) -> {if(!sv.isEmpty()) includedMetrics.add(sv.toString()); });
        	
            response.setWriteCallback(createWriteCallback(CollectorRegistry.defaultRegistry, includedMetrics));
        }
        return response;
	}
 
源代码17 项目: nifi   文件: PrometheusServer.java
@Override
protected void doGet(final HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException {
    if (logger.isDebugEnabled()) {
        logger.debug("PrometheusServer Do get called");
    }

    ServletOutputStream response = resp.getOutputStream();
    OutputStreamWriter osw = new OutputStreamWriter(response);

    for(Function<ReportingContext, CollectorRegistry> mc : metricsCollectors) {
        CollectorRegistry collectorRegistry = mc.apply(getReportingContext());
        TextFormat.write004(osw, collectorRegistry.metricFamilySamples());
    }

    osw.flush();
    osw.close();
    response.flush();
    response.close();
    resp.setHeader("Content-Type", TextFormat.CONTENT_TYPE_004);
    resp.setStatus(HttpURLConnection.HTTP_OK);
    resp.flushBuffer();
}
 
源代码18 项目: client_java   文件: PrometheusMvcEndpoint.java
@RequestMapping(
        method = {RequestMethod.GET},
        produces = { "*/*" }
)
@ResponseBody
public ResponseEntity value(
        @RequestParam(value = "name[]", required = false, defaultValue = "") Set<String> name) {
  if (!getDelegate().isEnabled()) {
    // Shouldn't happen - MVC endpoint shouldn't be registered when delegate's
    // disabled
    return getDisabledResponse();
  }

  String result = delgate.writeRegistry(name);
  return ResponseEntity.ok()
          .header(CONTENT_TYPE, TextFormat.CONTENT_TYPE_004)
          .body(result);
}
 
源代码19 项目: apiman   文件: PrometheusScrapeMetrics.java
private HttpServer setupWebserver(Handler<AsyncResult<HttpServer>> listenHandler) {
    String port = componentConfig.get("port");
    Objects.requireNonNull(port, "Must specify port for scrape server to listen on");
    return vertx.createHttpServer().requestHandler(request -> {
        HttpServerResponse response = request.response();
        StringWriter sw = new StringWriter();
        try {
            TextFormat.write004(sw, collectorRegistry.metricFamilySamples());
            response.setStatusCode(200)
                .putHeader("Content-Type", TextFormat.CONTENT_TYPE_004)
                .setChunked(true)
                .write(sw.toString());
        } catch (Exception e) {
            response.setStatusCode(500)
                .write(Json.encode(e));
        }
        response.end();
    }).listen(Integer.parseInt(port), listenHandler);
}
 
源代码20 项目: besu   文件: MetricsHttpService.java
private void metricsRequest(final RoutingContext routingContext) {
  final Set<String> names = new TreeSet<>(routingContext.queryParam("name[]"));
  final HttpServerResponse response = routingContext.response();
  vertx.<String>executeBlocking(
      future -> {
        try {
          final ByteArrayOutputStream metrics = new ByteArrayOutputStream(16 * 1024);
          final OutputStreamWriter osw = new OutputStreamWriter(metrics, StandardCharsets.UTF_8);
          TextFormat.write004(
              osw,
              ((PrometheusMetricsSystem) (metricsSystem))
                  .getRegistry()
                  .filteredMetricFamilySamples(names));
          osw.flush();
          osw.close();
          metrics.flush();
          metrics.close();
          future.complete(metrics.toString(StandardCharsets.UTF_8.name()));
        } catch (final IOException ioe) {
          future.fail(ioe);
        }
      },
      false,
      (res) -> {
        if (response.closed()) {
          // Request for metrics closed before response was generated
          return;
        }
        if (res.failed()) {
          LOG.error("Request for metrics failed", res.cause());
          response.setStatusCode(HttpResponseStatus.INTERNAL_SERVER_ERROR.code()).end();
        } else {
          response.setStatusCode(HttpResponseStatus.OK.code());
          response.putHeader("Content-Type", TextFormat.CONTENT_TYPE_004);
          response.end(res.result());
        }
      });
}
 
@Test
public void registerToDefault() throws IOException {
  when(metricProducer.getAllMetrics()).thenReturn(generateTestData());
  StringWriter stringWriter = new StringWriter();
  TextFormat.write004(stringWriter, CollectorRegistry.defaultRegistry.metricFamilySamples());
  assertThat(stringWriter.toString())
      .isEqualTo(
          "# HELP grpc_name long_description\n"
              + "# TYPE grpc_name counter\n"
              + "grpc_name{kc=\"vc\",kp=\"vp\",} 5.0\n"
              + "# HELP http_name double_description\n"
              + "# TYPE http_name counter\n"
              + "http_name{kc=\"vc\",kp=\"vp\",} 3.5\n");
}
 
源代码22 项目: kogito-runtimes   文件: MetricsResource.java
@GET
@Produces({MediaType.TEXT_PLAIN})
public Response getMetrics() {
    Enumeration<Collector.MetricFamilySamples> mfs = prometheusRegistry.metricFamilySamples();

    StreamingOutput stream = os -> {
        Writer writer = new BufferedWriter(new OutputStreamWriter(os));
        TextFormat.write004(writer, mfs);
        writer.flush();
    };

    return Response.ok(stream).build();

}
 
源代码23 项目: foremast   文件: PrometheusScrapeEndpoint.java
@Override
public ResponseEntity<String> invoke() {
    try {
        Writer writer = new StringWriter();
        TextFormat.write004(writer, collectorRegistry.metricFamilySamples());
        return ResponseEntity.ok()
            .header(CONTENT_TYPE, TextFormat.CONTENT_TYPE_004)
            .body(writer.toString());
    } catch (IOException e) {
        // This actually never happens since StringWriter::write() doesn't throw any IOException
        throw new RuntimeException("Writing metrics failed", e);
    }
}
 
源代码24 项目: liiklus   文件: MetricsConfiguration.java
@Override
public void initialize(GenericApplicationContext applicationContext) {
    var environment = applicationContext.getEnvironment();

    if (!environment.acceptsProfiles(Profiles.of("exporter"))) {
        return;
    }

    applicationContext.registerBean(MetricsCollector.class);

    applicationContext.registerBean("prometheus", RouterFunction.class, () -> {
        var metricsCollector = applicationContext.getBean(MetricsCollector.class);
        return RouterFunctions.route()
                .GET("/prometheus", __ -> {
                    return metricsCollector.collect()
                            .collectList()
                            .flatMap(metrics -> {
                                try {
                                    var writer = new StringWriter();
                                    TextFormat.write004(writer, Collections.enumeration(metrics));
                                    return ServerResponse.ok()
                                            .contentType(MediaType.valueOf(TextFormat.CONTENT_TYPE_004))
                                            .bodyValue(writer.toString());
                                } catch (IOException e) {
                                    return ServerResponse.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
                                }
                            });
                })
                .build();

    });
}
 
private void handleRequest(HttpServerRequest request) {
  if (options.getEmbeddedServerEndpoint().equals(request.path())) {
    request.response()
      .putHeader(HttpHeaders.CONTENT_TYPE, TextFormat.CONTENT_TYPE_004)
      .end(registry.scrape());
  } else {
    request.response().setStatusCode(404).end();
  }
}
 
源代码26 项目: promregator   文件: MergableMetricFamilySamples.java
public String toType004String() {
	Enumeration<MetricFamilySamples> resultEMFS = this.getEnumerationMetricFamilySamples();
	Writer writer = new StringWriter();
	try {
		TextFormat.write004(writer, resultEMFS);
	} catch (IOException e) {
		log.error("IO Exception on StringWriter; uuuhhh...", e);
	}
	
	return writer.toString();
}
 
源代码27 项目: promregator   文件: SingleTargetMetricsEndpoint.java
@GetMapping(produces=TextFormat.CONTENT_TYPE_004)
public ResponseEntity<String> getMetrics(
		@PathVariable String applicationId, 
		@PathVariable String instanceNumber
		) {
	
	if (this.isLoopbackRequest()) {
		throw new LoopbackScrapingDetectedException("Erroneous Loopback Scraping request detected");
	}
	
	String instanceId = String.format("%s:%s", applicationId, instanceNumber);
	
	String response = null;
	try {
		response = this.handleRequest( discoveredApplicationId -> applicationId.equals(discoveredApplicationId)
		, requestInstance -> {
			if (requestInstance.getInstanceId().equals(instanceId)) {
				this.instance = requestInstance;
				return true;
			}
			
			return false;
		});
	} catch (ScrapingException e) {
		return new ResponseEntity<>(e.toString(), HttpStatus.NOT_FOUND);
	}
	
	return new ResponseEntity<>(response, HttpStatus.OK);
}
 
源代码28 项目: promregator   文件: PromregatorMetricsEndpoint.java
@GetMapping(produces=TextFormat.CONTENT_TYPE_004)
public String getMetrics() {
	HashMap<String, MetricFamilySamples> mfsMap = this.gmfspr.determineEnumerationOfMetricFamilySamples(this.collectorRegistry);
	
	MergableMetricFamilySamples mmfs = new MergableMetricFamilySamples();
	mmfs.merge(mfsMap);
	
	return mmfs.toType004String();
}
 
源代码29 项目: promregator   文件: MetricsEndpoint.java
@GetMapping(produces=TextFormat.CONTENT_TYPE_004)
public ResponseEntity<String> getMetrics() {
	if (this.isLoopbackRequest()) {
		throw new LoopbackScrapingDetectedException("Erroneous Loopback Scraping request detected");
	}
	try {
		String result = this.handleRequest(null, null /* no filtering intended */);
		return new ResponseEntity<>(result, HttpStatus.OK);
	} catch (ScrapingException e) {
		return new ResponseEntity<>(e.toString(), HttpStatus.SERVICE_UNAVAILABLE);
	}
}
 
源代码30 项目: promagent   文件: Exporter.java
@Override
public String getTextFormat() {
    try {
        StringWriter result = new StringWriter();
        TextFormat.write004(result, registry.metricFamilySamples());
        return result.toString();
    } catch (IOException e) {
        throw new RuntimeException("Unexpected error when writing metrics to a String: " + e.getMessage(), e);
    }
}