Skip to content

Commit

Permalink
Update otel collector 0.60.0 (#88)
Browse files Browse the repository at this point in the history
* Update jaeger receiver

* Update kafka exporter

* Update prometheus exporter, fix compile errors

* feat: upgrade otel collector 0.60.0

* bump go version

* Pin to specific golang patch version

* Try more upkept container scanner

* print results

* Revert to azure container scan

Co-authored-by: prodion23 <donniepropst@Donnies-MacBook-Pro.local>
  • Loading branch information
prodion23 and prodion23 authored Sep 19, 2022
1 parent c877b2e commit 5d54afd
Show file tree
Hide file tree
Showing 47 changed files with 1,889 additions and 2,318 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
test-and-build:
strategy:
matrix:
go-version: [1.17]
go-version: [1.18]
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM golang:1.17-buster as build-stage
FROM golang:1.18.6-buster as build-stage

RUN mkdir -p /go/src/github.com/hypertrace/collector
WORKDIR /go/src/github.com/hypertrace/collector
Expand Down
2 changes: 1 addition & 1 deletion exporter/kafkaexporter/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Kafka Exporter

**IMPORTANT:** This component is copied from https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/v0.54.0/exporter/kafkaexporter and
**IMPORTANT:** This component is copied from https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/v0.60.0/exporter/kafkaexporter and
adapted to accept compression settings and also do span curing on large spans.

| Status | |
Expand Down
37 changes: 21 additions & 16 deletions exporter/kafkaexporter/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,9 @@ import (
)

const (
typeStr = "kafka"
typeStr = "kafka"
// The stability level of the exporter.
stability = component.StabilityLevelBeta
defaultTracesTopic = "otlp_spans"
defaultMetricsTopic = "otlp_metrics"
defaultLogsTopic = "otlp_logs"
Expand Down Expand Up @@ -73,9 +75,9 @@ func NewFactory(options ...FactoryOption) component.ExporterFactory {
return component.NewExporterFactory(
typeStr,
createDefaultConfig,
component.WithTracesExporter(f.createTracesExporter),
component.WithMetricsExporter(f.createMetricsExporter),
component.WithLogsExporter(f.createLogsExporter),
component.WithTracesExporter(f.createTracesExporter, stability),
component.WithMetricsExporter(f.createMetricsExporter, stability),
component.WithLogsExporter(f.createLogsExporter, stability),
)
}

Expand Down Expand Up @@ -112,24 +114,25 @@ type kafkaExporterFactory struct {
}

func (f *kafkaExporterFactory) createTracesExporter(
_ context.Context,
ctx context.Context,
set component.ExporterCreateSettings,
cfg config.Exporter,
) (component.TracesExporter, error) {
oCfg := cfg.(*Config)
oCfg := *(cfg.(*Config)) // Clone the config
if oCfg.Topic == "" {
oCfg.Topic = defaultTracesTopic
}
if oCfg.Encoding == "otlp_json" {
set.Logger.Info("otlp_json is considered experimental and should not be used in a production environment")
}
exp, err := newTracesExporter(*oCfg, set, f.tracesMarshalers)
exp, err := newTracesExporter(oCfg, set, f.tracesMarshalers)
if err != nil {
return nil, err
}
return exporterhelper.NewTracesExporter(
cfg,
ctx,
set,
&oCfg,
exp.tracesPusher,
exporterhelper.WithCapabilities(consumer.Capabilities{MutatesData: false}),
// Disable exporterhelper Timeout, because we cannot pass a Context to the Producer,
Expand All @@ -141,24 +144,25 @@ func (f *kafkaExporterFactory) createTracesExporter(
}

func (f *kafkaExporterFactory) createMetricsExporter(
_ context.Context,
ctx context.Context,
set component.ExporterCreateSettings,
cfg config.Exporter,
) (component.MetricsExporter, error) {
oCfg := cfg.(*Config)
oCfg := *(cfg.(*Config)) // Clone the config
if oCfg.Topic == "" {
oCfg.Topic = defaultMetricsTopic
}
if oCfg.Encoding == "otlp_json" {
set.Logger.Info("otlp_json is considered experimental and should not be used in a production environment")
}
exp, err := newMetricsExporter(*oCfg, set, f.metricsMarshalers)
exp, err := newMetricsExporter(oCfg, set, f.metricsMarshalers)
if err != nil {
return nil, err
}
return exporterhelper.NewMetricsExporter(
cfg,
ctx,
set,
&oCfg,
exp.metricsDataPusher,
exporterhelper.WithCapabilities(consumer.Capabilities{MutatesData: false}),
// Disable exporterhelper Timeout, because we cannot pass a Context to the Producer,
Expand All @@ -170,24 +174,25 @@ func (f *kafkaExporterFactory) createMetricsExporter(
}

func (f *kafkaExporterFactory) createLogsExporter(
_ context.Context,
ctx context.Context,
set component.ExporterCreateSettings,
cfg config.Exporter,
) (component.LogsExporter, error) {
oCfg := cfg.(*Config)
oCfg := *(cfg.(*Config)) // Clone the config
if oCfg.Topic == "" {
oCfg.Topic = defaultLogsTopic
}
if oCfg.Encoding == "otlp_json" {
set.Logger.Info("otlp_json is considered experimental and should not be used in a production environment")
}
exp, err := newLogsExporter(*oCfg, set, f.logsMarshalers)
exp, err := newLogsExporter(oCfg, set, f.logsMarshalers)
if err != nil {
return nil, err
}
return exporterhelper.NewLogsExporter(
cfg,
ctx,
set,
&oCfg,
exp.logsDataPusher,
exporterhelper.WithCapabilities(consumer.Capabilities{MutatesData: false}),
// Disable exporterhelper Timeout, because we cannot pass a Context to the Producer,
Expand Down
38 changes: 38 additions & 0 deletions exporter/kafkaexporter/factory_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ package kafkaexporter

import (
"context"
"reflect"
"testing"

"github.com/Shopify/sarama"
Expand All @@ -34,6 +35,43 @@ func TestCreateDefaultConfig(t *testing.T) {
assert.Equal(t, "", cfg.Topic)
}

func TestCreateAllExporter(t *testing.T) {
cfg0 := createDefaultConfig().(*Config)
cfg1 := createDefaultConfig().(*Config)
cfg2 := createDefaultConfig().(*Config)

cfg0.Brokers = []string{"invalid:9092"}
cfg1.Brokers = []string{"invalid:9092"}
cfg2.Brokers = []string{"invalid:9092"}

cfg0.ProtocolVersion = "2.0.0"
cfg1.ProtocolVersion = "2.0.0"
cfg2.ProtocolVersion = "2.0.0"

// this disables contacting the broker so we can successfully create the exporter
cfg0.Metadata.Full = false
cfg1.Metadata.Full = false
cfg2.Metadata.Full = false

cfgClone := *cfg0 // Clone the config

f := kafkaExporterFactory{tracesMarshalers: tracesMarshalers(), metricsMarshalers: metricsMarshalers(), logsMarshalers: logsMarshalers()}
r0, err := f.createTracesExporter(context.Background(), componenttest.NewNopExporterCreateSettings(), cfg0)
require.NoError(t, err)
r1, err := f.createMetricsExporter(context.Background(), componenttest.NewNopExporterCreateSettings(), cfg1)
require.NoError(t, err)
r2, err := f.createLogsExporter(context.Background(), componenttest.NewNopExporterCreateSettings(), cfg2)
require.NoError(t, err)

// createTracesExporter should not mutate values
assert.True(t, reflect.DeepEqual(*cfg0, cfgClone), "config should not mutate")
assert.True(t, reflect.DeepEqual(*cfg1, cfgClone), "config should not mutate")
assert.True(t, reflect.DeepEqual(*cfg2, cfgClone), "config should not mutate")
assert.NotNil(t, r0)
assert.NotNil(t, r1)
assert.NotNil(t, r2)
}

func TestCreateTracesExporter(t *testing.T) {
cfg := createDefaultConfig().(*Config)
cfg.Brokers = []string{"invalid:9092"}
Expand Down
56 changes: 28 additions & 28 deletions exporter/kafkaexporter/go.mod
Original file line number Diff line number Diff line change
@@ -1,68 +1,68 @@
module github.com/open-telemetry/opentelemetry-collector-contrib/exporter/kafkaexporter

go 1.17
go 1.18

require (
github.com/Shopify/sarama v1.34.1
github.com/aws/aws-sdk-go v1.44.38
github.com/Shopify/sarama v1.36.0
github.com/aws/aws-sdk-go v1.44.96
github.com/gogo/protobuf v1.3.2
github.com/jaegertracing/jaeger v1.35.2
github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.54.0
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger v0.54.0
github.com/stretchr/testify v1.7.4
github.com/jaegertracing/jaeger v1.37.0
github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.60.0
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger v0.60.0
github.com/stretchr/testify v1.8.0
github.com/xdg-go/scram v1.1.1
go.opentelemetry.io/collector v0.54.0
go.opentelemetry.io/collector/pdata v0.54.0
go.opentelemetry.io/collector/semconv v0.54.0
go.opentelemetry.io/collector v0.60.0
go.opentelemetry.io/collector/pdata v0.60.0
go.opentelemetry.io/collector/semconv v0.60.0
go.uber.org/multierr v1.8.0
go.uber.org/zap v1.21.0
go.uber.org/zap v1.23.0
)

require (
github.com/apache/thrift v0.16.0 // indirect
github.com/cenkalti/backoff/v4 v4.1.3 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/eapache/go-resiliency v1.2.0 // indirect
github.com/eapache/go-resiliency v1.3.0 // indirect
github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 // indirect
github.com/eapache/queue v1.1.0 // indirect
github.com/golang/protobuf v1.5.2 // indirect
github.com/golang/snappy v0.0.4 // indirect
github.com/hashicorp/errwrap v1.0.0 // indirect
github.com/hashicorp/go-multierror v1.1.1 // indirect
github.com/hashicorp/go-uuid v1.0.2 // indirect
github.com/hashicorp/go-uuid v1.0.3 // indirect
github.com/jcmturner/aescts/v2 v2.0.0 // indirect
github.com/jcmturner/dnsutils/v2 v2.0.0 // indirect
github.com/jcmturner/gofork v1.0.0 // indirect
github.com/jcmturner/gokrb5/v8 v8.4.2 // indirect
github.com/jcmturner/gofork v1.7.6 // indirect
github.com/jcmturner/gokrb5/v8 v8.4.3 // indirect
github.com/jcmturner/rpc/v2 v2.0.3 // indirect
github.com/jmespath/go-jmespath v0.4.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/klauspost/compress v1.15.6 // indirect
github.com/knadh/koanf v1.4.2 // indirect
github.com/klauspost/compress v1.15.9 // indirect
github.com/knadh/koanf v1.4.3 // indirect
github.com/mitchellh/copystructure v1.2.0 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/mitchellh/reflectwalk v1.0.2 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/opentracing/opentracing-go v1.2.0 // indirect
github.com/pierrec/lz4/v4 v4.1.14 // indirect
github.com/pierrec/lz4/v4 v4.1.15 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect
github.com/uber/jaeger-client-go v2.30.0+incompatible // indirect
github.com/uber/jaeger-lib v2.4.1+incompatible // indirect
github.com/xdg-go/pbkdf2 v1.0.0 // indirect
github.com/xdg-go/stringprep v1.0.3 // indirect
go.opencensus.io v0.23.0 // indirect
go.opentelemetry.io/otel v1.7.0 // indirect
go.opentelemetry.io/otel/metric v0.30.0 // indirect
go.opentelemetry.io/otel/trace v1.7.0 // indirect
go.uber.org/atomic v1.9.0 // indirect
golang.org/x/crypto v0.0.0-20220507011949-2cf3adece122 // indirect
golang.org/x/net v0.0.0-20220520000938-2e3eb7b945c2 // indirect
golang.org/x/sys v0.0.0-20220412211240-33da011f77ad // indirect
go.opentelemetry.io/otel v1.9.0 // indirect
go.opentelemetry.io/otel/metric v0.31.0 // indirect
go.opentelemetry.io/otel/trace v1.9.0 // indirect
go.uber.org/atomic v1.10.0 // indirect
golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa // indirect
golang.org/x/net v0.0.0-20220809184613-07c6da5e1ced // indirect
golang.org/x/sys v0.0.0-20220808155132-1c4a2a72c664 // indirect
golang.org/x/text v0.3.7 // indirect
google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac // indirect
google.golang.org/grpc v1.47.0 // indirect
google.golang.org/protobuf v1.28.0 // indirect
google.golang.org/genproto v0.0.0-20220519153652-3a47de7e79bd // indirect
google.golang.org/grpc v1.49.0 // indirect
google.golang.org/protobuf v1.28.1 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
Loading

0 comments on commit 5d54afd

Please sign in to comment.