Skip to content

Commit 4a7cbcc

Browse files
authored
jvm-observ-lib: Add java_micrometer_with_suffixes option
There is yet another metric pattern combinatino. When micrometer metrics are received through OTEL bridge then prometheus suffixes might not be added. Adding this option to jvm/process lib
1 parent 2c38760 commit 4a7cbcc

File tree

13 files changed

+210
-18
lines changed

13 files changed

+210
-18
lines changed

jvm-observ-lib/README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ Supports the following sources:
77
- `prometheus` (https://prometheus.github.io/client_java/instrumentation/jvm/#jvm-memory-metrics). This also works for jmx_exporter (javaagent mode) starting from 1.0.1 release.
88
- `otel` (https://github.com/open-telemetry/opentelemetry-java-contrib/blob/main/jmx-metrics/docs/target-systems/jvm.md)
99
- `otel_with_suffixes` same as otel with add_metric_suffixes=true in otelcollector
10-
- `java_micrometer` (springboot) (https://github.com/micrometer-metrics/micrometer/blob/main/micrometer-core/src/main/java/io/micrometer/core/instrument/binder/jvm/JvmMemoryMetrics.java)
10+
- `java_micrometer` (springboot) (https://github.com/micrometer-metrics/micrometer/blob/main/micrometer-core/src/main/java/io/micrometer/core/instrument/binder/jvm/JvmMemoryMetrics.java). Can be seen when Micrometer to OTEL bridge is used.
11+
- `java_micrometer_with_suffixes` (springboot) same, but with prometheus suffixes
1112
- `prometheus_old` client_java instrumentation prior to 1.0.0 release: (https://github.com/prometheus/client_java/releases/tag/v1.0.0-alpha-4). This also works for jmx_exporter (javaagent mode) prior to 1.0.1 release.
1213
- `jmx_exporter`. Works with jmx_exporter (both http and javaagent modes) and the folllowing snippet:
1314

@@ -45,7 +46,7 @@ local jvm =
4546
uid: 'jvm-sample',
4647
dashboardNamePrefix: 'JVM',
4748
dashboardTags: ['java', 'jvm'],
48-
metricsSource: 'java_micrometer', // or java_otel, prometheus,
49+
metricsSource: 'java_micrometer_with_suffixes', // or java_otel, prometheus,
4950
}
5051
);
5152
jvm.asMonitoringMixin()

jvm-observ-lib/main.libsonnet

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ local processlib = import 'process-observ-lib/main.libsonnet';
1515
filteringSelector: this.config.filteringSelector,
1616
groupLabels: this.config.groupLabels,
1717
instanceLabels: this.config.instanceLabels,
18-
uid: this.config.uid,
18+
uid: this.config.uid - '-jvm',
1919
dashboardNamePrefix: this.config.dashboardNamePrefix,
2020
dashboardTags: this.config.dashboardTags,
2121
metricsSource:
@@ -25,6 +25,7 @@ local processlib = import 'process-observ-lib/main.libsonnet';
2525
+ (if std.member(this.config.metricsSource, 'prometheus') then ['prometheus'] else [])
2626
+ (if std.member(this.config.metricsSource, 'jmx_exporter') then ['jmx_exporter'] else [])
2727
+ (if std.member(this.config.metricsSource, 'prometheus_old') then ['prometheus'] else [])
28+
+ (if std.member(this.config.metricsSource, 'java_micrometer_with_suffixes') then ['java_micrometer_with_suffixes'] else [])
2829
+ (if std.member(this.config.metricsSource, 'java_micrometer') then ['java_micrometer'] else []),
2930
}
3031
),

jvm-observ-lib/signals/buffers.libsonnet

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,11 @@ function(this)
88
aggLevel: 'group',
99
aggFunction: 'avg',
1010
discoveryMetric: {
11-
java_micrometer: 'jvm_buffer_memory_used_bytes', // https://github.com/micrometer-metrics/micrometer/blob/main/micrometer-core/src/main/java/io/micrometer/core/instrument/binder/jvm/JvmMemoryMetrics.java
12-
prometheus: 'jvm_buffer_pool_used_bytes', // https://prometheus.github.io/client_java/instrumentation/jvm/#jvm-buffer-pool-metrics
11+
java_micrometer: 'jvm_buffer_memory_used', // can be seen when otel micrometer bridge is used
12+
java_micrometer_with_suffixes: 'jvm_buffer_memory_used_bytes', // https://github.com/micrometer-metrics/micrometer/blob/main/micrometer-core/src/main/java/io/micrometer/core/instrument/binder/jvm/JvmMemoryMetrics.java
1313
otel: 'process_runtime_jvm_buffer_usage',
1414
otel_with_suffixes: 'process_runtime_jvm_buffer_usage_bytes',
15+
prometheus: 'jvm_buffer_pool_used_bytes', // https://prometheus.github.io/client_java/instrumentation/jvm/#jvm-buffer-pool-metrics
1516
prometheus_old: 'jvm_buffer_pool_used_bytes',
1617
},
1718
signals: {
@@ -23,6 +24,9 @@ function(this)
2324
optional: true,
2425
sources: {
2526
java_micrometer: {
27+
expr: 'jvm_buffer_memory_used{%(queriesSelector)s}',
28+
},
29+
java_micrometer_with_suffixes: {
2630
expr: 'jvm_buffer_memory_used_bytes{%(queriesSelector)s}',
2731
},
2832
prometheus: {
@@ -47,6 +51,9 @@ function(this)
4751
optional: true,
4852
sources: {
4953
java_micrometer: {
54+
expr: 'jvm_buffer_total_capacity{%(queriesSelector)s}',
55+
},
56+
java_micrometer_with_suffixes: {
5057
expr: 'jvm_buffer_total_capacity_bytes{%(queriesSelector)s}',
5158
},
5259
prometheus: {
@@ -71,6 +78,9 @@ function(this)
7178
optional: true,
7279
sources: {
7380
java_micrometer: {
81+
expr: 'jvm_buffer_memory_used{%(queriesSelector)s}',
82+
},
83+
java_micrometer_with_suffixes: {
7484
expr: 'jvm_buffer_memory_used_bytes{%(queriesSelector)s}',
7585
},
7686
prometheus: {
@@ -95,6 +105,9 @@ function(this)
95105
optional: true,
96106
sources: {
97107
java_micrometer: {
108+
expr: 'jvm_buffer_total_capacity{%(queriesSelector)s}',
109+
},
110+
java_micrometer_with_suffixes: {
98111
expr: 'jvm_buffer_total_capacity_bytes{%(queriesSelector)s}',
99112
},
100113
prometheus: {

jvm-observ-lib/signals/classes.libsonnet

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ function(this)
88
aggLevel: 'group',
99
aggFunction: 'avg',
1010
discoveryMetric: {
11-
java_micrometer: 'jvm_classes_loaded_classes', // https://github.com/micrometer-metrics/micrometer/blob/main/micrometer-core/src/main/java/io/micrometer/core/instrument/binder/jvm/ClassLoaderMetrics.java
11+
java_micrometer: 'jvm_classes_loaded', // https://github.com/micrometer-metrics/micrometer/blob/main/micrometer-core/src/main/java/io/micrometer/core/instrument/binder/jvm/ClassLoaderMetrics.java
12+
java_micrometer_with_suffixes: 'jvm_classes_loaded_classes',
1213
prometheus: 'jvm_classes_loaded', // https://prometheus.github.io/client_java/instrumentation/jvm/#jvm-class-loading-metrics
1314
otel: 'process_runtime_jvm_classes_loaded',
1415
otel_with_suffixes: 'process_runtime_jvm_classes_loaded_total',
@@ -23,6 +24,9 @@ function(this)
2324
unit: 'short',
2425
sources: {
2526
java_micrometer: {
27+
expr: 'jvm_classes_loaded{%(queriesSelector)s}',
28+
},
29+
java_micrometer_with_suffixes: {
2630
expr: 'jvm_classes_loaded_classes{%(queriesSelector)s}',
2731
},
2832
prometheus: {

jvm-observ-lib/signals/gc.libsonnet

Lines changed: 69 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ function(this)
66
aggLevel: 'group',
77
aggFunction: 'avg',
88
discoveryMetric: {
9-
java_micrometer: 'jvm_memory_used_bytes',
9+
java_micrometer: 'jvm_memory_used',
10+
java_micrometer_with_suffixes: 'jvm_memory_used_bytes',
1011
prometheus: 'jvm_memory_used_bytes', // https://prometheus.github.io/client_java/instrumentation/jvm/#jvm-memory-metrics
1112
prometheus_old: 'jvm_memory_bytes_used',
1213
otel: 'process_runtime_jvm_memory_usage', //https://opentelemetry.io/docs/specs/semconv/runtime/jvm-metrics/
@@ -28,6 +29,14 @@ function(this)
2829
optional: true,
2930
sources: {
3031
java_micrometer: {
32+
expr: 'jvm_gc_pause_count{%(queriesSelector)s}',
33+
aggKeepLabels: ['action', 'cause'],
34+
legendCustomTemplate: '%(aggLegend)s',
35+
exprWrappers: [
36+
actionLabelPrettify,
37+
],
38+
},
39+
java_micrometer_with_suffixes: {
3140
expr: 'jvm_gc_pause_seconds_count{%(queriesSelector)s}',
3241
aggKeepLabels: ['action', 'cause'],
3342
legendCustomTemplate: '%(aggLegend)s',
@@ -63,6 +72,13 @@ function(this)
6372
optional: true,
6473
sources: {
6574
java_micrometer: {
75+
expr: 'avg by (action,cause, %(agg)s) (rate(jvm_gc_pause_max{%(queriesSelector)s}[$__rate_interval]))',
76+
legendCustomTemplate: '{{ %(agg)s }}: {{ action }} ({{ cause }}) (max)',
77+
exprWrappers: [
78+
actionLabelPrettify,
79+
],
80+
},
81+
java_micrometer_with_suffixes: {
6682
expr: 'avg by (action,cause, %(agg)s) (rate(jvm_gc_pause_seconds_max{%(queriesSelector)s}[$__rate_interval]))',
6783
legendCustomTemplate: '{{ %(agg)s }}: {{ action }} ({{ cause }}) (max)',
6884
exprWrappers: [
@@ -79,6 +95,19 @@ function(this)
7995
optional: true,
8096
sources: {
8197
java_micrometer: {
98+
expr: |||
99+
avg by (%(agg)s, action, cause) (
100+
rate(jvm_gc_pause_sum{%(queriesSelector)s}[$__rate_interval])
101+
/
102+
rate(jvm_gc_pause_count{%(queriesSelector)s}[$__rate_interval])
103+
)
104+
|||,
105+
legendCustomTemplate: '{{ %(agg)s }}: {{ action }} ({{ cause }}) (avg)',
106+
exprWrappers: [
107+
actionLabelPrettify,
108+
],
109+
},
110+
java_micrometer_with_suffixes: {
82111
expr: |||
83112
avg by (%(agg)s, action, cause) (
84113
rate(jvm_gc_pause_seconds_sum{%(queriesSelector)s}[$__rate_interval])
@@ -138,6 +167,9 @@ function(this)
138167
optional: true,
139168
sources: {
140169
java_micrometer: {
170+
expr: 'jvm_gc_memory_promoted{%(queriesSelector)s}',
171+
},
172+
java_micrometer_with_suffixes: {
141173
expr: 'jvm_gc_memory_promoted_bytes_total{%(queriesSelector)s}',
142174
},
143175
},
@@ -151,6 +183,9 @@ function(this)
151183
optional: true,
152184
sources: {
153185
java_micrometer: {
186+
expr: 'jvm_gc_memory_allocated{%(queriesSelector)s}',
187+
},
188+
java_micrometer_with_suffixes: {
154189
expr: 'jvm_gc_memory_allocated_bytes_total{%(queriesSelector)s}',
155190
},
156191
prometheus: {
@@ -192,6 +227,9 @@ function(this)
192227
java_micrometer: {
193228
expr: 'jvm_memory_used_bytes{id=~"(G1 |PS )?Eden Space", area="heap", %(queriesSelector)s}',
194229
},
230+
java_micrometer_with_suffixes: {
231+
expr: 'jvm_memory_used{id=~"(G1 |PS )?Eden Space", area="heap", %(queriesSelector)s}',
232+
},
195233
prometheus: {
196234
expr: 'jvm_memory_pool_used_bytes{pool=~"(G1 |PS )?Eden Space", %(queriesSelector)s}',
197235
},
@@ -223,6 +261,12 @@ function(this)
223261
optional: true,
224262
sources: {
225263
java_micrometer: {
264+
expr: 'jvm_memory_max{id=~"(G1 )?Eden Space", area="heap", %(queriesSelector)s}',
265+
exprWrappers: [
266+
['', ' != -1'],
267+
],
268+
},
269+
java_micrometer_with_suffixes: {
226270
expr: 'jvm_memory_max_bytes{id=~"(G1 )?Eden Space", area="heap", %(queriesSelector)s}',
227271
exprWrappers: [
228272
['', ' != -1'],
@@ -255,6 +299,9 @@ function(this)
255299
optional: true,
256300
sources: {
257301
java_micrometer: {
302+
expr: 'jvm_memory_committed{id=~"(G1 |PS )?Eden Space", area="heap", %(queriesSelector)s}',
303+
},
304+
java_micrometer_with_suffixes: {
258305
expr: 'jvm_memory_committed_bytes{id=~"(G1 |PS )?Eden Space", area="heap", %(queriesSelector)s}',
259306
},
260307
prometheus: {
@@ -283,6 +330,9 @@ function(this)
283330
sources: {
284331
//spring
285332
java_micrometer: {
333+
expr: 'jvm_memory_used{id=~"(G1 |PS )?Survivor Space", area="heap", %(queriesSelector)s}',
334+
},
335+
java_micrometer_with_suffixes: {
286336
expr: 'jvm_memory_used_bytes{id=~"(G1 |PS )?Survivor Space", area="heap", %(queriesSelector)s}',
287337
},
288338
prometheus: {
@@ -316,6 +366,9 @@ function(this)
316366
optional: true,
317367
sources: {
318368
java_micrometer: {
369+
expr: 'jvm_memory_max{id=~"(G1 |PS )?Survivor Space", area="heap", %(queriesSelector)s} != -1',
370+
},
371+
java_micrometer_with_suffixes: {
319372
expr: 'jvm_memory_max_bytes{id=~"(G1 |PS )?Survivor Space", area="heap", %(queriesSelector)s} != -1',
320373
},
321374
prometheus: {
@@ -342,6 +395,9 @@ function(this)
342395
optional: true,
343396
sources: {
344397
java_micrometer: {
398+
expr: 'jvm_memory_committed{id=~"(G1 |PS )?Survivor Space", area="heap", %(queriesSelector)s}',
399+
},
400+
java_micrometer_with_suffixes: {
345401
expr: 'jvm_memory_committed_bytes{id=~"(G1 |PS )?Survivor Space", area="heap", %(queriesSelector)s}',
346402
},
347403
prometheus: {
@@ -369,6 +425,9 @@ function(this)
369425
sources: {
370426
//spring
371427
java_micrometer: {
428+
expr: 'jvm_memory_used{id="Tenured Gen", area="heap", %(queriesSelector)s}',
429+
},
430+
java_micrometer_with_suffixes: {
372431
expr: 'jvm_memory_used_bytes{id="Tenured Gen", area="heap", %(queriesSelector)s}',
373432
},
374433
prometheus: {
@@ -402,6 +461,12 @@ function(this)
402461
optional: true,
403462
sources: {
404463
java_micrometer: {
464+
expr: 'jvm_memory_max{id="Tenured Gen", area="heap", %(queriesSelector)s}',
465+
exprWrappers: [
466+
['', ' != -1'],
467+
],
468+
},
469+
java_micrometer_with_suffixes: {
405470
expr: 'jvm_memory_max_bytes{id="Tenured Gen", area="heap", %(queriesSelector)s}',
406471
exprWrappers: [
407472
['', ' != -1'],
@@ -440,6 +505,9 @@ function(this)
440505
optional: true,
441506
sources: {
442507
java_micrometer: {
508+
expr: 'jvm_memory_committed{id="Tenured Gen", area="heap", %(queriesSelector)s}',
509+
},
510+
java_micrometer_with_suffixes: {
443511
expr: 'jvm_memory_committed_bytes{id="Tenured Gen", area="heap", %(queriesSelector)s}',
444512
},
445513
prometheus: {

jvm-observ-lib/signals/hikari.libsonnet

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ function(this)
2424
expr: 'hikaricp_connections{%(queriesSelector)s}',
2525
aggKeepLabels: ['pool'],
2626
},
27+
java_micrometer_with_suffixes: self.java_micrometer,
2728
otel: {
2829
expr: 'hikaricp_connections{%(queriesSelector)s}',
2930
aggKeepLabels: ['pool'],
@@ -42,6 +43,10 @@ function(this)
4243
expr: 'hikaricp_connections_timeout_total{%(queriesSelector)s}',
4344
aggKeepLabels: ['pool'],
4445
},
46+
java_micrometer_with_suffixes: {
47+
expr: 'hikaricp_connections_timeout{%(queriesSelector)s}',
48+
aggKeepLabels: ['pool'],
49+
},
4550
},
4651
},
4752
connectionsActive: {
@@ -55,6 +60,7 @@ function(this)
5560
expr: 'hikaricp_connections_active{%(queriesSelector)s}',
5661
aggKeepLabels: ['pool'],
5762
},
63+
java_micrometer_with_suffixes: self.java_micrometer,
5864
otel: {
5965
expr: 'hikaricp_connections_active{%(queriesSelector)s}',
6066
aggKeepLabels: ['pool'],
@@ -73,6 +79,7 @@ function(this)
7379
expr: 'hikaricp_connections_idle{%(queriesSelector)s}',
7480
aggKeepLabels: ['pool'],
7581
},
82+
java_micrometer_with_suffixes: self.java_micrometer,
7683
otel: {
7784
expr: 'hikaricp_connections_idle{%(queriesSelector)s}',
7885
aggKeepLabels: ['pool'],
@@ -91,6 +98,7 @@ function(this)
9198
expr: 'hikaricp_connections_pending{%(queriesSelector)s}',
9299
aggKeepLabels: ['pool'],
93100
},
101+
java_micrometer_with_suffixes: self.java_micrometer,
94102
otel: {
95103
expr: 'hikaricp_connections_pending{%(queriesSelector)s}',
96104
aggKeepLabels: ['pool'],
@@ -107,12 +115,20 @@ function(this)
107115
optional: true,
108116
sources: {
109117
java_micrometer: {
118+
expr: |||
119+
rate(hikaricp_connections_creation_sum{%(queriesSelector)s}[$__rate_interval])
120+
/rate(hikaricp_connections_creation_count{%(queriesSelector)s}[$__rate_interval])
121+
|||,
122+
aggKeepLabels: ['pool'],
123+
},
124+
java_micrometer_with_suffixes: {
110125
expr: |||
111126
rate(hikaricp_connections_creation_seconds_sum{%(queriesSelector)s}[$__rate_interval])
112127
/rate(hikaricp_connections_creation_seconds_count{%(queriesSelector)s}[$__rate_interval])
113128
|||,
114129
aggKeepLabels: ['pool'],
115130
},
131+
116132
},
117133
},
118134
connectionsUsageDurationAvg: {
@@ -123,6 +139,13 @@ function(this)
123139
optional: true,
124140
sources: {
125141
java_micrometer: {
142+
expr: |||
143+
rate(hikaricp_connections_usage_sum{%(queriesSelector)s}[$__rate_interval])
144+
/rate(hikaricp_connections_usage_count{%(queriesSelector)s}[$__rate_interval])
145+
|||,
146+
aggKeepLabels: ['pool'],
147+
},
148+
java_micrometer_with_suffixes: {
126149
expr: |||
127150
rate(hikaricp_connections_usage_seconds_sum{%(queriesSelector)s}[$__rate_interval])
128151
/rate(hikaricp_connections_usage_seconds_count{%(queriesSelector)s}[$__rate_interval])
@@ -139,6 +162,13 @@ function(this)
139162
optional: true,
140163
sources: {
141164
java_micrometer: {
165+
expr: |||
166+
rate(hikaricp_connections_acquire_sum{%(queriesSelector)s}[$__rate_interval])
167+
/rate(hikaricp_connections_acquire_count{%(queriesSelector)s}[$__rate_interval])
168+
|||,
169+
aggKeepLabels: ['pool'],
170+
},
171+
java_micrometer_with_suffixes: {
142172
expr: |||
143173
rate(hikaricp_connections_acquire_seconds_sum{%(queriesSelector)s}[$__rate_interval])
144174
/rate(hikaricp_connections_acquire_seconds_count{%(queriesSelector)s}[$__rate_interval])

0 commit comments

Comments
 (0)