This is an automated email from the ASF dual-hosted git repository. meszibalu pushed a commit to branch branch-2 in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/branch-2 by this push: new 98d66828bd3 HBASE-27435 Make Prometheus metrics queryable (#4879) 98d66828bd3 is described below commit 98d66828bd388c50544bf7c046fea124360ad31d Author: Luca Kovács <kovacs.luca.ag...@gmail.com> AuthorDate: Mon Dec 12 11:59:03 2022 +0100 HBASE-27435 Make Prometheus metrics queryable (#4879) Signed-off-by: Balazs Meszaros <meszib...@apache.org> --- .../http/prometheus/PrometheusHadoopServlet.java | 38 ++++++++++++---------- .../http/prometheus/TestPrometheusServlet.java | 2 +- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/hbase-http/src/main/java/org/apache/hadoop/hbase/http/prometheus/PrometheusHadoopServlet.java b/hbase-http/src/main/java/org/apache/hadoop/hbase/http/prometheus/PrometheusHadoopServlet.java index db5952e2fa7..25bd57927d3 100644 --- a/hbase-http/src/main/java/org/apache/hadoop/hbase/http/prometheus/PrometheusHadoopServlet.java +++ b/hbase-http/src/main/java/org/apache/hadoop/hbase/http/prometheus/PrometheusHadoopServlet.java @@ -35,13 +35,13 @@ import org.apache.yetus.audience.InterfaceAudience; @InterfaceAudience.Private public class PrometheusHadoopServlet extends HttpServlet { - private static final Pattern SPLIT_PATTERN = Pattern.compile("(?<=[a-z])(?=[A-Z])|(?<=[A-Z])(?=([A-Z][a-z]))|\\W|(_)+"); @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { - writeMetrics(resp.getWriter(), "true".equals(req.getParameter("description"))); + writeMetrics(resp.getWriter(), "true".equals(req.getParameter("description")), + req.getParameter("qry")); } static String toPrometheusName(String metricRecordName, String metricName) { @@ -57,7 +57,8 @@ public class PrometheusHadoopServlet extends HttpServlet { */ @RestrictedApi(explanation = "Should only be called in tests or self", link = "", allowedOnPath = ".*/src/test/.*|.*/PrometheusHadoopServlet\\.java") - void writeMetrics(Writer writer, boolean desc) throws IOException { + void writeMetrics(Writer writer, boolean descriptionEnabled, String queryParam) + throws IOException { Collection<MetricsRecord> metricRecords = MetricsExportHelper.export(); for (MetricsRecord metricsRecord : metricRecords) { for (AbstractMetric metrics : metricsRecord.metrics()) { @@ -65,23 +66,26 @@ public class PrometheusHadoopServlet extends HttpServlet { String key = toPrometheusName(metricsRecord.name(), metrics.name()); - if (desc) { - String description = metrics.description(); - if (!description.isEmpty()) writer.append("# HELP ").append(description).append('\n'); - } + if (queryParam == null || key.contains(queryParam)) { + + if (descriptionEnabled) { + String description = metrics.description(); + if (!description.isEmpty()) writer.append("# HELP ").append(description).append('\n'); + } - writer.append("# TYPE ").append(key).append(" ") - .append(metrics.type().toString().toLowerCase()).append('\n').append(key).append("{"); + writer.append("# TYPE ").append(key).append(" ") + .append(metrics.type().toString().toLowerCase()).append('\n').append(key).append("{"); - /* add tags */ - String sep = ""; - for (MetricsTag tag : metricsRecord.tags()) { - String tagName = tag.name().toLowerCase(); - writer.append(sep).append(tagName).append("=\"").append(tag.value()).append("\""); - sep = ","; + /* add tags */ + String sep = ""; + for (MetricsTag tag : metricsRecord.tags()) { + String tagName = tag.name().toLowerCase(); + writer.append(sep).append(tagName).append("=\"").append(tag.value()).append("\""); + sep = ","; + } + writer.append("} "); + writer.append(metrics.value().toString()).append('\n'); } - writer.append("} "); - writer.append(metrics.value().toString()).append('\n'); } } } diff --git a/hbase-http/src/test/java/org/apache/hadoop/hbase/http/prometheus/TestPrometheusServlet.java b/hbase-http/src/test/java/org/apache/hadoop/hbase/http/prometheus/TestPrometheusServlet.java index 0ca021bc12b..276a2b9ad29 100644 --- a/hbase-http/src/test/java/org/apache/hadoop/hbase/http/prometheus/TestPrometheusServlet.java +++ b/hbase-http/src/test/java/org/apache/hadoop/hbase/http/prometheus/TestPrometheusServlet.java @@ -61,7 +61,7 @@ public class TestPrometheusServlet { // WHEN PrometheusHadoopServlet prom2Servlet = new PrometheusHadoopServlet(); // Test with no description - prom2Servlet.writeMetrics(writer, false); + prom2Servlet.writeMetrics(writer, false, null); // THEN String writtenMetrics = stream.toString(UTF_8.name());