Skip to content

Commit 4f535ef

Browse files
feat: Add REST API Receiver (PIPE-416) (#2822)
* boiler plate + config * client implementation * pagination * metrics/logs conversion * receiver polling/storage * integration test * README * flatten auth config * update README * poll immediately on startup * lint fixes * rename test config * remove encoding/json * fix auth structure in readme * more doc tweaks * timestamp based pagination * fix duplicate data extraction/parsing * intelligent metric parsing * parse agg_temp, monotonic for metrics * akamai edgegrid auth * refactor auth configs * update auth readme * improve Akamai auth * oauth * document metrics config section * support nested response_fields * adaptive polling behavior * fmt * refactor receiver.go * rm unused param * feedback * authModeNone * github feedback * README update * update dependencies * tidy again * require metric.name_field * update dependabot with new component --------- Co-authored-by: Dakota Paasman <122491662+dpaasman00@users.noreply.github.com>
1 parent 997e0a6 commit 4f535ef

31 files changed

Lines changed: 7183 additions & 146 deletions

.github/dependabot.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -548,6 +548,17 @@ updates:
548548
commit-message:
549549
prefix: "deps"
550550
include: "scope"
551+
- package-ecosystem: "gomod"
552+
directory: "/receiver/restapireceiver"
553+
schedule:
554+
interval: "weekly"
555+
ignore:
556+
# Opentelemetry updates will be done manually
557+
- dependency-name: "go.opentelemetry.io/*"
558+
- dependency-name: "github.com/open-telemetry/opentelemetry-collector*"
559+
commit-message:
560+
prefix: "deps"
561+
include: "scope"
551562
- package-ecosystem: "gomod"
552563
directory: "/receiver/routereceiver"
553564
schedule:

docs/receivers.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ Below is a list of supported receivers with links to their documentation pages.
7171
| Prometheus Remote Write Receiver | [prometheusremotewrite](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/v0.141.0/receiver/prometheusremotewritereceiver/README.md) |
7272
| RabbitMQ Receiver | [rabbitmqreceiver](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/v0.141.0/receiver/rabbitmqreceiver/README.md) |
7373
| Redis Receiver | [redisreceiver](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/v0.141.0/receiver/redisreceiver/README.md) |
74+
| REST API Receiver | [restapireceiver](../receiver/restapireceiver/README.md) |
7475
| Riak Receiver | [riakreceiver](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/v0.141.0/receiver/riakreceiver/README.md) |
7576
| Route Receiver | [routereceiver](../receiver/routereceiver/README.md) |
7677
| SAP Hana Receiver | [saphanamreceiver](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/v0.141.0/receiver/saphanareceiver) |

factories/receivers.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import (
2626
"github.com/observiq/bindplane-otel-collector/receiver/oktareceiver"
2727
"github.com/observiq/bindplane-otel-collector/receiver/pcapreceiver"
2828
"github.com/observiq/bindplane-otel-collector/receiver/pluginreceiver"
29+
"github.com/observiq/bindplane-otel-collector/receiver/restapireceiver"
2930
"github.com/observiq/bindplane-otel-collector/receiver/routereceiver"
3031
"github.com/observiq/bindplane-otel-collector/receiver/sapnetweaverreceiver"
3132
"github.com/observiq/bindplane-otel-collector/receiver/splunksearchapireceiver"
@@ -171,6 +172,7 @@ var defaultReceivers = []receiver.Factory{
171172
pluginreceiver.NewFactory(),
172173
podmanreceiver.NewFactory(),
173174
postgresqlreceiver.NewFactory(),
175+
restapireceiver.NewFactory(),
174176
prometheusreceiver.NewFactory(),
175177
prometheusremotewritereceiver.NewFactory(),
176178
rabbitmqreceiver.NewFactory(),

go.mod

Lines changed: 49 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ require (
3838
github.com/observiq/bindplane-otel-collector/receiver/oktareceiver v1.89.0
3939
github.com/observiq/bindplane-otel-collector/receiver/pcapreceiver v1.89.0
4040
github.com/observiq/bindplane-otel-collector/receiver/pluginreceiver v1.89.0
41+
github.com/observiq/bindplane-otel-collector/receiver/restapireceiver v1.89.0
4142
github.com/observiq/bindplane-otel-collector/receiver/routereceiver v1.89.0
4243
github.com/observiq/bindplane-otel-collector/receiver/sapnetweaverreceiver v1.89.0
4344
github.com/observiq/bindplane-otel-collector/receiver/splunksearchapireceiver v1.89.0
@@ -87,8 +88,8 @@ require (
8788
github.com/open-telemetry/opentelemetry-collector-contrib/extension/pprofextension v0.141.0
8889
github.com/open-telemetry/opentelemetry-collector-contrib/extension/sigv4authextension v0.141.0
8990
github.com/open-telemetry/opentelemetry-collector-contrib/extension/storage/filestorage v0.141.0
90-
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.141.0
91-
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.141.0
91+
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.142.0
92+
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.142.0
9293
github.com/open-telemetry/opentelemetry-collector-contrib/processor/attributesprocessor v0.141.0
9394
github.com/open-telemetry/opentelemetry-collector-contrib/processor/cumulativetodeltaprocessor v0.141.0
9495
github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatorateprocessor v0.141.0
@@ -176,29 +177,29 @@ require (
176177
github.com/shirou/gopsutil/v3 v3.24.5 // indirect
177178
github.com/spf13/pflag v1.0.10
178179
github.com/stretchr/testify v1.11.1
179-
go.opentelemetry.io/collector/component v1.47.0
180-
go.opentelemetry.io/collector/confmap v1.47.0
180+
go.opentelemetry.io/collector/component v1.48.0
181+
go.opentelemetry.io/collector/confmap v1.48.0
181182
go.opentelemetry.io/collector/confmap/provider/envprovider v1.47.0
182183
go.opentelemetry.io/collector/confmap/provider/fileprovider v1.47.0
183184
go.opentelemetry.io/collector/confmap/provider/httpsprovider v1.47.0
184185
go.opentelemetry.io/collector/confmap/provider/yamlprovider v1.47.0
185186
go.opentelemetry.io/collector/connector v0.141.0
186187
go.opentelemetry.io/collector/connector/forwardconnector v0.141.0
187-
go.opentelemetry.io/collector/consumer v1.47.0
188+
go.opentelemetry.io/collector/consumer v1.48.0
188189
go.opentelemetry.io/collector/exporter v1.47.0
189190
go.opentelemetry.io/collector/exporter/debugexporter v0.141.0
190191
go.opentelemetry.io/collector/exporter/nopexporter v0.141.0
191192
go.opentelemetry.io/collector/exporter/otlpexporter v0.141.0
192193
go.opentelemetry.io/collector/exporter/otlphttpexporter v0.141.0
193-
go.opentelemetry.io/collector/extension v1.47.0
194+
go.opentelemetry.io/collector/extension v1.48.0
194195
go.opentelemetry.io/collector/extension/zpagesextension v0.141.0
195-
go.opentelemetry.io/collector/featuregate v1.47.0
196+
go.opentelemetry.io/collector/featuregate v1.48.0
196197
go.opentelemetry.io/collector/otelcol v0.141.0
197-
go.opentelemetry.io/collector/pdata v1.47.0
198+
go.opentelemetry.io/collector/pdata v1.48.0
198199
go.opentelemetry.io/collector/processor v1.47.0
199200
go.opentelemetry.io/collector/processor/batchprocessor v0.141.0
200201
go.opentelemetry.io/collector/processor/memorylimiterprocessor v0.141.0
201-
go.opentelemetry.io/collector/receiver v1.47.0
202+
go.opentelemetry.io/collector/receiver v1.48.0
202203
go.opentelemetry.io/collector/receiver/otlpreceiver v0.141.0
203204
go.uber.org/multierr v1.11.0
204205
go.uber.org/zap v1.27.1
@@ -572,50 +573,50 @@ require (
572573
go.opencensus.io v0.24.0 // indirect
573574
go.opentelemetry.io/auto/sdk v1.2.1 // indirect
574575
go.opentelemetry.io/collector v0.141.0 // indirect
575-
go.opentelemetry.io/collector/client v1.47.0 // indirect
576+
go.opentelemetry.io/collector/client v1.48.0 // indirect
576577
go.opentelemetry.io/collector/component/componentstatus v0.141.0 // indirect
577-
go.opentelemetry.io/collector/component/componenttest v0.141.0 // indirect
578-
go.opentelemetry.io/collector/config/configauth v1.47.0 // indirect
579-
go.opentelemetry.io/collector/config/configcompression v1.47.0 // indirect
578+
go.opentelemetry.io/collector/component/componenttest v0.142.0 // indirect
579+
go.opentelemetry.io/collector/config/configauth v1.48.0 // indirect
580+
go.opentelemetry.io/collector/config/configcompression v1.48.0 // indirect
580581
go.opentelemetry.io/collector/config/configgrpc v0.141.0 // indirect
581-
go.opentelemetry.io/collector/config/confighttp v0.141.0 // indirect
582-
go.opentelemetry.io/collector/config/configmiddleware v1.47.0 // indirect
582+
go.opentelemetry.io/collector/config/confighttp v0.142.0 // indirect
583+
go.opentelemetry.io/collector/config/configmiddleware v1.48.0 // indirect
583584
go.opentelemetry.io/collector/config/confignet v1.47.0 // indirect
584-
go.opentelemetry.io/collector/config/configopaque v1.47.0 // indirect
585-
go.opentelemetry.io/collector/config/configoptional v1.47.0 // indirect
585+
go.opentelemetry.io/collector/config/configopaque v1.48.0 // indirect
586+
go.opentelemetry.io/collector/config/configoptional v1.48.0 // indirect
586587
go.opentelemetry.io/collector/config/configretry v1.47.0 // indirect
587588
go.opentelemetry.io/collector/config/configtelemetry v0.141.0 // indirect
588-
go.opentelemetry.io/collector/config/configtls v1.47.0 // indirect
589-
go.opentelemetry.io/collector/confmap/xconfmap v0.141.0 // indirect
589+
go.opentelemetry.io/collector/config/configtls v1.48.0 // indirect
590+
go.opentelemetry.io/collector/confmap/xconfmap v0.142.0 // indirect
590591
go.opentelemetry.io/collector/connector/connectortest v0.141.0 // indirect
591592
go.opentelemetry.io/collector/connector/xconnector v0.141.0 // indirect
592-
go.opentelemetry.io/collector/consumer/consumererror v0.141.0 // indirect
593+
go.opentelemetry.io/collector/consumer/consumererror v0.142.0 // indirect
593594
go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.141.0 // indirect
594-
go.opentelemetry.io/collector/consumer/consumertest v0.141.0 // indirect
595-
go.opentelemetry.io/collector/consumer/xconsumer v0.141.0 // indirect
595+
go.opentelemetry.io/collector/consumer/consumertest v0.142.0 // indirect
596+
go.opentelemetry.io/collector/consumer/xconsumer v0.142.0 // indirect
596597
go.opentelemetry.io/collector/exporter/exporterhelper v0.141.0 // indirect
597598
go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.141.0 // indirect
598599
go.opentelemetry.io/collector/exporter/exportertest v0.141.0 // indirect
599600
go.opentelemetry.io/collector/exporter/xexporter v0.141.0 // indirect
600-
go.opentelemetry.io/collector/extension/extensionauth v1.47.0 // indirect
601+
go.opentelemetry.io/collector/extension/extensionauth v1.48.0 // indirect
601602
go.opentelemetry.io/collector/extension/extensioncapabilities v0.141.0 // indirect
602-
go.opentelemetry.io/collector/extension/extensionmiddleware v0.141.0 // indirect
603-
go.opentelemetry.io/collector/extension/xextension v0.141.0 // indirect
603+
go.opentelemetry.io/collector/extension/extensionmiddleware v0.142.0 // indirect
604+
go.opentelemetry.io/collector/extension/xextension v0.142.0 // indirect
604605
go.opentelemetry.io/collector/filter v0.141.0 // indirect
605606
go.opentelemetry.io/collector/internal/fanoutconsumer v0.141.0 // indirect
606607
go.opentelemetry.io/collector/internal/memorylimiter v0.141.0 // indirect
607608
go.opentelemetry.io/collector/internal/sharedcomponent v0.141.0 // indirect
608609
go.opentelemetry.io/collector/internal/telemetry v0.141.0 // indirect
609-
go.opentelemetry.io/collector/pdata/pprofile v0.141.0 // indirect
610-
go.opentelemetry.io/collector/pdata/testdata v0.141.0 // indirect
610+
go.opentelemetry.io/collector/pdata/pprofile v0.142.0 // indirect
611+
go.opentelemetry.io/collector/pdata/testdata v0.142.0 // indirect
611612
go.opentelemetry.io/collector/pdata/xpdata v0.141.0 // indirect
612-
go.opentelemetry.io/collector/pipeline v1.47.0 // indirect
613+
go.opentelemetry.io/collector/pipeline v1.48.0 // indirect
613614
go.opentelemetry.io/collector/pipeline/xpipeline v0.141.0 // indirect
614615
go.opentelemetry.io/collector/processor/processorhelper/xprocessorhelper v0.141.0 // indirect
615616
go.opentelemetry.io/collector/processor/xprocessor v0.141.0 // indirect
616-
go.opentelemetry.io/collector/receiver/receiverhelper v0.141.0 // indirect
617-
go.opentelemetry.io/collector/receiver/receivertest v0.141.0 // indirect
618-
go.opentelemetry.io/collector/receiver/xreceiver v0.141.0 // indirect
617+
go.opentelemetry.io/collector/receiver/receiverhelper v0.142.0 // indirect
618+
go.opentelemetry.io/collector/receiver/receivertest v0.142.0 // indirect
619+
go.opentelemetry.io/collector/receiver/xreceiver v0.142.0 // indirect
619620
go.opentelemetry.io/collector/scraper v0.141.0 // indirect
620621
go.opentelemetry.io/collector/scraper/scraperhelper v0.141.0 // indirect
621622
go.opentelemetry.io/collector/service/hostcapabilities v0.141.0 // indirect
@@ -657,7 +658,7 @@ require (
657658
github.com/Azure/azure-amqp-common-go/v4 v4.2.0 // indirect
658659
github.com/bmatcuk/doublestar/v4 v4.9.1 // indirect
659660
github.com/hooklift/gowsdl v0.5.0 // indirect
660-
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.141.0 // indirect; indir2ct
661+
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.142.0 // indirect; indir2ct
661662
github.com/ovh/go-ovh v1.9.0 // indirect
662663
github.com/relvacode/iso8601 v1.7.0 // indirect
663664
)
@@ -807,7 +808,7 @@ require (
807808
github.com/hashicorp/go-retryablehttp v0.7.7 // indirect
808809
github.com/hashicorp/go-rootcerts v1.0.2 // indirect
809810
github.com/hashicorp/go-uuid v1.0.3 // indirect
810-
github.com/hashicorp/go-version v1.7.0 // indirect
811+
github.com/hashicorp/go-version v1.8.0 // indirect
811812
github.com/hashicorp/golang-lru v1.0.2 // indirect
812813
github.com/hashicorp/nomad/api v0.0.0-20250930071859-eaa0fe0e27af // indirect
813814
github.com/hashicorp/serf v0.10.1 // indirect
@@ -861,8 +862,8 @@ require (
861862
github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/metrics v0.141.0 // indirect; indi72.0
862863
github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/proxy v0.141.0 // indirect; indi72.0
863864
github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/xray v0.141.0 // indirect; indi72.0
864-
github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.141.0 // indirect; indi72.0
865-
github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.141.0 // indirect; indi72.0
865+
github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.142.0 // indirect; indi72.0
866+
github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.142.0 // indirect; indi72.0
866867
github.com/open-telemetry/opentelemetry-collector-contrib/internal/docker v0.141.0 // indirect; indi72.0
867868
github.com/open-telemetry/opentelemetry-collector-contrib/internal/k8sconfig v0.141.0 // indirect; indi72.0
868869
github.com/open-telemetry/opentelemetry-collector-contrib/internal/kubelet v0.141.0 // indirect; indi72.0
@@ -874,7 +875,7 @@ require (
874875
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/experimentalmetricmetadata v0.141.0 // indirect; indi72.0
875876
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.141.0 // indirect; indi72.0
876877
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.141.0 // indirect; indi72.0
877-
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza v0.141.0 // indirect; indi72.0
878+
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza v0.142.0 // indirect; indi72.0
878879
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger v0.141.0 // indirect; indi72.0
879880
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.141.0 // indirect; indi72.0
880881
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.141.0 // indirect; indi72.0
@@ -934,21 +935,21 @@ require (
934935
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0 // indirect
935936
go.opentelemetry.io/contrib/propagators/b3 v1.38.0 // indirect
936937
go.opentelemetry.io/contrib/zpages v0.63.0 // indirect
937-
go.opentelemetry.io/otel v1.38.0 // indirect
938+
go.opentelemetry.io/otel v1.39.0 // indirect
938939
go.opentelemetry.io/otel/exporters/prometheus v0.60.0 // indirect
939-
go.opentelemetry.io/otel/metric v1.38.0 // indirect
940-
go.opentelemetry.io/otel/sdk v1.38.0 // indirect
941-
go.opentelemetry.io/otel/sdk/metric v1.38.0
942-
go.opentelemetry.io/otel/trace v1.38.0 // indirect
940+
go.opentelemetry.io/otel/metric v1.39.0 // indirect
941+
go.opentelemetry.io/otel/sdk v1.39.0 // indirect
942+
go.opentelemetry.io/otel/sdk/metric v1.39.0
943+
go.opentelemetry.io/otel/trace v1.39.0 // indirect
943944
go.uber.org/atomic v1.11.0 // indirect
944-
golang.org/x/crypto v0.45.0 // indirect
945+
golang.org/x/crypto v0.46.0 // indirect
945946
golang.org/x/exp v0.0.0-20251113190631-e25ba8c21ef6 // indirect
946947
golang.org/x/mod v0.30.0 // indirect
947-
golang.org/x/net v0.47.0 // indirect
948+
golang.org/x/net v0.48.0 // indirect
948949
golang.org/x/oauth2 v0.34.0 // indirect
949-
golang.org/x/sync v0.18.0 // indirect
950-
golang.org/x/term v0.37.0 // indirect
951-
golang.org/x/text v0.31.0 // indirect
950+
golang.org/x/sync v0.19.0 // indirect
951+
golang.org/x/term v0.38.0 // indirect
952+
golang.org/x/text v0.32.0 // indirect
952953
golang.org/x/time v0.14.0 // indirect
953954
golang.org/x/tools v0.39.0 // indirect
954955
golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect
@@ -1071,6 +1072,8 @@ replace github.com/observiq/bindplane-otel-collector/receiver/pcapreceiver => ./
10711072

10721073
replace github.com/observiq/bindplane-otel-collector/receiver/pluginreceiver => ./receiver/pluginreceiver
10731074

1075+
replace github.com/observiq/bindplane-otel-collector/receiver/restapireceiver => ./receiver/restapireceiver
1076+
10741077
replace github.com/observiq/bindplane-otel-collector/receiver/routereceiver => ./receiver/routereceiver
10751078

10761079
replace github.com/observiq/bindplane-otel-collector/receiver/sapnetweaverreceiver => ./receiver/sapnetweaverreceiver

0 commit comments

Comments
 (0)