You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2024/11/04 22:31:30 UTC
(jena) 07/08: Provide a text dump output from SimpleMetricsProvider
This is an automated email from the ASF dual-hosted git repository.
andy pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/jena.git
commit 56e6258b39a76fb82c106ac220b9b78484aed49e
Author: Andy Seaborne <an...@apache.org>
AuthorDate: Sun Nov 3 19:48:54 2024 +0000
Provide a text dump output from SimpleMetricsProvider
---
.../jena/fuseki/metrics/SimpleMetricsProvider.java | 40 +++++++++++++++++++++-
1 file changed, 39 insertions(+), 1 deletion(-)
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/metrics/SimpleMetricsProvider.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/metrics/SimpleMetricsProvider.java
index 3d22ed1bc7..7a2bca77a3 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/metrics/SimpleMetricsProvider.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/metrics/SimpleMetricsProvider.java
@@ -17,10 +17,15 @@
*/
package org.apache.jena.fuseki.metrics;
+import io.micrometer.core.instrument.Meter.Id;
import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
+import jakarta.servlet.ServletOutputStream;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.jena.fuseki.servlets.HttpAction;
import org.apache.jena.fuseki.servlets.ServletOps;
+import org.apache.jena.riot.WebContent;
+import org.apache.jena.web.HttpSC;
public class SimpleMetricsProvider implements MetricsProvider {
@@ -35,7 +40,40 @@ public class SimpleMetricsProvider implements MetricsProvider {
@Override
public void scrape(HttpAction action) {
- ServletOps.errorNotImplemented("SimpleMeterRegistry isn't scrapeable");
+
+ HttpServletResponse response = action.getResponse();
+ StringBuilder sbuff = new StringBuilder(1000);
+
+ try {
+ meterRegistry.forEachMeter(meter->{
+ Id id = meter.getId();
+ output(sbuff, "Meter %s", id);
+ output(sbuff, " Name %s", id.getName());
+ output(sbuff, " BaseUnit %s",id.getBaseUnit());
+ id.getTags().forEach(tag->{
+ output(sbuff, " Tag %s %s", tag.getKey(), tag.getValue());
+ });
+
+ meter.measure().forEach(measurement->{
+ output(sbuff, " Measure %s %s", measurement.getStatistic(), measurement.getValue());
+ });
+ });
+
+ String txt = sbuff.toString();
+ action.setResponseContentType(WebContent.contentTypeTextPlain);
+ try ( ServletOutputStream x = action.getResponseOutputStream() ) {
+ x.print(txt);
+ }
+ } catch (Throwable th) {
+ ServletOps.error(HttpSC.INTERNAL_SERVER_ERROR_500);
+ }
+ }
+
+ private void output(StringBuilder sbuff, String fmt, Object...args) {
+ String str = fmt.formatted(args);
+ sbuff.append(str);
+ if ( ! str.endsWith("\n") )
+ sbuff.append("\n");
}
}