Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[chore][receiver/awsxrayreceiver] add metadata.yaml #21781

Merged
merged 7 commits into from
May 24, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 0 additions & 5 deletions internal/aws/xray/tracesegment.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,6 @@ import (
"fmt"
)

const (
// TypeStr is the type and ingest format of this receiver
TypeStr = "awsxray"
)

type CauseType int

const (
Expand Down
16 changes: 11 additions & 5 deletions receiver/awsxrayreceiver/README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
# AWS X-Ray Receiver

| Status | |
| ------------------------ |--------------------------------------|
| Stability | [beta] |
| Supported pipeline types | traces |
| Distributions | [contrib], [AWS], [observiq], [sumo] |
<!-- status autogenerated section -->
| Status | |
| ------------- |-----------|
| Stability | [beta]: traces |
| Distributions | [contrib], [aws], [observiq], [sumo] |

[beta]: https://github.com/open-telemetry/opentelemetry-collector#beta
[contrib]: https://github.com/open-telemetry/opentelemetry-collector-releases/tree/main/distributions/otelcol-contrib
[aws]: https://github.com/aws-observability/aws-otel-collector
[observiq]: https://github.com/observIQ/observiq-otel-collector
[sumo]: https://github.com/SumoLogic/sumologic-otel-collector
<!-- end autogenerated section -->
## Overview
The AWS X-Ray receiver accepts segments (i.e. spans) in the [X-Ray Segment format](https://docs.aws.amazon.com/xray/latest/devguide/xray-api-segmentdocuments.html).
This enables the collector to receive spans emitted by the existing X-Ray SDK. [Centralized sampling](https://github.com/aws/aws-xray-daemon/blob/master/CHANGELOG.md#300-2018-08-28) is also supported via a local TCP port.
Expand Down
8 changes: 4 additions & 4 deletions receiver/awsxrayreceiver/config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import (
"go.opentelemetry.io/collector/confmap/confmaptest"

"github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/proxy"
awsxray "github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/xray"
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsxrayreceiver/internal/metadata"
)

func TestLoadConfig(t *testing.T) {
Expand All @@ -29,11 +29,11 @@ func TestLoadConfig(t *testing.T) {
expected component.Config
}{
{
id: component.NewIDWithName(awsxray.TypeStr, ""),
id: component.NewIDWithName(metadata.Type, ""),
expected: createDefaultConfig(),
},
{
id: component.NewIDWithName(awsxray.TypeStr, "udp_endpoint"),
id: component.NewIDWithName(metadata.Type, "udp_endpoint"),
expected: &Config{
NetAddr: confignet.NetAddr{
Endpoint: "0.0.0.0:5678",
Expand All @@ -55,7 +55,7 @@ func TestLoadConfig(t *testing.T) {
},
},
{
id: component.NewIDWithName(awsxray.TypeStr, "proxy_server"),
id: component.NewIDWithName(metadata.Type, "proxy_server"),
expected: &Config{
NetAddr: confignet.NetAddr{
Endpoint: "0.0.0.0:2000",
Expand Down
2 changes: 2 additions & 0 deletions receiver/awsxrayreceiver/doc.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

//go:generate mdatagen metadata.yaml

// Package awsxrayreceiver implements a receiver that can be used by the
// Opentelemetry collector to receive traces in the AWS X-Ray segment format.
// More details can be found on:
Expand Down
6 changes: 3 additions & 3 deletions receiver/awsxrayreceiver/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,16 @@ import (
"go.opentelemetry.io/collector/receiver"

"github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/proxy"
awsxray "github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/xray"
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsxrayreceiver/internal/metadata"
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsxrayreceiver/internal/udppoller"
)

// NewFactory creates a factory for AWS receiver.
func NewFactory() receiver.Factory {
return receiver.NewFactory(
awsxray.TypeStr,
metadata.Type,
createDefaultConfig,
receiver.WithTraces(createTracesReceiver, component.StabilityLevelBeta))
receiver.WithTraces(createTracesReceiver, metadata.TracesStability))
}

func createDefaultConfig() component.Config {
Expand Down
4 changes: 2 additions & 2 deletions receiver/awsxrayreceiver/factory_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import (
"go.opentelemetry.io/collector/consumer/consumertest"
"go.opentelemetry.io/collector/receiver/receivertest"

awsxray "github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/xray"
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsxrayreceiver/internal/metadata"
)

func TestCreateDefaultConfig(t *testing.T) {
Expand All @@ -23,7 +23,7 @@ func TestCreateDefaultConfig(t *testing.T) {
assert.NotNil(t, cfg, "failed to create default config")
assert.NoError(t, componenttest.CheckConfigStruct(cfg))

assert.Equal(t, component.Type(awsxray.TypeStr), factory.Type())
assert.Equal(t, component.Type(metadata.Type), factory.Type())
}

func TestCreateTracesReceiver(t *testing.T) {
Expand Down
12 changes: 12 additions & 0 deletions receiver/awsxrayreceiver/internal/metadata/generated_status.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 6 additions & 6 deletions receiver/awsxrayreceiver/internal/udppoller/poller.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ import (
"go.opentelemetry.io/collector/receiver"
"go.uber.org/zap"

awsxray "github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/xray"
recvErr "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsxrayreceiver/internal/errors"
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsxrayreceiver/internal/metadata"
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsxrayreceiver/internal/socketconn"
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsxrayreceiver/internal/tracesegment"
)
Expand Down Expand Up @@ -174,11 +174,11 @@ func (p *poller) poll() {
// TODO: We may want to attempt to shutdown/clean the broken socket and open a new one
// with the same address
p.logger.Error("Irrecoverable socket read error. Exiting poller", zap.Error(err))
p.obsrecv.EndTracesOp(ctx, awsxray.TypeStr, 1, err)
p.obsrecv.EndTracesOp(ctx, metadata.Type, 1, err)
return
} else if errors.As(err, &errRecv) {
p.logger.Error("Recoverable socket read error", zap.Error(err))
p.obsrecv.EndTracesOp(ctx, awsxray.TypeStr, 1, err)
p.obsrecv.EndTracesOp(ctx, metadata.Type, 1, err)
continue
}

Expand All @@ -190,7 +190,7 @@ func (p *poller) poll() {
if errors.As(err, &errRecv) {
p.logger.Error("Failed to split segment header and body",
zap.Error(err))
p.obsrecv.EndTracesOp(ctx, awsxray.TypeStr, 1, err)
p.obsrecv.EndTracesOp(ctx, metadata.Type, 1, err)
continue
}

Expand All @@ -199,7 +199,7 @@ func (p *poller) poll() {
zap.String("header format", header.Format),
zap.Int("header version", header.Version),
)
p.obsrecv.EndTracesOp(ctx, awsxray.TypeStr, 1,
p.obsrecv.EndTracesOp(ctx, metadata.Type, 1,
errors.New("dropped span due to missing body that contains segment"))
continue
}
Expand All @@ -210,7 +210,7 @@ func (p *poller) poll() {
Payload: copybody,
Ctx: ctx,
}
p.obsrecv.EndTracesOp(ctx, awsxray.TypeStr, 1, nil)
p.obsrecv.EndTracesOp(ctx, metadata.Type, 1, nil)
}
}
}
4 changes: 2 additions & 2 deletions receiver/awsxrayreceiver/internal/udppoller/poller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ import (
"go.uber.org/zap/zapcore"
"go.uber.org/zap/zaptest/observer"

awsxray "github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/xray"
internalErr "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsxrayreceiver/internal/errors"
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsxrayreceiver/internal/metadata"
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsxrayreceiver/internal/tracesegment"
)

Expand Down Expand Up @@ -138,7 +138,7 @@ func TestSuccessfullyPollPacket(t *testing.T) {
})
require.NoError(t, err)
ctx := obsrecv.StartMetricsOp(seg.Ctx)
obsrecv.EndTracesOp(ctx, awsxray.TypeStr, 1, nil)
obsrecv.EndTracesOp(ctx, metadata.Type, 1, nil)
return open && randString.String() == string(seg.Payload)
default:
return false
Expand Down
7 changes: 7 additions & 0 deletions receiver/awsxrayreceiver/metadata.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
type: awsxray

status:
class: receiver
stability:
beta: [traces]
distributions: [contrib, aws, observiq, sumo]
8 changes: 4 additions & 4 deletions receiver/awsxrayreceiver/receiver.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ import (
"go.uber.org/zap"

"github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/proxy"
awsxray "github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/xray"
"github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/xray/telemetry"
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsxrayreceiver/internal/metadata"
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsxrayreceiver/internal/translator"
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsxrayreceiver/internal/udppoller"
)
Expand Down Expand Up @@ -114,16 +114,16 @@ func (x *xrayReceiver) start() {
traces, totalSpanCount, err := translator.ToTraces(seg.Payload, x.registry.LoadOrNop(x.settings.ID))
if err != nil {
x.settings.Logger.Warn("X-Ray segment to OT traces conversion failed", zap.Error(err))
x.obsrecv.EndTracesOp(ctx, awsxray.TypeStr, totalSpanCount, err)
x.obsrecv.EndTracesOp(ctx, metadata.Type, totalSpanCount, err)
continue
}

err = x.consumer.ConsumeTraces(ctx, traces)
if err != nil {
x.settings.Logger.Warn("Trace consumer errored out", zap.Error(err))
x.obsrecv.EndTracesOp(ctx, awsxray.TypeStr, totalSpanCount, err)
x.obsrecv.EndTracesOp(ctx, metadata.Type, totalSpanCount, err)
continue
}
x.obsrecv.EndTracesOp(ctx, awsxray.TypeStr, totalSpanCount, nil)
x.obsrecv.EndTracesOp(ctx, metadata.Type, totalSpanCount, nil)
}
}