Skip to content

Commit 4753aac

Browse files
authored
Preserve jvm.gc.name attribute in AppSignals GC runtime metrics (#2218)
1 parent 0c715d0 commit 4753aac

9 files changed

Lines changed: 62 additions & 16 deletions

translator/tocwconfig/sampleConfig/appsignals_and_ecs_config.yaml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -575,7 +575,8 @@ processors:
575575
aggregation_type: sum
576576
experimental_scale: 0
577577
label: ""
578-
label_set: []
578+
label_set:
579+
- name
579580
label_value: ""
580581
new_label: ""
581582
new_value: ""
@@ -597,7 +598,8 @@ processors:
597598
aggregation_type: sum
598599
experimental_scale: 0
599600
label: ""
600-
label_set: []
601+
label_set:
602+
- name
601603
label_value: ""
602604
new_label: ""
603605
new_value: ""

translator/tocwconfig/sampleConfig/appsignals_and_eks_config.yaml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -728,7 +728,8 @@ processors:
728728
aggregation_type: sum
729729
experimental_scale: 0
730730
label: ""
731-
label_set: []
731+
label_set:
732+
- name
732733
label_value: ""
733734
new_label: ""
734735
new_value: ""
@@ -750,7 +751,8 @@ processors:
750751
aggregation_type: sum
751752
experimental_scale: 0
752753
label: ""
753-
label_set: []
754+
label_set:
755+
- name
754756
label_value: ""
755757
new_label: ""
756758
new_value: ""

translator/tocwconfig/sampleConfig/appsignals_and_k8s_config.yaml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -729,7 +729,8 @@ processors:
729729
aggregation_type: sum
730730
experimental_scale: 0
731731
label: ""
732-
label_set: []
732+
label_set:
733+
- name
733734
label_value: ""
734735
new_label: ""
735736
new_value: ""
@@ -751,7 +752,8 @@ processors:
751752
aggregation_type: sum
752753
experimental_scale: 0
753754
label: ""
754-
label_set: []
755+
label_set:
756+
- name
755757
label_value: ""
756758
new_label: ""
757759
new_value: ""

translator/tocwconfig/sampleConfig/appsignals_fallback_and_eks_config.yaml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -728,7 +728,8 @@ processors:
728728
aggregation_type: sum
729729
experimental_scale: 0
730730
label: ""
731-
label_set: []
731+
label_set:
732+
- name
732733
label_value: ""
733734
new_label: ""
734735
new_value: ""
@@ -750,7 +751,8 @@ processors:
750751
aggregation_type: sum
751752
experimental_scale: 0
752753
label: ""
753-
label_set: []
754+
label_set:
755+
- name
754756
label_value: ""
755757
new_label: ""
756758
new_value: ""

translator/tocwconfig/sampleConfig/appsignals_over_fallback_config.yaml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -728,7 +728,8 @@ processors:
728728
aggregation_type: sum
729729
experimental_scale: 0
730730
label: ""
731-
label_set: []
731+
label_set:
732+
- name
732733
label_value: ""
733734
new_label: ""
734735
new_value: ""
@@ -750,7 +751,8 @@ processors:
750751
aggregation_type: sum
751752
experimental_scale: 0
752753
label: ""
753-
label_set: []
754+
label_set:
755+
- name
754756
label_value: ""
755757
new_label: ""
756758
new_value: ""

translator/tocwconfig/sampleConfig/base_appsignals_config.yaml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -605,7 +605,8 @@ processors:
605605
aggregation_type: sum
606606
experimental_scale: 0
607607
label: ""
608-
label_set: []
608+
label_set:
609+
- name
609610
label_value: ""
610611
new_label: ""
611612
new_value: ""
@@ -627,7 +628,8 @@ processors:
627628
aggregation_type: sum
628629
experimental_scale: 0
629630
label: ""
630-
label_set: []
631+
label_set:
632+
- name
631633
label_value: ""
632634
new_label: ""
633635
new_value: ""

translator/tocwconfig/sampleConfig/base_appsignals_fallback_config.yaml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -595,7 +595,8 @@ processors:
595595
aggregation_type: sum
596596
experimental_scale: 0
597597
label: ""
598-
label_set: []
598+
label_set:
599+
- name
599600
label_value: ""
600601
new_label: ""
601602
new_value: ""
@@ -617,7 +618,8 @@ processors:
617618
aggregation_type: sum
618619
experimental_scale: 0
619620
label: ""
620-
label_set: []
621+
label_set:
622+
- name
621623
label_value: ""
622624
new_label: ""
623625
new_value: ""

translator/translate/otel/processor/metricstransformprocessor/appsignals_runtime_config.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ transforms:
110110
new_name: JVMGCDuration
111111
operations:
112112
- action: aggregate_labels
113-
label_set: []
113+
label_set: ["name"]
114114
aggregation_type: sum
115115
- action: add_label
116116
new_label: Telemetry.Source
@@ -120,7 +120,7 @@ transforms:
120120
new_name: JVMGCCount
121121
operations:
122122
- action: aggregate_labels
123-
label_set: []
123+
label_set: ["name"]
124124
aggregation_type: sum
125125
- action: add_label
126126
new_label: Telemetry.Source

translator/translate/otel/processor/metricstransformprocessor/translator_test.go

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,3 +139,35 @@ func TestAppSignalsRuntime(t *testing.T) {
139139
assert.True(t, ok)
140140
assert.Equal(t, len(expectedCfg.Transforms), len(actualCfg.Transforms))
141141
}
142+
143+
func TestAppSignalsGCMetricsPreserveNameLabel(t *testing.T) {
144+
transl := NewTranslatorWithName(common.AppSignals).(*translator)
145+
conf := confmap.NewFromStringMap(testutil.GetJson(t, filepath.Join("testdata", "appsignals_config.json")))
146+
translatedCfg, err := transl.Translate(conf)
147+
require.NoError(t, err)
148+
actualCfg, ok := translatedCfg.(*metricstransformprocessor.Config)
149+
require.True(t, ok)
150+
151+
// Verify that JVMGCCount and JVMGCDuration transforms preserve the "name" label
152+
// (jvm.gc.name attribute) so Topology can distinguish GC collector types.
153+
gcMetrics := map[string]bool{
154+
"JVMGCCount": false,
155+
"JVMGCDuration": false,
156+
}
157+
158+
for _, transform := range actualCfg.Transforms {
159+
if _, isGCMetric := gcMetrics[transform.NewName]; isGCMetric {
160+
for _, op := range transform.Operations {
161+
if op.Action == "aggregate_labels" {
162+
assert.Contains(t, op.LabelSet, "name",
163+
"Transform %s must preserve 'name' label (jvm.gc.name) for GC collector differentiation", transform.NewName)
164+
gcMetrics[transform.NewName] = true
165+
}
166+
}
167+
}
168+
}
169+
170+
for metricName, found := range gcMetrics {
171+
assert.True(t, found, "Expected to find transform with aggregate_labels operation for %s", metricName)
172+
}
173+
}

0 commit comments

Comments
 (0)