eclipse-openj9 / openj9

Eclipse OpenJ9: A Java Virtual Machine for OpenJDK that's optimized for small footprint, fast start-up, and high throughput. Builds on Eclipse OMR (https://github.com/eclipse/omr) and combines with the Extensions for OpenJDK for OpenJ9 repo.
Other
3.27k stars 721 forks source link

OpenJ9 support for OpenTelemetry metrics #18952

Open donbourne opened 7 months ago

donbourne commented 7 months ago

OpenTelemetry (OTel) has a table that shows the supported libraries and frameworks (at https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/docs/supported-libraries.md)

In that table, the Java Platform row shows: opentelemetry-runtime-telemetry-java8, opentelemetry-runtime-telemetry-java17, opentelemetry-resources

OTel also publishes semantic conventions for metrics, which define standard names and labels to be used for metrics. For Java, there is Semantic Conventions for JVM Metrics.

OpenJ9 needs to provide a standalone library so that apps running on OpenJ9 that are using that library can emit metrics that are compliant with at least the metrics considered stable in the semantic conventions. This should be done for java8/11/17/21 (and future releases).

The Java8 standalone library may already work for OpenJ9 -- but it would be good to test to make sure that works on all JVM releases. Also, even if the Java8 stanalone library works for all releases, the info at https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/docs/supported-libraries.md should be updated to make it clear that that can be used with different JVM releases (at least for OpenJ9).

The Java17 standalone library does not work with OpenJ9 as that library depends on JFR.

donbourne commented 7 months ago

Felix Wong is doing some initial testing on this and will update here shortly...

fmhwong commented 7 months ago

Using different Liberty Java runtime images with the following Maven dependency.

        <dependency>
            <groupId>io.opentelemetry.instrumentation</groupId>
            <artifactId>opentelemetry-runtime-telemetry-java8</artifactId>
            <version>2.0.0-alpha</version>
        </dependency>
fmhwong commented 7 months ago

With icr.io/appcafe/open-liberty:latest

openjdk version "21.0.1" 2023-10-17 LTS
IBM Semeru Runtime Open Edition 21.0.1.0 (build 21.0.1+12-LTS)
Eclipse OpenJ9 VM 21.0.1.0 (build openj9-0.42.0, JRE 21 Linux amd64-64-Bit Compressed References 20231017_77 (JIT enabled, AOT enabled)
OpenJ9   - 874af12ee
OMR      - 11700e64f
JCL      - cb91cd755e3 based on jdk-21.0.1+12)
# HELP car_locked car locked
# TYPE car_locked gauge
car_locked{job="carDemo"} 0
# HELP car_speed car speed
# TYPE car_speed gauge
car_speed{driver="Don",job="carDemo"} 136.91998291015625
# HELP car_speedSummary_km_per_hour Summary of car speed
# TYPE car_speedSummary_km_per_hour histogram
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="0"} 7
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="5"} 7
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="10"} 7
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="25"} 8
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="50"} 9
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="75"} 11
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="100"} 13
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="250"} 109
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="500"} 109
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="750"} 109
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="1000"} 109
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="2500"} 109
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="5000"} 109
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="7500"} 109
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="10000"} 109
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="+Inf"} 109
car_speedSummary_km_per_hour_sum{driver="Don",job="carDemo"} 12855
car_speedSummary_km_per_hour_count{driver="Don",job="carDemo"} 109
# HELP jvm_class_count Number of classes currently loaded.
# TYPE jvm_class_count gauge
jvm_class_count{job="carDemo"} 11051
# HELP jvm_class_loaded_total Number of classes loaded since JVM start.
# TYPE jvm_class_loaded_total counter
jvm_class_loaded_total{job="carDemo"} 11089
# HELP jvm_class_unloaded_total Number of classes unloaded since JVM start.
# TYPE jvm_class_unloaded_total counter
jvm_class_unloaded_total{job="carDemo"} 38
# HELP jvm_cpu_count Number of processors available to the Java virtual machine.
# TYPE jvm_cpu_count gauge
jvm_cpu_count{job="carDemo"} 1
# HELP jvm_cpu_recent_utilization_ratio Recent CPU utilization for the process as reported by the JVM.
# TYPE jvm_cpu_recent_utilization_ratio gauge
jvm_cpu_recent_utilization_ratio{job="carDemo"} 0.11099903810983106
# HELP jvm_cpu_time_seconds_total CPU time used by the process as reported by the JVM.
# TYPE jvm_cpu_time_seconds_total counter
jvm_cpu_time_seconds_total{job="carDemo"} 68.798181
# HELP jvm_gc_duration_seconds Duration of JVM garbage collection actions.
# TYPE jvm_gc_duration_seconds histogram
jvm_gc_duration_seconds_bucket{job="carDemo",jvm_gc_action="end of minor GC",jvm_gc_name="scavenge",le="0.01"} 0
jvm_gc_duration_seconds_bucket{job="carDemo",jvm_gc_action="end of minor GC",jvm_gc_name="scavenge",le="0.1"} 2
jvm_gc_duration_seconds_bucket{job="carDemo",jvm_gc_action="end of minor GC",jvm_gc_name="scavenge",le="1"} 2
jvm_gc_duration_seconds_bucket{job="carDemo",jvm_gc_action="end of minor GC",jvm_gc_name="scavenge",le="10"} 2
jvm_gc_duration_seconds_bucket{job="carDemo",jvm_gc_action="end of minor GC",jvm_gc_name="scavenge",le="+Inf"} 2
jvm_gc_duration_seconds_sum{job="carDemo",jvm_gc_action="end of minor GC",jvm_gc_name="scavenge"} 0.04
jvm_gc_duration_seconds_count{job="carDemo",jvm_gc_action="end of minor GC",jvm_gc_name="scavenge"} 2
# HELP jvm_memory_committed_bytes Measure of memory committed.
# TYPE jvm_memory_committed_bytes gauge
jvm_memory_committed_bytes{job="carDemo",jvm_memory_pool_name="JIT code cache",jvm_memory_type="non_heap"} 1.34217728e+08
jvm_memory_committed_bytes{job="carDemo",jvm_memory_pool_name="JIT data cache",jvm_memory_type="non_heap"} 1.8874368e+07
jvm_memory_committed_bytes{job="carDemo",jvm_memory_pool_name="class storage",jvm_memory_type="non_heap"} 1.03810648e+08
jvm_memory_committed_bytes{job="carDemo",jvm_memory_pool_name="miscellaneous non-heap storage",jvm_memory_type="non_heap"} 9.1914228e+07
jvm_memory_committed_bytes{job="carDemo",jvm_memory_pool_name="nursery-allocate",jvm_memory_type="heap"} 1.7301504e+07
jvm_memory_committed_bytes{job="carDemo",jvm_memory_pool_name="nursery-survivor",jvm_memory_type="heap"} 7.86432e+06
jvm_memory_committed_bytes{job="carDemo",jvm_memory_pool_name="tenured-LOA",jvm_memory_type="heap"} 479232
jvm_memory_committed_bytes{job="carDemo",jvm_memory_pool_name="tenured-SOA",jvm_memory_type="heap"} 4.7362048e+07
# HELP jvm_memory_limit_bytes Measure of max obtainable memory.
# TYPE jvm_memory_limit_bytes gauge
jvm_memory_limit_bytes{job="carDemo",jvm_memory_pool_name="JIT code cache",jvm_memory_type="non_heap"} 1.34217728e+08
jvm_memory_limit_bytes{job="carDemo",jvm_memory_pool_name="JIT data cache",jvm_memory_type="non_heap"} 4.02653184e+08
jvm_memory_limit_bytes{job="carDemo",jvm_memory_pool_name="nursery-allocate",jvm_memory_type="heap"} 4.6137344e+07
jvm_memory_limit_bytes{job="carDemo",jvm_memory_pool_name="nursery-survivor",jvm_memory_type="heap"} 2.097152e+07
jvm_memory_limit_bytes{job="carDemo",jvm_memory_pool_name="tenured-LOA",jvm_memory_type="heap"} 2.668544e+06
jvm_memory_limit_bytes{job="carDemo",jvm_memory_pool_name="tenured-SOA",jvm_memory_type="heap"} 2.6366976e+08
# HELP jvm_memory_used_after_last_gc_bytes Measure of memory used, as measured after the most recent garbage collection event on this pool.
# TYPE jvm_memory_used_after_last_gc_bytes gauge
jvm_memory_used_after_last_gc_bytes{job="carDemo",jvm_memory_pool_name="nursery-allocate",jvm_memory_type="heap"} 6.542488e+06
jvm_memory_used_after_last_gc_bytes{job="carDemo",jvm_memory_pool_name="nursery-survivor",jvm_memory_type="heap"} 7.86432e+06
jvm_memory_used_after_last_gc_bytes{job="carDemo",jvm_memory_pool_name="tenured-LOA",jvm_memory_type="heap"} 0
jvm_memory_used_after_last_gc_bytes{job="carDemo",jvm_memory_pool_name="tenured-SOA",jvm_memory_type="heap"} 3.3451224e+07
# HELP jvm_memory_used_bytes Measure of memory used.
# TYPE jvm_memory_used_bytes gauge
jvm_memory_used_bytes{job="carDemo",jvm_memory_pool_name="JIT code cache",jvm_memory_type="non_heap"} 1.0226432e+07
jvm_memory_used_bytes{job="carDemo",jvm_memory_pool_name="JIT data cache",jvm_memory_type="non_heap"} 1.8874368e+07
jvm_memory_used_bytes{job="carDemo",jvm_memory_pool_name="class storage",jvm_memory_type="non_heap"} 6.1818568e+07
jvm_memory_used_bytes{job="carDemo",jvm_memory_pool_name="miscellaneous non-heap storage",jvm_memory_type="non_heap"} 3.3655336e+07
jvm_memory_used_bytes{job="carDemo",jvm_memory_pool_name="nursery-allocate",jvm_memory_type="heap"} 1.4714032e+07
jvm_memory_used_bytes{job="carDemo",jvm_memory_pool_name="nursery-survivor",jvm_memory_type="heap"} 7.86432e+06
jvm_memory_used_bytes{job="carDemo",jvm_memory_pool_name="tenured-LOA",jvm_memory_type="heap"} 0
jvm_memory_used_bytes{job="carDemo",jvm_memory_pool_name="tenured-SOA",jvm_memory_type="heap"} 3.475104e+07
# HELP jvm_thread_count Number of executing platform threads.
# TYPE jvm_thread_count gauge
jvm_thread_count{job="carDemo",jvm_thread_daemon="false",jvm_thread_state="runnable"} 1
jvm_thread_count{job="carDemo",jvm_thread_daemon="false",jvm_thread_state="waiting"} 1
jvm_thread_count{job="carDemo",jvm_thread_daemon="true",jvm_thread_state="runnable"} 23
jvm_thread_count{job="carDemo",jvm_thread_daemon="true",jvm_thread_state="timed_waiting"} 21
jvm_thread_count{job="carDemo",jvm_thread_daemon="true",jvm_thread_state="waiting"} 15
# HELP queueSize_ratio The number of items queued
# TYPE queueSize_ratio gauge
queueSize_ratio{job="carDemo",processorType="BatchLogRecordProcessor"} 0
queueSize_ratio{job="carDemo",processorType="BatchSpanProcessor"} 0
# HELP start_driving_total 
# TYPE start_driving_total counter
start_driving_total{job="carDemo"} 1
fmhwong commented 7 months ago

With icr.io/appcafe/open-liberty:full-java11-openj9-ubi

openjdk version "11.0.21" 2023-10-17
IBM Semeru Runtime Open Edition 11.0.21.0 (build 11.0.21+9)
Eclipse OpenJ9 VM 11.0.21.0 (build openj9-0.41.0, JRE 11 Linux amd64-64-Bit Compressed References 20231122_912 (JIT enabled, AOT enabled)
OpenJ9   - 461bf3c70
OMR      - 5eee6ad9d
JCL      - 0fd7a05277 based on jdk-11.0.21+9)
# HELP car_locked car locked
# TYPE car_locked gauge
car_locked{job="carDemo"} 0
# HELP car_speed car speed
# TYPE car_speed gauge
car_speed{driver="Don",job="carDemo"} 59.58400344848633
# HELP car_speedSummary_km_per_hour Summary of car speed
# TYPE car_speedSummary_km_per_hour histogram
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="0"} 7
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="5"} 7
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="10"} 7
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="25"} 8
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="50"} 9
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="75"} 9
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="100"} 9
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="250"} 9
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="500"} 9
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="750"} 9
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="1000"} 9
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="2500"} 9
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="5000"} 9
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="7500"} 9
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="10000"} 9
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="+Inf"} 9
car_speedSummary_km_per_hour_sum{driver="Don",job="carDemo"} 68
car_speedSummary_km_per_hour_count{driver="Don",job="carDemo"} 9
# HELP jvm_class_count Number of classes currently loaded.
# TYPE jvm_class_count gauge
jvm_class_count{job="carDemo"} 11237
# HELP jvm_class_loaded_total Number of classes loaded since JVM start.
# TYPE jvm_class_loaded_total counter
jvm_class_loaded_total{job="carDemo"} 11274
# HELP jvm_class_unloaded_total Number of classes unloaded since JVM start.
# TYPE jvm_class_unloaded_total counter
jvm_class_unloaded_total{job="carDemo"} 37
# HELP jvm_cpu_count Number of processors available to the Java virtual machine.
# TYPE jvm_cpu_count gauge
jvm_cpu_count{job="carDemo"} 1
# HELP jvm_cpu_recent_utilization_ratio Recent CPU utilization for the process as reported by the JVM.
# TYPE jvm_cpu_recent_utilization_ratio gauge
jvm_cpu_recent_utilization_ratio{job="carDemo"} 0.11931475268326563
# HELP jvm_cpu_time_seconds_total CPU time used by the process as reported by the JVM.
# TYPE jvm_cpu_time_seconds_total counter
jvm_cpu_time_seconds_total{job="carDemo"} 55.74813
# HELP jvm_gc_duration_seconds Duration of JVM garbage collection actions.
# TYPE jvm_gc_duration_seconds histogram
jvm_gc_duration_seconds_bucket{job="carDemo",jvm_gc_action="end of minor GC",jvm_gc_name="scavenge",le="0.01"} 0
jvm_gc_duration_seconds_bucket{job="carDemo",jvm_gc_action="end of minor GC",jvm_gc_name="scavenge",le="0.1"} 1
jvm_gc_duration_seconds_bucket{job="carDemo",jvm_gc_action="end of minor GC",jvm_gc_name="scavenge",le="1"} 1
jvm_gc_duration_seconds_bucket{job="carDemo",jvm_gc_action="end of minor GC",jvm_gc_name="scavenge",le="10"} 1
jvm_gc_duration_seconds_bucket{job="carDemo",jvm_gc_action="end of minor GC",jvm_gc_name="scavenge",le="+Inf"} 1
jvm_gc_duration_seconds_sum{job="carDemo",jvm_gc_action="end of minor GC",jvm_gc_name="scavenge"} 0.019
jvm_gc_duration_seconds_count{job="carDemo",jvm_gc_action="end of minor GC",jvm_gc_name="scavenge"} 1
# HELP jvm_memory_committed_bytes Measure of memory committed.
# TYPE jvm_memory_committed_bytes gauge
jvm_memory_committed_bytes{job="carDemo",jvm_memory_pool_name="JIT code cache",jvm_memory_type="non_heap"} 1.34217728e+08
jvm_memory_committed_bytes{job="carDemo",jvm_memory_pool_name="JIT data cache",jvm_memory_type="non_heap"} 1.6777216e+07
jvm_memory_committed_bytes{job="carDemo",jvm_memory_pool_name="class storage",jvm_memory_type="non_heap"} 9.2029552e+07
jvm_memory_committed_bytes{job="carDemo",jvm_memory_pool_name="miscellaneous non-heap storage",jvm_memory_type="non_heap"} 6.1632504e+07
jvm_memory_committed_bytes{job="carDemo",jvm_memory_pool_name="nursery-allocate",jvm_memory_type="heap"} 1.8153472e+07
jvm_memory_committed_bytes{job="carDemo",jvm_memory_pool_name="nursery-survivor",jvm_memory_type="heap"} 7.012352e+06
jvm_memory_committed_bytes{job="carDemo",jvm_memory_pool_name="tenured-LOA",jvm_memory_type="heap"} 2.4576e+06
jvm_memory_committed_bytes{job="carDemo",jvm_memory_pool_name="tenured-SOA",jvm_memory_type="heap"} 4.66944e+07
# HELP jvm_memory_limit_bytes Measure of max obtainable memory.
# TYPE jvm_memory_limit_bytes gauge
jvm_memory_limit_bytes{job="carDemo",jvm_memory_pool_name="JIT code cache",jvm_memory_type="non_heap"} 1.34217728e+08
jvm_memory_limit_bytes{job="carDemo",jvm_memory_pool_name="JIT data cache",jvm_memory_type="non_heap"} 4.02653184e+08
jvm_memory_limit_bytes{job="carDemo",jvm_memory_pool_name="nursery-allocate",jvm_memory_type="heap"} 4.84096e+07
jvm_memory_limit_bytes{job="carDemo",jvm_memory_pool_name="nursery-survivor",jvm_memory_type="heap"} 1.8699264e+07
jvm_memory_limit_bytes{job="carDemo",jvm_memory_pool_name="tenured-LOA",jvm_memory_type="heap"} 1.331712e+07
jvm_memory_limit_bytes{job="carDemo",jvm_memory_pool_name="tenured-SOA",jvm_memory_type="heap"} 2.53021184e+08
# HELP jvm_memory_used_after_last_gc_bytes Measure of memory used, as measured after the most recent garbage collection event on this pool.
# TYPE jvm_memory_used_after_last_gc_bytes gauge
jvm_memory_used_after_last_gc_bytes{job="carDemo",jvm_memory_pool_name="nursery-allocate",jvm_memory_type="heap"} 5.48136e+06
jvm_memory_used_after_last_gc_bytes{job="carDemo",jvm_memory_pool_name="nursery-survivor",jvm_memory_type="heap"} 7.012352e+06
jvm_memory_used_after_last_gc_bytes{job="carDemo",jvm_memory_pool_name="tenured-LOA",jvm_memory_type="heap"} 0
jvm_memory_used_after_last_gc_bytes{job="carDemo",jvm_memory_pool_name="tenured-SOA",jvm_memory_type="heap"} 3.4397008e+07
# HELP jvm_memory_used_bytes Measure of memory used.
# TYPE jvm_memory_used_bytes gauge
jvm_memory_used_bytes{job="carDemo",jvm_memory_pool_name="JIT code cache",jvm_memory_type="non_heap"} 8.566944e+06
jvm_memory_used_bytes{job="carDemo",jvm_memory_pool_name="JIT data cache",jvm_memory_type="non_heap"} 1.6777216e+07
jvm_memory_used_bytes{job="carDemo",jvm_memory_pool_name="class storage",jvm_memory_type="non_heap"} 6.2706552e+07
jvm_memory_used_bytes{job="carDemo",jvm_memory_pool_name="miscellaneous non-heap storage",jvm_memory_type="non_heap"} 2.7637908e+07
jvm_memory_used_bytes{job="carDemo",jvm_memory_pool_name="nursery-allocate",jvm_memory_type="heap"} 8.139472e+06
jvm_memory_used_bytes{job="carDemo",jvm_memory_pool_name="nursery-survivor",jvm_memory_type="heap"} 7.012352e+06
jvm_memory_used_bytes{job="carDemo",jvm_memory_pool_name="tenured-LOA",jvm_memory_type="heap"} 0
jvm_memory_used_bytes{job="carDemo",jvm_memory_pool_name="tenured-SOA",jvm_memory_type="heap"} 3.5023632e+07
# HELP jvm_thread_count Number of executing platform threads.
# TYPE jvm_thread_count gauge
jvm_thread_count{job="carDemo",jvm_thread_daemon="false",jvm_thread_state="runnable"} 1
jvm_thread_count{job="carDemo",jvm_thread_daemon="false",jvm_thread_state="waiting"} 1
jvm_thread_count{job="carDemo",jvm_thread_daemon="true",jvm_thread_state="blocked"} 1
jvm_thread_count{job="carDemo",jvm_thread_daemon="true",jvm_thread_state="runnable"} 23
jvm_thread_count{job="carDemo",jvm_thread_daemon="true",jvm_thread_state="timed_waiting"} 23
jvm_thread_count{job="carDemo",jvm_thread_daemon="true",jvm_thread_state="waiting"} 15
# HELP queueSize_ratio The number of items queued
# TYPE queueSize_ratio gauge
queueSize_ratio{job="carDemo",processorType="BatchLogRecordProcessor"} 0
queueSize_ratio{job="carDemo",processorType="BatchSpanProcessor"} 0
# HELP start_driving_total 
# TYPE start_driving_total counter
start_driving_total{job="carDemo"} 1
fmhwong commented 7 months ago

With icr.io/appcafe/open-liberty:full-java17-openj9-ubi

openjdk version "17.0.9" 2023-10-17
IBM Semeru Runtime Open Edition 17.0.9.0 (build 17.0.9+9)
Eclipse OpenJ9 VM 17.0.9.0 (build openj9-0.41.0, JRE 17 Linux amd64-64-Bit Compressed References 20231017_614 (JIT enabled, AOT enabled)
OpenJ9   - 461bf3c70
OMR      - 5eee6ad9d
JCL      - 3699725139c based on jdk-17.0.9+9)
# HELP car_locked car locked
# TYPE car_locked gauge
car_locked{job="carDemo"} 0
# HELP car_speed car speed
# TYPE car_speed gauge
car_speed{driver="Don",job="carDemo"} 102.901611328125
# HELP car_speedSummary_km_per_hour Summary of car speed
# TYPE car_speedSummary_km_per_hour histogram
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="0"} 8
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="5"} 8
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="10"} 8
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="25"} 9
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="50"} 10
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="75"} 12
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="100"} 14
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="250"} 14
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="500"} 14
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="750"} 14
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="1000"} 14
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="2500"} 14
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="5000"} 14
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="7500"} 14
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="10000"} 14
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="+Inf"} 14
car_speedSummary_km_per_hour_sum{driver="Don",job="carDemo"} 384
car_speedSummary_km_per_hour_count{driver="Don",job="carDemo"} 14
# HELP jvm_class_count Number of classes currently loaded.
# TYPE jvm_class_count gauge
jvm_class_count{job="carDemo"} 11664
# HELP jvm_class_loaded_total Number of classes loaded since JVM start.
# TYPE jvm_class_loaded_total counter
jvm_class_loaded_total{job="carDemo"} 11733
# HELP jvm_class_unloaded_total Number of classes unloaded since JVM start.
# TYPE jvm_class_unloaded_total counter
jvm_class_unloaded_total{job="carDemo"} 69
# HELP jvm_cpu_count Number of processors available to the Java virtual machine.
# TYPE jvm_cpu_count gauge
jvm_cpu_count{job="carDemo"} 1
# HELP jvm_cpu_recent_utilization_ratio Recent CPU utilization for the process as reported by the JVM.
# TYPE jvm_cpu_recent_utilization_ratio gauge
jvm_cpu_recent_utilization_ratio{job="carDemo"} 0.11021094082779827
# HELP jvm_cpu_time_seconds_total CPU time used by the process as reported by the JVM.
# TYPE jvm_cpu_time_seconds_total counter
jvm_cpu_time_seconds_total{job="carDemo"} 53.912586
# HELP jvm_gc_duration_seconds Duration of JVM garbage collection actions.
# TYPE jvm_gc_duration_seconds histogram
jvm_gc_duration_seconds_bucket{job="carDemo",jvm_gc_action="end of major GC",jvm_gc_name="global",le="0.01"} 0
jvm_gc_duration_seconds_bucket{job="carDemo",jvm_gc_action="end of major GC",jvm_gc_name="global",le="0.1"} 1
jvm_gc_duration_seconds_bucket{job="carDemo",jvm_gc_action="end of major GC",jvm_gc_name="global",le="1"} 1
jvm_gc_duration_seconds_bucket{job="carDemo",jvm_gc_action="end of major GC",jvm_gc_name="global",le="10"} 1
jvm_gc_duration_seconds_bucket{job="carDemo",jvm_gc_action="end of major GC",jvm_gc_name="global",le="+Inf"} 1
jvm_gc_duration_seconds_sum{job="carDemo",jvm_gc_action="end of major GC",jvm_gc_name="global"} 0.03
jvm_gc_duration_seconds_count{job="carDemo",jvm_gc_action="end of major GC",jvm_gc_name="global"} 1
jvm_gc_duration_seconds_bucket{job="carDemo",jvm_gc_action="end of minor GC",jvm_gc_name="scavenge",le="0.01"} 0
jvm_gc_duration_seconds_bucket{job="carDemo",jvm_gc_action="end of minor GC",jvm_gc_name="scavenge",le="0.1"} 1
jvm_gc_duration_seconds_bucket{job="carDemo",jvm_gc_action="end of minor GC",jvm_gc_name="scavenge",le="1"} 1
jvm_gc_duration_seconds_bucket{job="carDemo",jvm_gc_action="end of minor GC",jvm_gc_name="scavenge",le="10"} 1
jvm_gc_duration_seconds_bucket{job="carDemo",jvm_gc_action="end of minor GC",jvm_gc_name="scavenge",le="+Inf"} 1
jvm_gc_duration_seconds_sum{job="carDemo",jvm_gc_action="end of minor GC",jvm_gc_name="scavenge"} 0.019
jvm_gc_duration_seconds_count{job="carDemo",jvm_gc_action="end of minor GC",jvm_gc_name="scavenge"} 1
# HELP jvm_memory_committed_bytes Measure of memory committed.
# TYPE jvm_memory_committed_bytes gauge
jvm_memory_committed_bytes{job="carDemo",jvm_memory_pool_name="JIT code cache",jvm_memory_type="non_heap"} 1.34217728e+08
jvm_memory_committed_bytes{job="carDemo",jvm_memory_pool_name="JIT data cache",jvm_memory_type="non_heap"} 1.6777216e+07
jvm_memory_committed_bytes{job="carDemo",jvm_memory_pool_name="class storage",jvm_memory_type="non_heap"} 9.3329328e+07
jvm_memory_committed_bytes{job="carDemo",jvm_memory_pool_name="miscellaneous non-heap storage",jvm_memory_type="non_heap"} 8.041676e+07
jvm_memory_committed_bytes{job="carDemo",jvm_memory_pool_name="nursery-allocate",jvm_memory_type="heap"} 1.7563648e+07
jvm_memory_committed_bytes{job="carDemo",jvm_memory_pool_name="nursery-survivor",jvm_memory_type="heap"} 6.5536e+06
jvm_memory_committed_bytes{job="carDemo",jvm_memory_pool_name="tenured-LOA",jvm_memory_type="heap"} 2.506752e+06
jvm_memory_committed_bytes{job="carDemo",jvm_memory_pool_name="tenured-SOA",jvm_memory_type="heap"} 4.7628288e+07
# HELP jvm_memory_limit_bytes Measure of max obtainable memory.
# TYPE jvm_memory_limit_bytes gauge
jvm_memory_limit_bytes{job="carDemo",jvm_memory_pool_name="JIT code cache",jvm_memory_type="non_heap"} 1.34217728e+08
jvm_memory_limit_bytes{job="carDemo",jvm_memory_pool_name="JIT data cache",jvm_memory_type="non_heap"} 4.02653184e+08
jvm_memory_limit_bytes{job="carDemo",jvm_memory_pool_name="nursery-allocate",jvm_memory_type="heap"} 4.8873472e+07
jvm_memory_limit_bytes{job="carDemo",jvm_memory_pool_name="nursery-survivor",jvm_memory_type="heap"} 1.8235392e+07
jvm_memory_limit_bytes{job="carDemo",jvm_memory_pool_name="tenured-LOA",jvm_memory_type="heap"} 1.331712e+07
jvm_memory_limit_bytes{job="carDemo",jvm_memory_pool_name="tenured-SOA",jvm_memory_type="heap"} 2.53021184e+08
# HELP jvm_memory_used_after_last_gc_bytes Measure of memory used, as measured after the most recent garbage collection event on this pool.
# TYPE jvm_memory_used_after_last_gc_bytes gauge
jvm_memory_used_after_last_gc_bytes{job="carDemo",jvm_memory_pool_name="nursery-allocate",jvm_memory_type="heap"} 5.549408e+06
jvm_memory_used_after_last_gc_bytes{job="carDemo",jvm_memory_pool_name="nursery-survivor",jvm_memory_type="heap"} 6.5536e+06
jvm_memory_used_after_last_gc_bytes{job="carDemo",jvm_memory_pool_name="tenured-LOA",jvm_memory_type="heap"} 0
jvm_memory_used_after_last_gc_bytes{job="carDemo",jvm_memory_pool_name="tenured-SOA",jvm_memory_type="heap"} 3.5051456e+07
# HELP jvm_memory_used_bytes Measure of memory used.
# TYPE jvm_memory_used_bytes gauge
jvm_memory_used_bytes{job="carDemo",jvm_memory_pool_name="JIT code cache",jvm_memory_type="non_heap"} 9.363744e+06
jvm_memory_used_bytes{job="carDemo",jvm_memory_pool_name="JIT data cache",jvm_memory_type="non_heap"} 1.6777216e+07
jvm_memory_used_bytes{job="carDemo",jvm_memory_pool_name="class storage",jvm_memory_type="non_heap"} 6.3833536e+07
jvm_memory_used_bytes{job="carDemo",jvm_memory_pool_name="miscellaneous non-heap storage",jvm_memory_type="non_heap"} 3.4031192e+07
jvm_memory_used_bytes{job="carDemo",jvm_memory_pool_name="nursery-allocate",jvm_memory_type="heap"} 1.3974888e+07
jvm_memory_used_bytes{job="carDemo",jvm_memory_pool_name="nursery-survivor",jvm_memory_type="heap"} 6.5536e+06
jvm_memory_used_bytes{job="carDemo",jvm_memory_pool_name="tenured-LOA",jvm_memory_type="heap"} 0
jvm_memory_used_bytes{job="carDemo",jvm_memory_pool_name="tenured-SOA",jvm_memory_type="heap"} 3.511952e+07
# HELP jvm_thread_count Number of executing platform threads.
# TYPE jvm_thread_count gauge
jvm_thread_count{job="carDemo",jvm_thread_daemon="false",jvm_thread_state="blocked"} 1
jvm_thread_count{job="carDemo",jvm_thread_daemon="false",jvm_thread_state="runnable"} 1
jvm_thread_count{job="carDemo",jvm_thread_daemon="false",jvm_thread_state="timed_waiting"} 1
jvm_thread_count{job="carDemo",jvm_thread_daemon="false",jvm_thread_state="waiting"} 1
jvm_thread_count{job="carDemo",jvm_thread_daemon="true",jvm_thread_state="runnable"} 22
jvm_thread_count{job="carDemo",jvm_thread_daemon="true",jvm_thread_state="timed_waiting"} 24
jvm_thread_count{job="carDemo",jvm_thread_daemon="true",jvm_thread_state="waiting"} 16
# HELP queueSize_ratio The number of items queued
# TYPE queueSize_ratio gauge
queueSize_ratio{job="carDemo",processorType="BatchLogRecordProcessor"} 0
queueSize_ratio{job="carDemo",processorType="BatchSpanProcessor"} 0
# HELP start_driving_total 
# TYPE start_driving_total counter
start_driving_total{job="carDemo"} 1
fmhwong commented 7 months ago

With icr.io/appcafe/open-liberty:full-java8-openj9-ubi

openjdk version "1.8.0_392"
IBM Semeru Runtime Open Edition (build 1.8.0_392-b08)
Eclipse OpenJ9 VM (build openj9-0.41.0, JRE 1.8.0 Linux amd64-64-Bit Compressed References 20231122_810 (JIT enabled, AOT enabled)
OpenJ9   - 461bf3c70
OMR      - 5eee6ad9d
JCL      - b73cbdd342 based on jdk8u392-b08)
# HELP car_locked car locked
# TYPE car_locked gauge
car_locked{job="carDemo"} 0
# HELP car_speed car speed
# TYPE car_speed gauge
car_speed{driver="Don",job="carDemo"} 128.69268798828125
# HELP car_speedSummary_km_per_hour Summary of car speed
# TYPE car_speedSummary_km_per_hour histogram
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="0"} 7
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="5"} 7
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="10"} 7
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="25"} 8
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="50"} 9
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="75"} 11
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="100"} 13
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="250"} 59
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="500"} 59
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="750"} 59
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="1000"} 59
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="2500"} 59
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="5000"} 59
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="7500"} 59
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="10000"} 59
car_speedSummary_km_per_hour_bucket{driver="Don",job="carDemo",le="+Inf"} 59
car_speedSummary_km_per_hour_sum{driver="Don",job="carDemo"} 6343
car_speedSummary_km_per_hour_count{driver="Don",job="carDemo"} 59
# HELP jvm_class_count Number of classes currently loaded.
# TYPE jvm_class_count gauge
jvm_class_count{job="carDemo"} 10605
# HELP jvm_class_loaded_total Number of classes loaded since JVM start.
# TYPE jvm_class_loaded_total counter
jvm_class_loaded_total{job="carDemo"} 10628
# HELP jvm_class_unloaded_total Number of classes unloaded since JVM start.
# TYPE jvm_class_unloaded_total counter
jvm_class_unloaded_total{job="carDemo"} 23
# HELP jvm_cpu_count Number of processors available to the Java virtual machine.
# TYPE jvm_cpu_count gauge
jvm_cpu_count{job="carDemo"} 1
# HELP jvm_cpu_recent_utilization_ratio Recent CPU utilization for the process as reported by the JVM.
# TYPE jvm_cpu_recent_utilization_ratio gauge
jvm_cpu_recent_utilization_ratio{job="carDemo"} 0.10091230930633881
# HELP jvm_cpu_time_seconds_total CPU time used by the process as reported by the JVM.
# TYPE jvm_cpu_time_seconds_total counter
jvm_cpu_time_seconds_total{job="carDemo"} 46.957495
# HELP jvm_gc_duration_seconds Duration of JVM garbage collection actions.
# TYPE jvm_gc_duration_seconds histogram
jvm_gc_duration_seconds_bucket{job="carDemo",jvm_gc_action="end of major GC",jvm_gc_name="global",le="0.01"} 0
jvm_gc_duration_seconds_bucket{job="carDemo",jvm_gc_action="end of major GC",jvm_gc_name="global",le="0.1"} 1
jvm_gc_duration_seconds_bucket{job="carDemo",jvm_gc_action="end of major GC",jvm_gc_name="global",le="1"} 1
jvm_gc_duration_seconds_bucket{job="carDemo",jvm_gc_action="end of major GC",jvm_gc_name="global",le="10"} 1
jvm_gc_duration_seconds_bucket{job="carDemo",jvm_gc_action="end of major GC",jvm_gc_name="global",le="+Inf"} 1
jvm_gc_duration_seconds_sum{job="carDemo",jvm_gc_action="end of major GC",jvm_gc_name="global"} 0.025
jvm_gc_duration_seconds_count{job="carDemo",jvm_gc_action="end of major GC",jvm_gc_name="global"} 1
jvm_gc_duration_seconds_bucket{job="carDemo",jvm_gc_action="end of minor GC",jvm_gc_name="scavenge",le="0.01"} 0
jvm_gc_duration_seconds_bucket{job="carDemo",jvm_gc_action="end of minor GC",jvm_gc_name="scavenge",le="0.1"} 1
jvm_gc_duration_seconds_bucket{job="carDemo",jvm_gc_action="end of minor GC",jvm_gc_name="scavenge",le="1"} 1
jvm_gc_duration_seconds_bucket{job="carDemo",jvm_gc_action="end of minor GC",jvm_gc_name="scavenge",le="10"} 1
jvm_gc_duration_seconds_bucket{job="carDemo",jvm_gc_action="end of minor GC",jvm_gc_name="scavenge",le="+Inf"} 1
jvm_gc_duration_seconds_sum{job="carDemo",jvm_gc_action="end of minor GC",jvm_gc_name="scavenge"} 0.023
jvm_gc_duration_seconds_count{job="carDemo",jvm_gc_action="end of minor GC",jvm_gc_name="scavenge"} 1
# HELP jvm_memory_committed_bytes Measure of memory committed.
# TYPE jvm_memory_committed_bytes gauge
jvm_memory_committed_bytes{job="carDemo",jvm_memory_pool_name="JIT code cache",jvm_memory_type="non_heap"} 1.34217728e+08
jvm_memory_committed_bytes{job="carDemo",jvm_memory_pool_name="JIT data cache",jvm_memory_type="non_heap"} 1.4680064e+07
jvm_memory_committed_bytes{job="carDemo",jvm_memory_pool_name="class storage",jvm_memory_type="non_heap"} 8.8541536e+07
jvm_memory_committed_bytes{job="carDemo",jvm_memory_pool_name="miscellaneous non-heap storage",jvm_memory_type="non_heap"} 6.067404e+07
jvm_memory_committed_bytes{job="carDemo",jvm_memory_pool_name="nursery-allocate",jvm_memory_type="heap"} 2.2085632e+07
jvm_memory_committed_bytes{job="carDemo",jvm_memory_pool_name="nursery-survivor",jvm_memory_type="heap"} 1.0551296e+07
jvm_memory_committed_bytes{job="carDemo",jvm_memory_pool_name="tenured-LOA",jvm_memory_type="heap"} 2.588672e+06
jvm_memory_committed_bytes{job="carDemo",jvm_memory_pool_name="tenured-SOA",jvm_memory_type="heap"} 4.9184768e+07
# HELP jvm_memory_limit_bytes Measure of max obtainable memory.
# TYPE jvm_memory_limit_bytes gauge
jvm_memory_limit_bytes{job="carDemo",jvm_memory_pool_name="JIT code cache",jvm_memory_type="non_heap"} 1.34217728e+08
jvm_memory_limit_bytes{job="carDemo",jvm_memory_pool_name="JIT data cache",jvm_memory_type="non_heap"} 4.02653184e+08
jvm_memory_limit_bytes{job="carDemo",jvm_memory_pool_name="nursery-allocate",jvm_memory_type="heap"} 4.5413376e+07
jvm_memory_limit_bytes{job="carDemo",jvm_memory_pool_name="nursery-survivor",jvm_memory_type="heap"} 2.1695488e+07
jvm_memory_limit_bytes{job="carDemo",jvm_memory_pool_name="tenured-LOA",jvm_memory_type="heap"} 1.331712e+07
jvm_memory_limit_bytes{job="carDemo",jvm_memory_pool_name="tenured-SOA",jvm_memory_type="heap"} 2.53021184e+08
# HELP jvm_memory_used_after_last_gc_bytes Measure of memory used, as measured after the most recent garbage collection event on this pool.
# TYPE jvm_memory_used_after_last_gc_bytes gauge
jvm_memory_used_after_last_gc_bytes{job="carDemo",jvm_memory_pool_name="nursery-allocate",jvm_memory_type="heap"} 7.306584e+06
jvm_memory_used_after_last_gc_bytes{job="carDemo",jvm_memory_pool_name="nursery-survivor",jvm_memory_type="heap"} 1.0551296e+07
jvm_memory_used_after_last_gc_bytes{job="carDemo",jvm_memory_pool_name="tenured-LOA",jvm_memory_type="heap"} 0
jvm_memory_used_after_last_gc_bytes{job="carDemo",jvm_memory_pool_name="tenured-SOA",jvm_memory_type="heap"} 3.6230192e+07
# HELP jvm_memory_used_bytes Measure of memory used.
# TYPE jvm_memory_used_bytes gauge
jvm_memory_used_bytes{job="carDemo",jvm_memory_pool_name="JIT code cache",jvm_memory_type="non_heap"} 8.252e+06
jvm_memory_used_bytes{job="carDemo",jvm_memory_pool_name="JIT data cache",jvm_memory_type="non_heap"} 1.4680064e+07
jvm_memory_used_bytes{job="carDemo",jvm_memory_pool_name="class storage",jvm_memory_type="non_heap"} 5.9186048e+07
jvm_memory_used_bytes{job="carDemo",jvm_memory_pool_name="miscellaneous non-heap storage",jvm_memory_type="non_heap"} 2.72677e+07
jvm_memory_used_bytes{job="carDemo",jvm_memory_pool_name="nursery-allocate",jvm_memory_type="heap"} 1.6022928e+07
jvm_memory_used_bytes{job="carDemo",jvm_memory_pool_name="nursery-survivor",jvm_memory_type="heap"} 1.0551296e+07
jvm_memory_used_bytes{job="carDemo",jvm_memory_pool_name="tenured-LOA",jvm_memory_type="heap"} 0
jvm_memory_used_bytes{job="carDemo",jvm_memory_pool_name="tenured-SOA",jvm_memory_type="heap"} 3.6288208e+07
# HELP jvm_thread_count Number of executing platform threads.
# TYPE jvm_thread_count gauge
jvm_thread_count{job="carDemo",jvm_thread_daemon="false"} 2
jvm_thread_count{job="carDemo",jvm_thread_daemon="true"} 59
# HELP queueSize_ratio The number of items queued
# TYPE queueSize_ratio gauge
queueSize_ratio{job="carDemo",processorType="BatchLogRecordProcessor"} 0
queueSize_ratio{job="carDemo",processorType="BatchSpanProcessor"} 0
# HELP start_driving_total 
# TYPE start_driving_total counter
start_driving_total{job="carDemo"} 1