diff --git a/.chloggen/awsemfexporter-publish-initial-metrics.yaml b/.chloggen/awsemfexporter-publish-initial-metrics.yaml new file mode 100755 index 000000000000..3edd8e0132ac --- /dev/null +++ b/.chloggen/awsemfexporter-publish-initial-metrics.yaml @@ -0,0 +1,20 @@ +# Use this changelog template to create an entry for release notes. +# If your change doesn't affect end users, such as a test fix or a tooling change, +# you should instead start your pull request title with [chore] or use the "Skip Changelog" label. + +# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' +change_type: bug_fix + +# The name of the component, or a single word describing the area of concern, (e.g. filelogreceiver) +component: awsemfexporter + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: Add retain_initial_value_of_delta_metric to translateOTelToGroupedMetric, allowing the initial set of metrics to be published + +# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists. +issues: [24051] + +# (Optional) One or more lines of additional information to render under the primary note. +# These lines will be padded with 2 spaces and then inserted directly into the document. +# Use pipe (|) for multiline entries. +subtext: diff --git a/exporter/awsemfexporter/metric_translator.go b/exporter/awsemfexporter/metric_translator.go index 70d71b7796da..2c3b817be354 100644 --- a/exporter/awsemfexporter/metric_translator.go +++ b/exporter/awsemfexporter/metric_translator.go @@ -117,6 +117,7 @@ func (mt metricTranslator) translateOTelToGroupedMetric(rm pmetric.ResourceMetri var instrumentationScopeName string cWNamespace := getNamespace(rm, config.Namespace) logGroup, logStream, patternReplaceSucceeded := getLogInfo(rm, cWNamespace, config) + deltaInitialValue := config.RetainInitialValueOfDeltaMetric ilms := rm.ScopeMetrics() var metricReceiver string @@ -134,11 +135,12 @@ func (mt metricTranslator) translateOTelToGroupedMetric(rm pmetric.ResourceMetri metric := metrics.At(k) metadata := cWMetricMetadata{ groupedMetricMetadata: groupedMetricMetadata{ - namespace: cWNamespace, - timestampMs: timestamp, - logGroup: logGroup, - logStream: logStream, - metricDataType: metric.Type(), + namespace: cWNamespace, + timestampMs: timestamp, + logGroup: logGroup, + logStream: logStream, + metricDataType: metric.Type(), + retainInitialValueForDelta: deltaInitialValue, }, instrumentationScopeName: instrumentationScopeName, receiver: metricReceiver, diff --git a/exporter/awsemfexporter/metric_translator_test.go b/exporter/awsemfexporter/metric_translator_test.go index d09ba1d8eaef..71ab36964ad1 100644 --- a/exporter/awsemfexporter/metric_translator_test.go +++ b/exporter/awsemfexporter/metric_translator_test.go @@ -2343,6 +2343,36 @@ func TestTranslateOtToGroupedMetricForLogGroupAndStream(t *testing.T) { } } +func TestTranslateOtToGroupedMetricForInitialDeltaValue(t *testing.T) { + for _, test := range logGroupStreamTestCases { + t.Run(test.name, func(t *testing.T) { + config := &Config{ + Namespace: "", + LogGroupName: test.inLogGroupName, + LogStreamName: test.inLogStreamName, + DimensionRollupOption: zeroAndSingleDimensionRollup, + logger: zap.NewNop(), + RetainInitialValueOfDeltaMetric: true, + } + + translator := newMetricTranslator(*config) + + groupedMetrics := make(map[interface{}]*groupedMetric) + + rm := test.inputMetrics.ResourceMetrics().At(0) + err := translator.translateOTelToGroupedMetric(rm, groupedMetrics, config) + assert.Nil(t, err) + + assert.NotNil(t, groupedMetrics) + assert.Equal(t, 1, len(groupedMetrics)) + + for _, actual := range groupedMetrics { + assert.True(t, actual.metadata.retainInitialValueForDelta) + } + }) + } +} + func generateTestMetrics(tm testMetric) pmetric.Metrics { md := pmetric.NewMetrics() now := time.Now()