Skip to content

Commit 3c4a802

Browse files
Paramadonagarakan
authored andcommitted
Adding Prometheus Adapter processor to prometheus pipeline (#1767)
1 parent ec4989c commit 3c4a802

File tree

6 files changed

+54
-11
lines changed

6 files changed

+54
-11
lines changed

plugins/processors/prometheusadapter/internal/delta_calculator.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,11 @@ import (
88
"math"
99
"time"
1010

11-
"github.com/aws/amazon-cloudwatch-agent/internal/mapWithExpiry"
1211
"github.com/prometheus/prometheus/model/value"
1312
"go.opentelemetry.io/collector/pdata/pcommon"
1413
"go.opentelemetry.io/collector/pdata/pmetric"
14+
15+
"github.com/aws/amazon-cloudwatch-agent/internal/mapWithExpiry"
1516
)
1617

1718
const (

plugins/processors/prometheusadapter/processor.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,11 @@ import (
1313
semconv "go.opentelemetry.io/otel/semconv/v1.24.0"
1414
"go.uber.org/zap"
1515

16-
"github.com/aws/amazon-cloudwatch-agent/internal/util/collections"
17-
"github.com/aws/amazon-cloudwatch-agent/plugins/processors/prometheusadapter/internal"
1816
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus"
1917
"github.com/prometheus/common/model"
18+
19+
"github.com/aws/amazon-cloudwatch-agent/internal/util/collections"
20+
"github.com/aws/amazon-cloudwatch-agent/plugins/processors/prometheusadapter/internal"
2021
)
2122

2223
var extraneousMetrics = collections.NewSet(

translator/tocwconfig/sampleConfig/prometheus_combined_config_linux.yaml

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,7 @@ processors:
202202
deltatocumulative/prometheus/amp:
203203
max_stale: 336h0m0s
204204
max_streams: 9223372036854775807
205+
prometheusadapter/prometheus/cloudwatch: {}
205206
prometheusadapter/prometheus/cloudwatchlogs: {}
206207
receivers:
207208
prometheus:
@@ -241,6 +242,43 @@ receivers:
241242
start_time_metric_regex: ""
242243
trim_metric_suffixes: false
243244
use_start_time_metric: false
245+
prometheus/prometheus/cloudwatch:
246+
config:
247+
global:
248+
evaluation_interval: 1m
249+
scrape_interval: 5m
250+
scrape_protocols:
251+
- OpenMetricsText1.0.0
252+
- OpenMetricsText0.0.1
253+
- PrometheusText1.0.0
254+
- PrometheusText0.0.4
255+
scrape_timeout: 5s
256+
scrape_configs:
257+
- enable_compression: true
258+
enable_http2: true
259+
fallback_scrape_protocol: PrometheusText0.0.4
260+
file_sd_configs:
261+
- files:
262+
- {ecsSdFileName}
263+
refresh_interval: 5m
264+
follow_redirects: true
265+
honor_timestamps: true
266+
job_name: cwagent-ecs-file-sd-config
267+
metrics_path: /metrics
268+
sample_limit: 10000
269+
scheme: http
270+
scrape_interval: 5m
271+
scrape_protocols:
272+
- OpenMetricsText1.0.0
273+
- OpenMetricsText0.0.1
274+
- PrometheusText1.0.0
275+
- PrometheusText0.0.4
276+
scrape_timeout: 5s
277+
track_timestamps_staleness: false
278+
report_extra_scrape_metrics: false
279+
start_time_metric_regex: ""
280+
trim_metric_suffixes: false
281+
use_start_time_metric: false
244282
prometheus/prometheus/cloudwatchlogs:
245283
config:
246284
global:
@@ -282,9 +320,9 @@ service:
282320
extensions:
283321
- agenthealth/metrics
284322
- agenthealth/statuscode
285-
- ecs_observer
286323
- sigv4auth
287324
- agenthealth/logs
325+
- ecs_observer
288326
- entitystore
289327
pipelines:
290328
metrics/prometheus/amp:
@@ -299,10 +337,11 @@ service:
299337
exporters:
300338
- awscloudwatch
301339
processors:
340+
- prometheusadapter/prometheus/cloudwatch
302341
- batch/prometheus/cloudwatch
303342
- cumulativetodelta/prometheus/cloudwatch
304343
receivers:
305-
- prometheus
344+
- prometheus/prometheus/cloudwatch
306345
metrics/prometheus/cloudwatchlogs:
307346
exporters:
308347
- awsemf/prometheus

translator/tocwconfig/sampleConfig/prometheus_pmd_config.yaml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,20 +47,21 @@ processors:
4747
ec2_instance_tag_keys:
4848
- AutoScalingGroupName
4949
ec2_metadata_tags:
50-
- InstanceType
5150
- ImageId
5251
- InstanceId
52+
- InstanceType
5353
imds_retries: 1
5454
middleware: agenthealth/statuscode
5555
refresh_tags_interval: 0s
5656
refresh_volumes_interval: 0s
57+
prometheusadapter/prometheus/cloudwatch: {}
5758
rollup:
5859
attribute_groups:
5960
- - InstanceId
6061
- InstanceType
6162
cache_size: 1000
6263
receivers:
63-
prometheus:
64+
prometheus/prometheus/cloudwatch:
6465
config:
6566
global:
6667
evaluation_interval: 1m
@@ -105,12 +106,13 @@ service:
105106
exporters:
106107
- awscloudwatch
107108
processors:
109+
- prometheusadapter/prometheus/cloudwatch
108110
- batch/prometheus/cloudwatch
109111
- cumulativetodelta/prometheus/cloudwatch
110112
- rollup
111113
- ec2tagger
112114
receivers:
113-
- prometheus
115+
- prometheus/prometheus/cloudwatch
114116
telemetry:
115117
logs:
116118
encoding: console

translator/translate/otel/pipeline/prometheus/translator.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,9 @@ func (t *translator) Translate(conf *confmap.Conf) (*common.ComponentTranslators
7272
return nil, fmt.Errorf("pipeline (%s) is missing prometheus configuration under metrics section with destination (%s)", t.name, t.Destination())
7373
}
7474
translators := &common.ComponentTranslators{
75-
Receivers: common.NewTranslatorMap(otelprom.NewTranslator()),
75+
Receivers: common.NewTranslatorMap(otelprom.NewTranslator(otelprom.WithName(t.name), otelprom.WithConfigKey(common.ConfigKey(common.MetricsKey, common.MetricsCollectedKey, common.PrometheusKey)))),
7676
Processors: common.NewTranslatorMap(
77+
prometheusadapter.NewTranslatorWithName(t.name),
7778
batchprocessor.NewTranslatorWithNameAndSection(t.name, common.MetricsKey),
7879
cumulativetodeltaprocessor.NewTranslator(common.WithName(t.name), cumulativetodeltaprocessor.WithDefaultKeys()),
7980
),

translator/translate/otel/translate_otel_test.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import (
1616
_ "github.com/aws/amazon-cloudwatch-agent/translator/registerrules"
1717
"github.com/aws/amazon-cloudwatch-agent/translator/translate/agent"
1818
"github.com/aws/amazon-cloudwatch-agent/translator/translate/otel/common"
19-
"github.com/aws/amazon-cloudwatch-agent/translator/translate/otel/pipeline/prometheus"
2019
"github.com/aws/amazon-cloudwatch-agent/translator/util/eksdetector"
2120
)
2221

@@ -206,7 +205,7 @@ func TestTranslator(t *testing.T) {
206205
},
207206
},
208207
},
209-
wantErrContains: common.ConfigKey(prometheus.MetricsKey, common.PrometheusConfigPathKey),
208+
wantErrContains: common.ConfigKey(common.PrometheusConfigPathKey),
210209
},
211210
}
212211
for name, testCase := range testCases {

0 commit comments

Comments
 (0)