Skip to content

Commit

Permalink
Combine the Push and Pull metric controllers (#1378)
Browse files Browse the repository at this point in the history
* Push->basic

* Repackage

* Rename away from push

* Make exporter optional; export from a separate goroutine

* Move pull_test into controller_test

* Precommit pass

* New OTLP/Prom example

* Precommit

* Fix the example

* Shorten the example

* Test starting controller w/o exporter

* Test export timeout

* Remove ancient example & lint

* go.mod revert & tidy

* Comments

* Tidy a diff

* Tidy a diff

* Move export kind selector in the new example

* Split this test into its original parts

* Reduce diff size

* Changelog

* Remove extra Add/Done pair

* Remove unused stopCh param; document the Stop behavior

* Typo

* Use ctx

* Missed v0.15

* Apply PR feedback

* Precommit pass

* 0.14 -> 0.15 in new file

* Remove diff chunk markers

* Fix OTLP example

* Upstream

* dashpole comments

* aneurysm9 feedback

* Tidy go.sum
  • Loading branch information
jmacd committed Jan 13, 2021
1 parent 74deedd commit dfece3d
Show file tree
Hide file tree
Showing 29 changed files with 1,510 additions and 674 deletions.
2 changes: 1 addition & 1 deletion .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ updates:
interval: weekly
-
package-ecosystem: gomod
directory: /example/basic
directory: /example/prom-collector
labels:
- dependencies
- go
Expand Down
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,14 @@ coverage.*

gen/

/example/basic/basic
/example/grpc/client/client
/example/grpc/server/server
/example/http/client/client
/example/http/server/server
/example/jaeger/jaeger
/example/namedtracer/namedtracer
/example/opencensus/opencensus
/example/prometheus/prometheus
/example/prom-collector/prom-collector
/example/zipkin/zipkin
/example/otel-collector/otel-collector
5 changes: 4 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,10 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
- `SamplingResult` now passed a `Tracestate` from the parent `SpanContext` (#1432)
- Moved gRPC driver for OTLP exporter to `exporters/otlp/otlpgrpc`. (#1420)
- The `TraceContext` propagator now correctly propagates `TraceState` through the `SpanContext`. (#1447)
- Metric Push and Pull Controller components are combined into a single "basic" Controller:
- `WithExporter()` and `Start()` to configure Push behavior
- `Start()` is optional; use `Collect()` and `ForEach()` for Pull behavior
- `Start()` and `Stop()` accept Context. (#1378)

### Removed

Expand All @@ -58,7 +62,6 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
- Bump `github.com/google/go-cmp` from 0.5.3 to 0.5.4 (#1374)
- Bump `github.com/golangci/golangci-lint` in `/internal/tools` (#1375)


### Fixed

- Metric SDK `SumObserver` and `UpDownSumObserver` instruments correctness fixes. (#1381)
Expand Down
15 changes: 0 additions & 15 deletions example/basic/go.mod

This file was deleted.

17 changes: 0 additions & 17 deletions example/basic/go.sum

This file was deleted.

117 changes: 0 additions & 117 deletions example/basic/main.go

This file was deleted.

19 changes: 9 additions & 10 deletions example/otel-collector/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ import (
"go.opentelemetry.io/otel/label"
"go.opentelemetry.io/otel/metric"
"go.opentelemetry.io/otel/propagation"
"go.opentelemetry.io/otel/sdk/metric/controller/push"
"go.opentelemetry.io/otel/sdk/metric/processor/basic"
controller "go.opentelemetry.io/otel/sdk/metric/controller/basic"
processor "go.opentelemetry.io/otel/sdk/metric/processor/basic"
"go.opentelemetry.io/otel/sdk/metric/selector/simple"
"go.opentelemetry.io/otel/sdk/resource"
sdktrace "go.opentelemetry.io/otel/sdk/trace"
Expand Down Expand Up @@ -73,28 +73,27 @@ func initProvider() func() {
sdktrace.WithSpanProcessor(bsp),
)

pusher := push.New(
basic.New(
cont := controller.New(
processor.New(
simple.NewWithExactDistribution(),
exp,
),
exp,
push.WithPeriod(2*time.Second),
controller.WithPusher(exp),
controller.WithCollectPeriod(2*time.Second),
)

// set global propagator to tracecontext (the default is no-op).
otel.SetTextMapPropagator(propagation.TraceContext{})
otel.SetTracerProvider(tracerProvider)
otel.SetMeterProvider(pusher.MeterProvider())
pusher.Start()
otel.SetMeterProvider(cont.MeterProvider())
handleErr(cont.Start(context.Background()), "failed to start controller")

return func() {
// Shutdown will flush any remaining spans.
handleErr(tracerProvider.Shutdown(ctx), "failed to shutdown TracerProvider")

// Push any last metric events to the exporter.
pusher.Stop()
handleErr(exp.Shutdown(ctx), "failed to stop exporter")
handleErr(cont.Stop(context.Background()), "failed to stop controller")
}
}

Expand Down
3 changes: 3 additions & 0 deletions example/prom-collector/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
This example demonstrates a metrics export pipeline that supports
Prometheus (pull) and simultaneously exports OTLP to an OpenTelemetry
endpoint (push).
18 changes: 18 additions & 0 deletions example/prom-collector/go.mod
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
module go.opentelemetry.io/otel/example/prom-collector

go 1.14

replace (
go.opentelemetry.io/otel => ../..
go.opentelemetry.io/otel/exporters/metric/prometheus => ../../exporters/metric/prometheus
go.opentelemetry.io/otel/exporters/otlp => ../../exporters/otlp
go.opentelemetry.io/otel/sdk => ../../sdk
)

require (
go.opentelemetry.io/otel v0.15.0
go.opentelemetry.io/otel/exporters/metric/prometheus v0.15.0
go.opentelemetry.io/otel/exporters/otlp v0.15.0
go.opentelemetry.io/otel/sdk v0.15.0
google.golang.org/grpc v1.34.0
)
Loading

0 comments on commit dfece3d

Please sign in to comment.