I am interested in tracking two metrics within JVM - Number of GCs per minute and Time Spent in GC per minute. I have metrics jvm_gc_collection_seconds.count
and jvm_gc_collection_seconds.sum
available with me on the dashboard but I am a little confused about their meaning.
The first metric jvm_gc_collection_seconds.count
seems like it has something to do with measuring time but reading up on it I believe it is the number of times GC was invoked from the start of time (when application started).
jvm_gc_collection_seconds.count/1 minute
give me the number of GC invocation per minute?The second metric jvm_gc_collection_seconds.sum
I believe is the total time spent doing GC activity in seconds from the start of time.
jvm_gc_collection_seconds.sum/1 minute
give me the time spent in seconds doing GC activity in a 1 minute time window?jvm_gc_collection_seconds
is a summary metric.
A summary with a base metric name of
<basename>
exposes multiple time series during a scrape:
- streaming φ-quantiles (0 ≤ φ ≤ 1) of observed events, exposed as
<basename>{quantile="<φ>"}
- the total sum of all observed values, exposed as
<basename>_sum
- the count of events that have been observed, exposed as
<basename>_count
So jvm_gc_collection_seconds_count
has as a total value number of GC events that took place since application start. And jvm_gc_collection_seconds_sum
- total number of seconds taken by all those events.
To get the number of GC invocation per minute you can use increase(jvm_gc_collection_seconds_count [1m])
. And similarly for time spent: increase(jvm_gc_collection_seconds_sum [1m])
.
Additionally, you might find some helpful tips regarding JVM metrics regarding garbage collection in this post by Brian Brazil.