Skip to content

Instantly share code, notes, and snippets.

@pulasthi7
Last active June 7, 2020 14:12
Show Gist options
  • Save pulasthi7/ccd5d313075e2f43c4ab21f96f0ab765 to your computer and use it in GitHub Desktop.
Save pulasthi7/ccd5d313075e2f43c4ab21f96f0ab765 to your computer and use it in GitHub Desktop.
WSO2 IS - Promethus Servelet
package org.wso2.carbon.identity.sample.prometheus.servlet;
import io.prometheus.client.CollectorRegistry;
import io.prometheus.client.exporter.common.TextFormat;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.Writer;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
public class IdentityMetricsServlet extends HttpServlet {
public static final String CONTEXT = "/prometheus_metrics";
@Override
protected void doGet(final HttpServletRequest req, final HttpServletResponse resp)
throws IOException {
resp.setStatus(HttpServletResponse.SC_OK);
resp.setContentType(TextFormat.CONTENT_TYPE_004);
try (Writer writer = new BufferedWriter(resp.getWriter())) {
TextFormat.write004(writer, CollectorRegistry.defaultRegistry.filteredMetricFamilySamples(parse(req)));
writer.flush();
}
}
private Set<String> parse(HttpServletRequest req) {
String[] includedParam = req.getParameterValues("name[]");
if (includedParam == null) {
return Collections.emptySet();
} else {
return new HashSet<>(Arrays.asList(includedParam));
}
}
@Override
protected void doPost(final HttpServletRequest req, final HttpServletResponse resp)
throws IOException {
doGet(req, resp);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment