Skip to content

Commit

Permalink
remove footgun
Browse files Browse the repository at this point in the history
  • Loading branch information
dashpole committed Sep 22, 2022
1 parent faa4c22 commit 251a124
Show file tree
Hide file tree
Showing 8 changed files with 1,270 additions and 37 deletions.
14 changes: 13 additions & 1 deletion bridge/opencensus/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,27 @@ go 1.18
require (
go.opencensus.io v0.23.0
go.opentelemetry.io/otel v1.10.0
go.opentelemetry.io/otel/exporters/prometheus v0.32.0
go.opentelemetry.io/otel/metric v0.32.0
go.opentelemetry.io/otel/sdk v1.10.0
go.opentelemetry.io/otel/sdk/metric v0.32.0
go.opentelemetry.io/otel/trace v1.10.0
)

require (
github.com/beorn7/perks v1.0.1 // indirect
github.com/cespare/xxhash/v2 v2.1.2 // indirect
github.com/go-logr/logr v1.2.3 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e // indirect
golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7 // indirect
github.com/golang/protobuf v1.5.2 // indirect
github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect
github.com/prometheus/client_golang v1.13.0 // indirect
github.com/prometheus/client_model v0.2.0 // indirect
github.com/prometheus/common v0.37.0 // indirect
github.com/prometheus/procfs v0.8.0 // indirect
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a // indirect
google.golang.org/protobuf v1.28.1 // indirect
)

replace go.opentelemetry.io/otel => ../..
Expand All @@ -27,3 +37,5 @@ replace go.opentelemetry.io/otel/sdk => ../../sdk
replace go.opentelemetry.io/otel/metric => ../../metric

replace go.opentelemetry.io/otel/sdk/metric => ../../sdk/metric

replace go.opentelemetry.io/otel/exporters/prometheus => ../../exporters/prometheus
402 changes: 399 additions & 3 deletions bridge/opencensus/go.sum

Large diffs are not rendered by default.

32 changes: 12 additions & 20 deletions bridge/opencensus/metric.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import (
"go.opencensus.io/metric/metricproducer"

internal "go.opentelemetry.io/otel/bridge/opencensus/internal/ocmetric"
"go.opentelemetry.io/otel/exporters/prometheus"
"go.opentelemetry.io/otel/sdk/instrumentation"
"go.opentelemetry.io/otel/sdk/metric"
"go.opentelemetry.io/otel/sdk/metric/metricdata"
Expand Down Expand Up @@ -64,41 +65,32 @@ func (e *exporter) ExportMetrics(ctx context.Context, ocmetrics []*ocmetricdata.
}

type reader struct {
// This reader doesn't actually matter. It is just there to satisfy the Reader interface.
metric.Reader
res *resource.Resource
manager *metricproducer.Manager
}

// NewMetricExporter returns an OpenTelemetry metric.Reader that can be used as
// a source of metrics for OpenTelemetry (pull) exporters.
func NewMetricReader(res *resource.Resource) metric.Reader {
// NewPrometheusBridge returns a prometheus.Bridge that can be used as
// a source of metrics for OpenTelemetry Prometheus exporters.
func NewPrometheusBridge() prometheus.Bridge {
return &reader{
Reader: metric.NewManualReader(),
res: res,
manager: metricproducer.GlobalManager(),
}
}

// Collect overrides the manual reader's collect method to retrieve metrics from OpenCensus.
func (r *reader) Collect(context.Context) (metricdata.ResourceMetrics, error) {
func (r *reader) Collect(context.Context) (metricdata.ScopeMetrics, error) {
producers := r.manager.GetAll()
data := []*ocmetricdata.Metric{}
for _, ocProducer := range producers {
data = append(data, ocProducer.Read()...)
}
otelmetrics, err := internal.ConvertMetrics(data)
if err != nil {
return metricdata.ResourceMetrics{}, err
return metricdata.ScopeMetrics{}, err
}
return metricdata.ResourceMetrics{
Resource: r.res,
ScopeMetrics: []metricdata.ScopeMetrics{
{
Scope: instrumentation.Scope{
Name: "go.opentelemetry.io/otel/bridge/opencensus",
},
Metrics: otelmetrics,
},
}}, nil
return metricdata.ScopeMetrics{
Scope: instrumentation.Scope{
Name: "go.opentelemetry.io/otel/bridge/opencensus",
},
Metrics: otelmetrics,
}, nil
}
14 changes: 13 additions & 1 deletion bridge/opencensus/test/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,22 @@ require (
)

require (
github.com/beorn7/perks v1.0.1 // indirect
github.com/cespare/xxhash/v2 v2.1.2 // indirect
github.com/go-logr/logr v1.2.3 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e // indirect
github.com/golang/protobuf v1.5.2 // indirect
github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect
github.com/prometheus/client_golang v1.13.0 // indirect
github.com/prometheus/client_model v0.2.0 // indirect
github.com/prometheus/common v0.37.0 // indirect
github.com/prometheus/procfs v0.8.0 // indirect
go.opentelemetry.io/otel/exporters/prometheus v0.32.0 // indirect
go.opentelemetry.io/otel/metric v0.32.0 // indirect
go.opentelemetry.io/otel/sdk/metric v0.32.0 // indirect
golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7 // indirect
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a // indirect
google.golang.org/protobuf v1.28.1 // indirect
)

replace go.opentelemetry.io/otel => ../../..
Expand All @@ -30,3 +40,5 @@ replace go.opentelemetry.io/otel/trace => ../../../trace
replace go.opentelemetry.io/otel/metric => ../../../metric

replace go.opentelemetry.io/otel/sdk/metric => ../../../sdk/metric

replace go.opentelemetry.io/otel/exporters/prometheus => ../../../exporters/prometheus

0 comments on commit 251a124

Please sign in to comment.