Skip to content

Commit a171a3e

Browse files
ArthurSensAkhigbeEromo
authored andcommitted
[receiver/prometheusremotewrite] Add HTTP server to handler PRW requests (open-telemetry#35535)
Part of open-telemetry#33782 **Description:** This PR adds an HTTP server to the `prometheusremotewritereceiver` component. To keep PRs small for easier reviews, the handler doesn't do anything at the moment. Signed-off-by: Arthur Silva Sens <[email protected]>
1 parent a11de37 commit a171a3e

File tree

8 files changed

+214
-21
lines changed

8 files changed

+214
-21
lines changed

.chloggen/prwreceiver-httpserver.yaml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Use this changelog template to create an entry for release notes.
2+
3+
# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix'
4+
change_type: enhancement
5+
6+
# The name of the component, or a single word describing the area of concern, (e.g. filelogreceiver)
7+
component: receiver/prometheusremotewrite
8+
9+
# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
10+
note: Add HTTP Server to handler Prometheus Remote Write requests
11+
12+
# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists.
13+
issues: [35535]
14+
15+
# (Optional) One or more lines of additional information to render under the primary note.
16+
# These lines will be padded with 2 spaces and then inserted directly into the document.
17+
# Use pipe (|) for multiline entries.
18+
subtext: Warning - The HTTP Server still doesn't do anything. It's just a placeholder for now.
19+
20+
# If your change doesn't affect end users or the exported elements of any package,
21+
# you should instead start your pull request title with [chore] or use the "Skip Changelog" label.
22+
# Optional: The change log or logs in which this entry should be included.
23+
# e.g. '[user]' or '[user, api]'
24+
# Include 'user' if the change is relevant to end users.
25+
# Include 'api' if there is a change to a library API.
26+
# Default: '[user]'
27+
change_logs: [api, user]

receiver/prometheusremotewritereceiver/config.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,13 @@ package prometheusremotewritereceiver // import "github.com/open-telemetry/opent
55

66
import (
77
"go.opentelemetry.io/collector/component"
8+
"go.opentelemetry.io/collector/config/confighttp"
89
)
910

1011
// Config holds common fields and embedded protocol-specific configurations
11-
type Config struct{}
12+
type Config struct {
13+
confighttp.ServerConfig `mapstructure:",squash"`
14+
}
1215

1316
var _ component.Config = (*Config)(nil)
1417

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
package prometheusremotewritereceiver // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusremotewritereceiver"
5+
6+
import (
7+
"testing"
8+
9+
"github.com/stretchr/testify/assert"
10+
"go.opentelemetry.io/collector/component/componenttest"
11+
)
12+
13+
func TestCreateDefaultConfig(t *testing.T) {
14+
cfg := createDefaultConfig()
15+
assert.NotNil(t, cfg, "failed to create default config")
16+
assert.NoError(t, componenttest.CheckConfigStruct(cfg))
17+
}

receiver/prometheusremotewritereceiver/factory.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"context"
88

99
"go.opentelemetry.io/collector/component"
10+
"go.opentelemetry.io/collector/config/confighttp"
1011
"go.opentelemetry.io/collector/consumer"
1112
"go.opentelemetry.io/collector/receiver"
1213

@@ -22,7 +23,11 @@ func NewFactory() receiver.Factory {
2223
}
2324

2425
func createDefaultConfig() component.Config {
25-
return &Config{}
26+
return &Config{
27+
ServerConfig: confighttp.ServerConfig{
28+
Endpoint: "localhost:9090",
29+
},
30+
}
2631
}
2732

2833
// createMetrics creates a metrics receiver based on provided config.
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
package prometheusremotewritereceiver // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/prometheusremotewritereceiver"
5+
6+
import (
7+
"context"
8+
"testing"
9+
10+
"github.com/stretchr/testify/assert"
11+
"go.opentelemetry.io/collector/consumer/consumertest"
12+
"go.opentelemetry.io/collector/receiver/receivertest"
13+
)
14+
15+
func TestCreateMetricsReceiver(t *testing.T) {
16+
factory := NewFactory()
17+
cfg := factory.CreateDefaultConfig()
18+
cfg.(*Config).Endpoint = "http://localhost:0"
19+
20+
tReceiver, err := factory.CreateMetrics(context.Background(), receivertest.NewNopSettings(), cfg, consumertest.NewNop())
21+
assert.NoError(t, err)
22+
assert.NotNil(t, tReceiver, "metrics receiver creation failed")
23+
}

receiver/prometheusremotewritereceiver/go.mod

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,29 +3,58 @@ module github.com/open-telemetry/opentelemetry-collector-contrib/receiver/promet
33
go 1.22.0
44

55
require (
6+
github.com/stretchr/testify v1.9.0
67
go.opentelemetry.io/collector/component v0.111.0
8+
go.opentelemetry.io/collector/component/componentstatus v0.111.0
9+
go.opentelemetry.io/collector/config/confighttp v0.111.0
710
go.opentelemetry.io/collector/consumer v0.111.0
11+
go.opentelemetry.io/collector/consumer/consumertest v0.111.0
812
go.opentelemetry.io/collector/receiver v0.111.0
9-
go.uber.org/zap v1.27.0
1013
)
1114

1215
require (
16+
github.com/davecgh/go-spew v1.1.1 // indirect
17+
github.com/felixge/httpsnoop v1.0.4 // indirect
18+
github.com/fsnotify/fsnotify v1.7.0 // indirect
19+
github.com/go-logr/logr v1.4.2 // indirect
20+
github.com/go-logr/stdr v1.2.2 // indirect
1321
github.com/gogo/protobuf v1.3.2 // indirect
22+
github.com/golang/snappy v0.0.4 // indirect
23+
github.com/google/uuid v1.6.0 // indirect
1424
github.com/json-iterator/go v1.1.12 // indirect
25+
github.com/klauspost/compress v1.17.10 // indirect
1526
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
1627
github.com/modern-go/reflect2 v1.0.2 // indirect
28+
github.com/pmezard/go-difflib v1.0.0 // indirect
29+
github.com/rs/cors v1.11.1 // indirect
30+
go.opentelemetry.io/collector/client v1.17.0 // indirect
31+
go.opentelemetry.io/collector/config/configauth v0.111.0 // indirect
32+
go.opentelemetry.io/collector/config/configcompression v1.17.0 // indirect
33+
go.opentelemetry.io/collector/config/configopaque v1.17.0 // indirect
1734
go.opentelemetry.io/collector/config/configtelemetry v0.111.0 // indirect
35+
go.opentelemetry.io/collector/config/configtls v1.17.0 // indirect
36+
go.opentelemetry.io/collector/config/internal v0.111.0 // indirect
37+
go.opentelemetry.io/collector/consumer/consumerprofiles v0.111.0 // indirect
38+
go.opentelemetry.io/collector/extension v0.111.0 // indirect
39+
go.opentelemetry.io/collector/extension/auth v0.111.0 // indirect
1840
go.opentelemetry.io/collector/internal/globalsignal v0.111.0 // indirect
1941
go.opentelemetry.io/collector/pdata v1.17.0 // indirect
42+
go.opentelemetry.io/collector/pdata/pprofile v0.111.0 // indirect
2043
go.opentelemetry.io/collector/pipeline v0.111.0 // indirect
44+
go.opentelemetry.io/collector/receiver/receiverprofiles v0.111.0 // indirect
45+
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.55.0 // indirect
2146
go.opentelemetry.io/otel v1.30.0 // indirect
2247
go.opentelemetry.io/otel/metric v1.30.0 // indirect
48+
go.opentelemetry.io/otel/sdk v1.30.0 // indirect
49+
go.opentelemetry.io/otel/sdk/metric v1.30.0 // indirect
2350
go.opentelemetry.io/otel/trace v1.30.0 // indirect
2451
go.uber.org/multierr v1.11.0 // indirect
25-
golang.org/x/net v0.28.0 // indirect
52+
go.uber.org/zap v1.27.0 // indirect
53+
golang.org/x/net v0.29.0 // indirect
2654
golang.org/x/sys v0.25.0 // indirect
27-
golang.org/x/text v0.17.0 // indirect
55+
golang.org/x/text v0.18.0 // indirect
2856
google.golang.org/genproto/googleapis/rpc v0.0.0-20240822170219-fc7c04adadcd // indirect
2957
google.golang.org/grpc v1.67.1 // indirect
3058
google.golang.org/protobuf v1.34.2 // indirect
59+
gopkg.in/yaml.v3 v3.0.1 // indirect
3160
)

receiver/prometheusremotewritereceiver/go.sum

Lines changed: 56 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)