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 <[email protected]>
AuthorDate: Mon Dec 12 11:59:03 2022 +0100
HBASE-27435 Make Prometheus metrics queryable (#4879)
Signed-off-by: Balazs Meszaros <[email protected]>
---
.../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());