1
0
mirror of https://github.com/open-telemetry/opentelemetry-go.git synced 2026-06-03 18:35:08 +02:00
Commit Graph

2260 Commits

Author SHA1 Message Date
Tyler Yahn ab61991465 Log a view suggestion for duplicate instrument conflicts (#4349)
* Log a view suggestion for duplicate instrument conflicts

* Add change to changelog

* Update changelog entry
2023-07-24 07:47:56 -07:00
Robert Pająk fd5284f75c styleguide: tests goroutine leaks and naming (#4348)
* internal/global: Fix goroutine leaks in tests
2023-07-24 09:35:06 +02:00
Tyler Yahn cbc5890d9c Simplify the last-value aggregate (#4343)
Instead of treating the returned *lastValue as an aggregator from
newLastValue, just use the type directly to construct the Measure and
ComputeAggregation functions returned from the Builder.

Accept a destination type for the underlying computeAggregation. This
allows memory reuse for collections which adds a considerable
optimization.

Simplify the integration testing of the last-value aggregate.

Update benchmarking.
2023-07-21 08:30:11 +02:00
Tyler Yahn a37cb0504a Replace filter aggregator with direct filter on measure (#4342)
* Replace filter aggregator with direct filter on measure

Part of #4220

Instead of using an aggregator to filter measured attributes, directly
filter the attributes in the constructed Measure function the Builder
creates.

Include unit and integration testing of new filtering.

* Update sdk/metric/internal/aggregate/aggregate.go

Co-authored-by: David Ashpole <dashpole@google.com>

---------

Co-authored-by: David Ashpole <dashpole@google.com>
2023-07-20 13:53:50 -07:00
Aaron Clawson a5c82bf26e Add otlpmetric Temporality Preference env var (#4287)
* Add otlp metrics env vars

---------

Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
2023-07-20 10:50:12 -05:00
Tyler Yahn e08359f30c Detect duplicate instruments for case-insensitive names (#4338)
* Detect dup inst for case-insensitive names

Resolve #3835

Detect duplicate instrument registrations for instruments that have the
same case-insensitive names. Continue to return the instruments with
different names, but log a warning. This is the solution proposed in
https://github.com/open-telemetry/opentelemetry-specification/pull/3606.

* Add changes to changelog

* Reset global logger after test
2023-07-19 10:17:38 -07:00
Tyler Yahn 84b2e54671 Use inst ID for agg cache key (#4337)
* Use inst ID for agg cache key

Resolve #4201

The specification requires the duplicate instrument conflicts to be
identified based on the instrument identifying fields:

- name
- instrument kind
- unit
- description
- language-level features such as the number type (int64 and float64)

Currently, the conflict detection and aggregation caching are done based
on the stream IDs which include an aggregation name, monotonicity, and
temporality instead of the instrument kind.

This changes the conflict detection and aggregation caching to use the
OpenTelemetry specified fields. This is effectively a no-op given there
is a 1-to-1 mapping of aggregation-name/monotonicity/temporality to
instrument kind (they are all resolved based on the instrument kind).

Additionally, this adds a stringer representation of the
`InstrumentKind`. This is needed for the logging of duplicate instrument
conflicts.

* Add changes to changelog
2023-07-19 09:59:07 -07:00
David Ashpole c197fe9305 Metric SDK: Sum duplicate async observations regardless of filtering (#4289)
* Metric SDK: Remove the distinction between filtered and unfiltered attributes.
2023-07-19 10:52:11 -05:00
Tyler Yahn f2a9f2f2be Restrict Meters to only register and collect instruments it created (#4333)
* Add acceptance test

* Update Meter Register and collect only inst from itself

* Add change to changelog

* Fix spelling error

* Update changelog entry wording

* Simplify the partial success code path
2023-07-19 07:31:11 -07:00
Tyler Yahn f194fb0c6c Allow histogram for all instruments (#4332)
* Allow histogram for all instruments

Any instrument that can record negative values, do not include a sum in
the produced aggregation (like the specification recommends).

Resolves #4161

* Add changes to changelog

* Fix TestBucketsSum
2023-07-19 07:12:00 -07:00
Matthew Wear 9b0c4d2caf Fix empty host.id (#4317) 2023-07-18 17:37:20 +02:00
Aaron Clawson f6a658c6c2 Remove out of date example of internal usage. (#4334) 2023-07-18 10:10:34 +02:00
Tyler Yahn 63dfc4c2f1 Update the instrument agg comp table (#4330)
Use a check mark to indicate compatible instead of an "X" which can be
misinterpreted as incompatible.
2023-07-17 11:17:35 -07:00
Tyler Yahn 7467923a51 Add info/debug logging to the metric SDK (#4315)
* Add debug logging to the metric SDK

Resolves #3722

* Log MeterProvider and Meter setup at info level

* Add changelog entry

---------

Co-authored-by: Chester Cheung <cheung.zhy.csu@gmail.com>
Co-authored-by: Robert Pająk <pellared@hotmail.com>
2023-07-17 07:57:01 -07:00
Tyler Yahn d18f20179e Replace internal aggregate Aggregator with Measure/ComputeAggregation and a Builder (#4304) 2023-07-17 16:15:50 +02:00
OpenTelemetry Bot fdbcb9ac28 dependabot updates Sun Jul 16 15:03:07 UTC 2023 (#4329)
Bump go.opentelemetry.io/proto/otlp from 0.20.0 to 1.0.0 in /exporters/otlp/otlptrace
Bump go.opentelemetry.io/proto/otlp from 0.20.0 to 1.0.0 in /exporters/otlp/otlptrace/otlptracegrpc
Bump go.opentelemetry.io/proto/otlp from 0.20.0 to 1.0.0 in /exporters/otlp/otlpmetric/otlpmetrichttp
Bump go.opentelemetry.io/build-tools/dbotconf from 0.8.0 to 0.9.0 in /internal/tools
Bump go.opentelemetry.io/build-tools/semconvgen from 0.8.0 to 0.9.0 in /internal/tools
Bump go.opentelemetry.io/build-tools/crosslink from 0.8.0 to 0.9.0 in /internal/tools
Bump go.opentelemetry.io/build-tools/multimod from 0.8.0 to 0.9.0 in /internal/tools
Bump go.opentelemetry.io/proto/otlp from 0.20.0 to 1.0.0 in /exporters/otlp/otlpmetric
Bump go.opentelemetry.io/proto/otlp from 0.20.0 to 1.0.0 in /exporters/otlp/otlptrace/otlptracehttp
Bump go.opentelemetry.io/proto/otlp from 0.20.0 to 1.0.0 in /exporters/otlp/otlpmetric/otlpmetricgrpc
2023-07-16 08:08:50 -07:00
Robert Pająk 3e203acae3 Fix changelog entry number for #4306 (#4314) 2023-07-14 21:13:51 +02:00
David Ashpole 03b8c47770 Add WithoutCounterSuffixes option in go.opentelemetry.io/otel/exporters/prometheus to disable addition of _total suffixes (#4306) 2023-07-14 17:52:35 +02:00
Tyler Yahn 55fb2bb57b Log an error for an empty view criteria (#4307)
* Log an error for an empty view

Resolves #4149

* Add changelog entry
2023-07-12 15:10:40 -07:00
Tyler Yahn fcc67096b5 Add test for multi-inst view error (#4308) 2023-07-12 15:01:14 -07:00
dependabot[bot] 35636fc1ab Bump benchmark-action/github-action-benchmark from 1.17.0 to 1.18.0 (#4296)
Bumps [benchmark-action/github-action-benchmark](https://github.com/benchmark-action/github-action-benchmark) from 1.17.0 to 1.18.0.
- [Release notes](https://github.com/benchmark-action/github-action-benchmark/releases)
- [Changelog](https://github.com/benchmark-action/github-action-benchmark/blob/master/CHANGELOG.md)
- [Commits](https://github.com/benchmark-action/github-action-benchmark/compare/v1.17.0...v1.18.0)

---
updated-dependencies:
- dependency-name: benchmark-action/github-action-benchmark
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
2023-07-11 08:00:04 -07:00
David Ashpole de26aaa52e Metric SDK: Do not export non-observed attribute sets for async instruments (#4290)
* drop non-observed attribute sets

* fix test comment

* add documentation for async callbacks dropping unobserved attributes
2023-07-11 07:19:38 -07:00
OpenTelemetry Bot 8b7bffc8b9 dependabot updates Sun Jul 9 14:40:56 UTC 2023 (#4301)
Bump google.golang.org/grpc from 1.56.1 to 1.56.2 in /bridge/opentracing/test
Bump google.golang.org/grpc from 1.56.1 to 1.56.2 in /exporters/otlp/otlptrace/otlptracegrpc
Bump golang.org/x/tools from 0.10.0 to 0.11.0 in /internal/tools
Bump google.golang.org/grpc from 1.56.1 to 1.56.2 in /exporters/otlp/otlptrace
Bump benchmark-action/github-action-benchmark from 1.17.0 to 1.18.0
Bump google.golang.org/grpc from 1.56.1 to 1.56.2 in /exporters/otlp/otlpmetric/otlpmetricgrpc
Bump google.golang.org/grpc from 1.56.1 to 1.56.2 in /example/otel-collector
Bump google.golang.org/grpc from 1.56.1 to 1.56.2 in /exporters/otlp/otlpmetric
Bump golang.org/x/sys from 0.9.0 to 0.10.0 in /sdk
2023-07-09 20:25:46 +02:00
Tyler Yahn 1633c74aea Replace Stream.AttributeFilter with AllowAttributeKeys (#4288)
* Replace Stream AttributeFilter with AttributeKeys

* Rename Stream field AttributeKeys to AllowAttributeKeys

Ensure forward compatibility if a deny-list of attribute keys is ever
added.

* Add change to changelog

* Update PR number in changelog

* Update CHANGELOG.md

Co-authored-by: Damien Mathieu <42@dmathieu.com>

---------

Co-authored-by: Damien Mathieu <42@dmathieu.com>
2023-07-08 08:01:47 -07:00
Robert Pająk c404a30b96 Rewrite Prometheus exporter tests (#4274)
* Remove TesInvalidInsrtrumentForPrometheusIsIgnored

* Reimplement ConcurrentSafe test

* Add TestIncompatibleMeterName
2023-07-04 14:58:38 +02:00
Tyler Yahn 10c3445543 Move aggs to internal/aggregate (#4283) 2023-07-03 10:53:00 +02:00
Tyler Yahn 97273da7c9 Use newPipeline instead of direct construction (#4285)
* Use newPipeline instead of direct construction

The newPipeline function exists to create a new pipeline, but it is not
currently used. This switches to using that as the default creation
method and removes the test for construction of a pipeline directly.

* Update sdk/metric/pipeline.go
2023-07-02 07:17:46 -07:00
Robert Pająk 7ebfa8abf9 Add otlpmetricgrpc.Expoter and otlpmetrichttp.Exporter (#4272)
* Add otlpmetricgrpc.Expoter and otlpmetrichttp.Exporter

* Update changelog
2023-07-01 07:20:35 -07:00
OpenTelemetry Bot 56609f8da9 dependabot updates Fri Jun 30 12:35:32 UTC 2023 (#4282)
Bump google.golang.org/protobuf from 1.30.0 to 1.31.0 in /exporters/otlp/otlptrace/otlptracehttp
Bump google.golang.org/protobuf from 1.30.0 to 1.31.0 in /exporters/otlp/otlpmetric/otlpmetrichttp
Bump google.golang.org/protobuf from 1.30.0 to 1.31.0 in /exporters/otlp/otlpmetric
Bump google.golang.org/protobuf from 1.30.0 to 1.31.0 in /exporters/otlp/otlpmetric/otlpmetricgrpc
Bump google.golang.org/protobuf from 1.30.0 to 1.31.0 in /exporters/prometheus
Bump google.golang.org/protobuf from 1.30.0 to 1.31.0 in /exporters/otlp/otlptrace
Bump google.golang.org/protobuf from 1.30.0 to 1.31.0 in /exporters/otlp/otlptrace/otlptracegrpc
2023-06-30 07:15:19 -07:00
Robert Pająk 41cd6a136f Fix dependabot-check and vanity-import-check targets (#4273) 2023-06-30 13:05:35 +02:00
Robert Pająk d57569379f otlpmetric: Fix serialization of time.Time zero values (#4271) 2023-06-30 09:19:59 +02:00
Max Chechel 457029232d Prometheus exporter: concurrent collect bugfix (#3899)
* Concurrent collect bugfix

* Used sync.Mutex and code cleanup

* Revert "Concurrent collect bugfix"

This reverts commit 1a30f233b6.

* Used sync.Mutex and re-grouped protected members

* Added test and updated changelog

* Updated changelog

* Take care of potential panic in otel.Handle

* Extracted critical section in a separate method and fixed nil scope info

* Lock the whole scope of the func

* Moved otel.Handle out of the critical section

* Fixed calling createScopeInfoMetric twice and updated changelog

* Fixed markdown linter errors

* Added test for nil scopeinfo

* Fix merge artifacts

* Fixed linter errors

* Protect the whole validateMetrics method wity mutex

* Update CHANGELOG.md

* Update exporters/prometheus/exporter.go

Co-authored-by: Robert Pająk <pellared@hotmail.com>

* Update CHANGELOG.md

* Document that Collect is concurrent-safe

* Update exporter_test.go

* Update exporters/prometheus/exporter_test.go

* Update exporters/prometheus/exporter.go

Co-authored-by: David Ashpole <dashpole@google.com>

---------

Co-authored-by: Robert Pająk <pellared@hotmail.com>
Co-authored-by: David Ashpole <dashpole@google.com>
2023-06-29 13:31:20 +02:00
Damien Mathieu 64e76f8be4 Document and test honoring context in metric readers Collect (#4267) 2023-06-29 13:20:47 +02:00
Robert Pająk 8e25817dd1 Document f in RegisterCallback needs to be concurrent safe (#4251)
* Document f in RegisterCallback needs to be concurrent safe

* Update metric/meter.go

Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>

---------

Co-authored-by: Chester Cheung <cheung.zhy.csu@gmail.com>
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
2023-06-27 14:27:18 -07:00
Tyler Yahn 1b02c9122d Format log message before logging with logr (#4143)
* Format log message before logging with logr

Fixes #4141

The logr calling convention does not support fmt semantics for message
formatting. Format the message before it is sent to logr for logging.

* Add change to changelog

* Fix lint

Don't shadow the log pkg.

* Replace buflogr with funcr

* Run make

* Update exporters/zipkin/zipkin_test.go

Co-authored-by: Robert Pająk <pellared@hotmail.com>

---------

Co-authored-by: Robert Pająk <pellared@hotmail.com>
2023-06-26 09:54:35 -07:00
Robert Pająk 5e69812435 Update OTel Demo during release (#4256) 2023-06-26 16:51:12 +02:00
Damien Mathieu 3b124b39d1 Count the Collect duration towards the PeriodicReader timeout, and document the behavior (#4221) 2023-06-26 08:47:39 +02:00
OpenTelemetry Bot dc187e74af dependabot updates Sun Jun 25 15:17:37 UTC 2023 (#4263)
Bump google.golang.org/grpc from 1.56.0 to 1.56.1 in /bridge/opentracing/test
Bump google.golang.org/grpc from 1.56.0 to 1.56.1 in /exporters/otlp/otlptrace
Bump google.golang.org/grpc from 1.56.0 to 1.56.1 in /exporters/otlp/otlpmetric
Bump google.golang.org/grpc from 1.56.0 to 1.56.1 in /exporters/otlp/otlpmetric/otlpmetricgrpc
Bump google.golang.org/grpc from 1.56.0 to 1.56.1 in /exporters/otlp/otlptrace/otlptracegrpc
Bump google.golang.org/grpc from 1.56.0 to 1.56.1 in /example/otel-collector
2023-06-25 09:01:15 -07:00
Robert Pająk 0396b9b7ac sdk/metric: Document concurrent safety (#4252) 2023-06-23 16:25:54 +02:00
Robert Pająk 6b262b44ac sdk/metric: Reader factories return structs (#4244) 2023-06-22 09:09:00 +02:00
Robert Pająk ca2aa8307c [chore] Fix Go doc comments in internal transform package (#4242) 2023-06-22 08:12:43 +02:00
Aaron Clawson 12138c9444 Add Exponetial Histograms to otlp transforms (#4222) 2023-06-21 20:57:49 +02:00
Aaron Clawson 9c61b56338 Add decision about v2 API (#3968) 2023-06-21 18:15:03 +02:00
Patrice Chalin fc88a6a25b Drop website_docs since it has moved to OTel website (#4219) 2023-06-20 14:38:22 +02:00
Koichi Shiraishi be7539e30d exporters/otlp/otlptrace/otlptracegrpc: remove unnecessary comment (#4224)
Signed-off-by: Koichi Shiraishi <zchee.io@gmail.com>
2023-06-20 14:24:25 +02:00
Jorropo cda2d6c7b5 Replace uses unsafe with atomic with the generic atomic.Pointer (#4226)
Line numbers debug symbols aside this code will produce the exact same machine code.
It removes a non needed use of unsafe and replace it with compile time type checked
generics.
Will help keep code cleaner in case any of this ever gets refactored in the future.
2023-06-20 12:14:45 +02:00
OpenTelemetry Bot e3f547fedd dependabot updates Tue Jun 20 09:20:10 UTC 2023 (#4240)
Bump google.golang.org/grpc from 1.55.0 to 1.56.0 in /bridge/opentracing/test
Bump github.com/prometheus/client_golang from 1.15.1 to 1.16.0 in /example/view
Bump github.com/golangci/golangci-lint from 1.53.2 to 1.53.3 in /internal/tools
Bump github.com/prometheus/client_golang from 1.15.1 to 1.16.0 in /exporters/prometheus
Bump golang.org/x/tools from 0.9.3 to 0.10.0 in /internal/tools
Bump google.golang.org/grpc from 1.55.0 to 1.56.0 in /exporters/otlp/otlpmetric/otlpmetricgrpc
Bump google.golang.org/grpc from 1.55.0 to 1.56.0 in /exporters/otlp/otlpmetric
Bump google.golang.org/grpc from 1.55.0 to 1.56.0 in /exporters/otlp/otlptrace/otlptracegrpc
Bump google.golang.org/grpc from 1.55.0 to 1.56.0 in /exporters/otlp/otlptrace
Bump github.com/prometheus/client_golang from 1.15.1 to 1.16.0 in /example/prometheus
Bump google.golang.org/grpc from 1.55.0 to 1.56.0 in /example/otel-collector
Bump golang.org/x/sys from 0.8.0 to 0.9.0 in /sdk
2023-06-20 11:38:28 +02:00
Aaron Clawson b757c7083b Exponential Histogram Datatypes (#4165)
* Adds the Exponential histogram data type.

* Changelog

* Updated comments

* Apply suggestions from code review

Co-authored-by: Robert Pająk <pellared@hotmail.com>
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>

* Split Exponential Buckets into it's own type

---------

Co-authored-by: Robert Pająk <pellared@hotmail.com>
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
2023-06-14 07:36:13 -07:00
Damien Mathieu 844b107e98 Validate instrument names when creating them (#4210)
* validate instrument names when creating them

* add changelog entry

* remove now invalid instrument name from prometheus test

* fix invalid names in meter_test

* keep returning the instrument even if its name is invalid

* make invalid instrument name a known error

* bring back prometheus invalid instrument name test

* remove warning

* fix lint

* move name validation into the lookup method

* fix lint again

* Revert "move name validation into the lookup method"

This reverts commit ec8ccc5fa0.

* rename ErrInvalidInstrumentName to ErrInstrumentName

* switch to explicit validations, instead of a regexp

* Update CHANGELOG.md

Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>

* remove double check for empty name

* test validation shortcut with a single character

---------

Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
Co-authored-by: Aaron Clawson <3766680+MadVikingGod@users.noreply.github.com>
2023-06-09 08:32:56 -07:00
Robert Pająk 4f4815406a [chore] Add go-work Make target (#4199)
Co-authored-by: Chester Cheung <cheung.zhy.csu@gmail.com>
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
2023-06-08 12:29:39 -07:00