Skip to main content

How are Metrics Calculated?

In Trace0, JVM metrics come from the following two OpenTelemetry sources:
  • Requests metrics are calculated from the service’s SPAN_KIND_SERVER spans, one per request the service handles. Request count, requests per second, latency percentiles and errors are all derived from these spans and their durations and statuses.
  • JVM metrics (Memory, Garbage Collection, Threads, Buffers, Classes, CPU and File Descriptors) are calculated from the OpenTelemetry metrics the JVM reports, as defined by the OpenTelemetry semantic conventions for JVM metrics. Each metric below links to its section of that spec.

Aggregation Temporality

OpenTelemetry Sum metrics (Counters and UpDownCounters) and Histogram metrics are reported with an aggregation temporality, which decides what each reported data point means. We use the most recent aggregation temporality the service reported for the metric in the selected period. An aggregation temporality can either be Cumulative or Delta. Gauge and Summary metrics don’t have an aggregation temporality, so this doesn’t apply to them.

Metrics

We currently display the following application metrics for the JVM:

Requests

Single Value Chart

JVM Memory

JVM Garbage Collection

JVM Threads

JVM Buffers

JVM Classes

JVM CPU

JVM File Descriptors