in prometheus-starter-all/prometheus-diy-starter/src/main/java/org/apache/ozhera/prometheus/starter/all/exporter/HTTPServer.java [75:139]
public void handle(HttpExchange t) throws IOException {
try {
String query = t.getRequestURI().getRawQuery();
String path = t.getRequestURI().getPath();
String contextPath = t.getHttpContext().getPath();
ByteArrayOutputStream response = this.response.get();
response.reset();
try (OutputStreamWriter osw = new OutputStreamWriter(response, Charset.forName("UTF-8"))) {
if ("/-/healthy".equals(contextPath)) {
osw.write(HEALTHY_RESPONSE);
} else {
String contentType = TextFormat.chooseContentType(t.getRequestHeaders().getFirst("Accept"));
t.getResponseHeaders().set("Content-Type", contentType);
CollectorRegistry registry = this.registryMap.get("default");
if ("/jvm".equals(path)) {
registry = this.registryMap.get("jvm");
}
List<String> list = new ArrayList<>();
try {
Field field = registry.getClass().getDeclaredField("namesToCollectors");
field.setAccessible(true);
Map<String, Collector> namesToCollectors = (Map<String, Collector>) field.get(registry);
list = namesToCollectors.keySet().stream()
.filter(it -> !it.endsWith("created"))
.filter(it -> !it.startsWith("nacos_"))
.collect(Collectors.toList());
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
TextFormat.writeFormat(contentType, osw,
registry.filteredMetricFamilySamples(new HashSet<>(list)));
}
}
if (shouldUseCompression(t)) {
t.getResponseHeaders().set("Content-Encoding", "gzip");
t.sendResponseHeaders(HttpURLConnection.HTTP_OK, 0);
final GZIPOutputStream os = new GZIPOutputStream(t.getResponseBody());
try {
response.writeTo(os);
} finally {
os.close();
}
} else {
t.getResponseHeaders().set("Content-Length",
String.valueOf(response.size()));
t.sendResponseHeaders(HttpURLConnection.HTTP_OK, response.size());
response.writeTo(t.getResponseBody());
}
} catch (IOException e) {
e.printStackTrace();
throw e;
} finally {
if (null != t) {
t.close();
}
}
}