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

autoexport: Add OTEL_METRICS_PRODUCERS environment variable support #5281

Merged

Conversation

gouthamve
Copy link
Member

@gouthamve gouthamve commented Mar 17, 2024

This will allow using the Prometheus bridge with autoexport.

The goal is to make it easy for any Prometheus exporter to also be able to emit OTLP. See: https://prometheus.io/blog/2024/03/14/commitment-to-opentelemetry/#otlp-export-in-the-ecosystem

@gouthamve gouthamve requested a review from pellared as a code owner March 17, 2024 10:24
@gouthamve gouthamve requested a review from a team March 17, 2024 10:24
Copy link

codecov bot commented Mar 17, 2024

Codecov Report

Attention: Patch coverage is 72.05882% with 19 lines in your changes are missing coverage. Please review.

Project coverage is 62.4%. Comparing base (52576e4) to head (b889ef0).

Additional details and impacted files

Impacted file tree graph

@@          Coverage Diff          @@
##            main   #5281   +/-   ##
=====================================
  Coverage   62.3%   62.4%           
=====================================
  Files        189     189           
  Lines      11575   11638   +63     
=====================================
+ Hits        7219    7263   +44     
- Misses      4146    4158   +12     
- Partials     210     217    +7     
Files Coverage Δ
exporters/autoexport/registry.go 100.0% <100.0%> (ø)
exporters/autoexport/noop.go 62.5% <0.0%> (-20.9%) ⬇️
exporters/autoexport/metrics.go 78.5% <76.1%> (-3.6%) ⬇️

Copy link
Contributor

@dashpole dashpole left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@gouthamve thanks for this! It will need an entry in CHANGELOG.md

@gouthamve
Copy link
Member Author

Thanks for your review @dashpole!

Anything I can do to move this along @open-telemetry/go-approvers?

@pellared
Copy link
Member

pellared commented Apr 2, 2024

@gouthamve Sorry for the delay. I will do my best to review it this week.

exporters/autoexport/metrics.go Outdated Show resolved Hide resolved
exporters/autoexport/metrics.go Outdated Show resolved Hide resolved
exporters/autoexport/metrics.go Outdated Show resolved Hide resolved
@gouthamve gouthamve force-pushed the autoexport-add-support-for-providers branch from afc9715 to 1ee0485 Compare April 3, 2024 12:02
@gouthamve
Copy link
Member Author

Thanks for the review @pellared. I did the easiest thing here and exposed the Config object. If you see a better way, please let me know.

Also, this seems a little counter-intuitive to me. We are using the same factory and Config interface for every signal type, but the options I added are only required for the "metric" signals.

@gouthamve gouthamve force-pushed the autoexport-add-support-for-providers branch 3 times, most recently from b7e8cda to 9f01a62 Compare April 6, 2024 06:38
@gouthamve
Copy link
Member Author

Hi @pellared @dashpole took a stab at implementing what we discussed? Does this direction look good?

Will add unit tests once you confirm!

@gouthamve gouthamve force-pushed the autoexport-add-support-for-providers branch from 9f01a62 to 93900a4 Compare April 6, 2024 06:41
Copy link
Contributor

@dashpole dashpole left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

implementation looks correct to me.

exporters/autoexport/metrics.go Show resolved Hide resolved
exporters/autoexport/metrics.go Show resolved Hide resolved
@gouthamve gouthamve force-pushed the autoexport-add-support-for-providers branch 2 times, most recently from 1155097 to faf3f01 Compare April 14, 2024 11:02
@gouthamve gouthamve requested a review from pellared April 14, 2024 11:09
@gouthamve gouthamve force-pushed the autoexport-add-support-for-providers branch 3 times, most recently from bce3445 to d1eda11 Compare April 14, 2024 11:24
@gouthamve
Copy link
Member Author

@pellared @dashpole This is now ready for review!

I added the tests and also a WithFallbackMetricsProducer option. Thanks in advance for your review!

@gouthamve gouthamve force-pushed the autoexport-add-support-for-providers branch 3 times, most recently from b2d37af to f3168b9 Compare April 24, 2024 09:58
exporters/autoexport/metrics.go Outdated Show resolved Hide resolved
exporters/autoexport/metrics.go Outdated Show resolved Hide resolved
exporters/autoexport/metrics.go Outdated Show resolved Hide resolved
exporters/autoexport/noop.go Outdated Show resolved Hide resolved
@gouthamve gouthamve force-pushed the autoexport-add-support-for-providers branch from 10c14b1 to b049186 Compare April 24, 2024 17:05
gouthamve added a commit to grafana/unused that referenced this pull request May 5, 2024
CHANGELOG.md Outdated Show resolved Hide resolved
exporters/autoexport/metrics.go Outdated Show resolved Hide resolved
exporters/autoexport/metrics.go Outdated Show resolved Hide resolved
CHANGELOG.md Outdated Show resolved Hide resolved
Co-authored-by: Robert Pająk <[email protected]>
Signed-off-by: gouthamve <[email protected]>
@gouthamve gouthamve force-pushed the autoexport-add-support-for-providers branch from cee6b6c to 4e3ac55 Compare May 6, 2024 13:29
CHANGELOG.md Outdated Show resolved Hide resolved
@pellared pellared changed the title [autoexport] Add support for metric.Producers autoexport: Add support for metric.Producers May 6, 2024
@pellared pellared changed the title autoexport: Add support for metric.Producers autoexport: Add OTEL_METRICS_PRODUCERS environment variable support May 6, 2024
@pellared pellared merged commit b46d700 into open-telemetry:main May 6, 2024
23 checks passed
@gouthamve gouthamve deleted the autoexport-add-support-for-providers branch May 6, 2024 15:50
pellared added a commit to pellared/opentelemetry-go-contrib that referenced this pull request May 6, 2024
pellared added a commit that referenced this pull request May 6, 2024
zailic pushed a commit to zailic/opentelemetry-go-contrib that referenced this pull request May 7, 2024
zailic pushed a commit to zailic/opentelemetry-go-contrib that referenced this pull request May 7, 2024
MrAlias added a commit that referenced this pull request May 21, 2024
### Added

- Add the new `go.opentelemetry.io/contrib/instrgen` package to provide
auto-generated source code instrumentation. (#3068, #3108)
- Add an experimental `OTEL_METRICS_PRODUCERS` environment variable to
`go.opentelemetry.io/contrib/autoexport` to be set metrics producers.
(#5281)
- `prometheus` and `none` are supported values. You can specify multiple
producers separated by a comma.
- Add `WithFallbackMetricProducer` option that adds a fallback if the
`OTEL_METRICS_PRODUCERS` is not set or empty.
- The `go.opentelemetry.io/contrib/processors/baggage/baggagetrace`
module. This module provides a Baggage Span Processor. (#5404)
- Add gRPC trace `Filter` for stats handler to
`go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc`.
(#5196)
- Add a repository Code Ownership Policy. (#5555)
- The `go.opentelemetry.io/contrib/bridges/otellogrus` module. This
module provides an OpenTelemetry logging bridge for
`github.com/sirupsen/logrus`. (#5355)
- The `WithVersion` option function in
`go.opentelemetry.io/contrib/bridges/otelslog`. This option function is
used as a replacement of `WithInstrumentationScope` to specify the
logged package version. (#5588)
- The `WithSchemaURL` option function in
`go.opentelemetry.io/contrib/bridges/otelslog`. This option function is
used as a replacement of `WithInstrumentationScope` to specify the
semantic convention schema URL for the logged records. (#5588)
- Add support for Cloud Run jobs in
`go.opentelemetry.io/contrib/detectors/gcp`. (#5559)

### Changed

- The gRPC trace `Filter` for interceptor is renamed to
`InterceptorFilter`. (#5196)
- The gRPC trace filter functions `Any`, `All`, `None`, `Not`,
`MethodName`, `MethodPrefix`, `FullMethodName`, `ServiceName`,
`ServicePrefix` and `HealthCheck` for interceptor are moved to
`go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/filters/interceptor`.
With this change, the filters in
`go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc`
are now working for stats handler. (#5196)

- `NewLogger` now accepts a `name` `string` as the first argument. This
parameter is used as a replacement of `WithInstrumentationScope` to
specify the name of the logger backing the underlying `Handler`. (#5588)
- `NewHandler` now accepts a `name` `string` as the first argument. This
parameter is used as a replacement of `WithInstrumentationScope` to
specify the name of the logger backing the returned `Handler`. (#5588)
- Upgrade all dependencies of `go.opentelemetry.io/otel/semconv/v1.24.0`
to `go.opentelemetry.io/otel/semconv/v1.25.0`. (#5605)

### Removed

- The `WithInstrumentationScope` option function in
`go.opentelemetry.io/contrib/bridges/otelslog` is removed. Use the
`name` parameter added to `NewHandler` and `NewLogger` as well as
`WithVersion` and `WithSchema` as replacements. (#5588)

### Deprecated

- The `InterceptorFilter` type in
`go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc`
is deprecated. (#5196)
khushijain21 pushed a commit to khushijain21/opentelemetry-go-contrib that referenced this pull request May 22, 2024
### Added

- Add the new `go.opentelemetry.io/contrib/instrgen` package to provide
auto-generated source code instrumentation. (open-telemetry#3068, open-telemetry#3108)
- Add an experimental `OTEL_METRICS_PRODUCERS` environment variable to
`go.opentelemetry.io/contrib/autoexport` to be set metrics producers.
(open-telemetry#5281)
- `prometheus` and `none` are supported values. You can specify multiple
producers separated by a comma.
- Add `WithFallbackMetricProducer` option that adds a fallback if the
`OTEL_METRICS_PRODUCERS` is not set or empty.
- The `go.opentelemetry.io/contrib/processors/baggage/baggagetrace`
module. This module provides a Baggage Span Processor. (open-telemetry#5404)
- Add gRPC trace `Filter` for stats handler to
`go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc`.
(open-telemetry#5196)
- Add a repository Code Ownership Policy. (open-telemetry#5555)
- The `go.opentelemetry.io/contrib/bridges/otellogrus` module. This
module provides an OpenTelemetry logging bridge for
`github.com/sirupsen/logrus`. (open-telemetry#5355)
- The `WithVersion` option function in
`go.opentelemetry.io/contrib/bridges/otelslog`. This option function is
used as a replacement of `WithInstrumentationScope` to specify the
logged package version. (open-telemetry#5588)
- The `WithSchemaURL` option function in
`go.opentelemetry.io/contrib/bridges/otelslog`. This option function is
used as a replacement of `WithInstrumentationScope` to specify the
semantic convention schema URL for the logged records. (open-telemetry#5588)
- Add support for Cloud Run jobs in
`go.opentelemetry.io/contrib/detectors/gcp`. (open-telemetry#5559)

### Changed

- The gRPC trace `Filter` for interceptor is renamed to
`InterceptorFilter`. (open-telemetry#5196)
- The gRPC trace filter functions `Any`, `All`, `None`, `Not`,
`MethodName`, `MethodPrefix`, `FullMethodName`, `ServiceName`,
`ServicePrefix` and `HealthCheck` for interceptor are moved to
`go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/filters/interceptor`.
With this change, the filters in
`go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc`
are now working for stats handler. (open-telemetry#5196)

- `NewLogger` now accepts a `name` `string` as the first argument. This
parameter is used as a replacement of `WithInstrumentationScope` to
specify the name of the logger backing the underlying `Handler`. (open-telemetry#5588)
- `NewHandler` now accepts a `name` `string` as the first argument. This
parameter is used as a replacement of `WithInstrumentationScope` to
specify the name of the logger backing the returned `Handler`. (open-telemetry#5588)
- Upgrade all dependencies of `go.opentelemetry.io/otel/semconv/v1.24.0`
to `go.opentelemetry.io/otel/semconv/v1.25.0`. (open-telemetry#5605)

### Removed

- The `WithInstrumentationScope` option function in
`go.opentelemetry.io/contrib/bridges/otelslog` is removed. Use the
`name` parameter added to `NewHandler` and `NewLogger` as well as
`WithVersion` and `WithSchema` as replacements. (open-telemetry#5588)

### Deprecated

- The `InterceptorFilter` type in
`go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc`
is deprecated. (open-telemetry#5196)
@pellared pellared added this to the untracked milestone Nov 8, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants