diff --git a/docs/includes/guides/metrics.adoc b/docs/includes/guides/metrics.adoc index c99e5acc1e6..51c6a9ba9ef 100644 --- a/docs/includes/guides/metrics.adoc +++ b/docs/includes/guides/metrics.adoc @@ -392,23 +392,20 @@ You can get the metadata for any scope, such as `{metrics-endpoint}?scope=base`, .JSON response (truncated): ---- { - "classloader.currentLoadedClass.count": { - "unit": "none", - "type": "counter", - "description": "Displays the number of classes that are currently loaded in the Java virtual machine." - }, - "jvm.uptime": { - "unit": "milliseconds", - "type": "gauge", - "description": "Displays the start time of the Java virtual machine in milliseconds. This attribute displays the approximate time when the Java virtual machine started.", - "displayName": "JVM Uptime" - }, - "memory.usedHeap": { - "unit": "bytes", - "type": "gauge", - "description": "Displays the amount of used heap memory in bytes.", - "displayName": "Used Heap Memory" - } + "classloader.loadedClasses.count": { + "type": "gauge", + "description": "Displays the number of classes that are currently loaded in the Java virtual machine." + }, + "jvm.uptime": { + "type": "gauge", + "unit": "seconds", + "description": "Displays the start time of the Java virtual machine in milliseconds. This attribute displays the approximate time when the Java virtual machine started." + }, + "memory.usedHeap": { + "type": "gauge", + "unit": "bytes", + "description": "Displays the amount of used heap memory in bytes." + } } ---- diff --git a/metrics/api/src/main/java/io/helidon/metrics/api/Meter.java b/metrics/api/src/main/java/io/helidon/metrics/api/Meter.java index 833f30ef5d0..e136d249798 100644 --- a/metrics/api/src/main/java/io/helidon/metrics/api/Meter.java +++ b/metrics/api/src/main/java/io/helidon/metrics/api/Meter.java @@ -15,6 +15,7 @@ */ package io.helidon.metrics.api; +import java.util.Locale; import java.util.Map; import java.util.Optional; import java.util.Set; @@ -90,6 +91,15 @@ enum Type { */ OTHER; + /** + * Type name suitable for metadata output. + * + * @return name of the type formatted for human output + */ + public String typeName() { + return name().toLowerCase(Locale.ROOT); + } + } /** diff --git a/webserver/observe/metrics/src/main/java/io/helidon/webserver/observe/metrics/JsonFormatter.java b/webserver/observe/metrics/src/main/java/io/helidon/webserver/observe/metrics/JsonFormatter.java index b20ddd440cc..a8670fc9795 100644 --- a/webserver/observe/metrics/src/main/java/io/helidon/webserver/observe/metrics/JsonFormatter.java +++ b/webserver/observe/metrics/src/main/java/io/helidon/webserver/observe/metrics/JsonFormatter.java @@ -209,6 +209,7 @@ && matchesName(name)) { JsonObjectBuilder builderForThisName = metadataOutputBuilderWithinParent .computeIfAbsent(name, k -> JSON.createObjectBuilder()); + addNonEmpty(builderForThisName, "type", meter.type().typeName()); meter.baseUnit().ifPresent(u -> addNonEmpty(builderForThisName, "unit", u)); meter.description().ifPresent(d -> addNonEmpty(builderForThisName, "description", d)); isAnyOutput.set(true);