Rather than the deprecated InstrumentationLibrary
This is a replacement for
https://github.com/open-telemetry/opentelemetry-go/pull/3104, as after
this, there is no usage of `instrumentation.Library` within the SDK
anymore.
---------
Co-authored-by: Robert Pająk <pellared@hotmail.com>
Co-authored-by: Sam Xie <sam@samxie.me>
Part of #5412
- Use the recommended package name for the instrumentation exemplified
in the repository.
- Use the recommended detection of a `TracerProvider` from passed
context.
resolve#1682
This PR adds a new action in CI to protect released sections in the
changelog from being changed. It compares the released sections in the
changelog from the base branch to the current PR. It fails if a change
happens.
Apply "Unlock Released Changelog" to bypass this check when doing a new
release.
Action result if we changed the unreleased section:
d640deb435
Action result if we changed the released section:
d672de7a54
---
Meaning of `awk '/^\<!-- Released section --\>/ {flag=1} /^\<!--
Released section ended --\>/ {flag=0} flag'`
- `/^\<!-- Released section --\>/ {flag=1}`
- Matches lines starting with `<!-- Released section -->`.
- Sets the flag variable to 1 (starting the printing of lines).
- `/^\<!-- Released section ended --\>/ {flag=0}`
- Matches lines starting with `<!-- Released section ended -->`.
- Sets the flag variable to 0.
- So it is ok to change external reference links, like
```md
[Go 1.22]: https://go.dev/doc/go1.22
[Go 1.21]: https://go.dev/doc/go1.21
```
- `flag` lines are printed only when the flag is 1.
---------
Co-authored-by: Robert Pająk <pellared@hotmail.com>
### Added
- The `IsEmpty` method is added to the `Instrument` type in
`go.opentelemetry.io/otel/sdk/metric`.
This method is used to check if an `Instrument` instance is a
zero-value. (#5431)
- Store and provide the emitted `context.Context` in `ScopeRecords` of
`go.opentelemetry.io/otel/sdk/log/logtest`. (#5468)
- The `go.opentelemetry.io/otel/semconv/v1.26.0` package.
The package contains semantic conventions from the `v1.26.0` version of
the OpenTelemetry Semantic Conventions. (#5476)
- The `AssertRecordEqual` method to
`go.opentelemetry.io/otel/log/logtest` to allow comparison of two log
records in tests. (#5499)
- The `WithHeaders` option to
`go.opentelemetry.io/otel/exporters/zipkin` to allow configuring custom
http headers while exporting spans. (#5530)
### Changed
- `Tracer.Start` in `go.opentelemetry.io/otel/trace/noop` no longer
allocates a span for empty span context. (#5457)
- Upgrade `go.opentelemetry.io/otel/semconv/v1.25.0` to
`go.opentelemetry.io/otel/semconv/v1.26.0` in
`go.opentelemetry.io/otel/example/otel-collector`. (#5490)
- Upgrade `go.opentelemetry.io/otel/semconv/v1.25.0` to
`go.opentelemetry.io/otel/semconv/v1.26.0` in
`go.opentelemetry.io/otel/example/zipkin`. (#5490)
- Upgrade `go.opentelemetry.io/otel/semconv/v1.25.0` to
`go.opentelemetry.io/otel/semconv/v1.26.0` in
`go.opentelemetry.io/otel/exporters/zipkin`. (#5490)
- The exporter no longer exports the deprecated "otel.library.name" or
"otel.library.version" attributes.
- Upgrade `go.opentelemetry.io/otel/semconv/v1.25.0` to
`go.opentelemetry.io/otel/semconv/v1.26.0` in
`go.opentelemetry.io/otel/sdk/resource`. (#5490)
- Upgrade `go.opentelemetry.io/otel/semconv/v1.25.0` to
`go.opentelemetry.io/otel/semconv/v1.26.0` in
`go.opentelemetry.io/otel/sdk/trace`. (#5490)
- `SimpleProcessor.OnEmit` in `go.opentelemetry.io/otel/sdk/log` no
longer allocates a slice which makes it possible to have a
zero-allocation log processing using `SimpleProcessor`. (#5493)
- Use non-generic functions in the `Start` method of
`"go.opentelemetry.io/otel/sdk/trace".Trace` to reduce memory
allocation. (#5497)
- `service.instance.id` is populated for a `Resource` created with
`"go.opentelemetry.io/otel/sdk/resource".Default` with a default value
when `OTEL_GO_X_RESOURCE` is set. (#5520)
- Improve performance of metric instruments in
`go.opentelemetry.io/otel/sdk/metric` by removing unnecessary calls to
`time.Now`. (#5545)
### Fixed
- Log a warning to the OpenTelemetry internal logger when a `Record` in
`go.opentelemetry.io/otel/sdk/log` drops an attribute due to a limit
being reached. (#5376)
- Identify the `Tracer` returned from the global `TracerProvider` in
`go.opentelemetry.io/otel/global` with its schema URL. (#5426)
- Identify the `Meter` returned from the global `MeterProvider` in
`go.opentelemetry.io/otel/global` with its schema URL. (#5426)
- Log a warning to the OpenTelemetry internal logger when a `Span` in
`go.opentelemetry.io/otel/sdk/trace` drops an attribute, event, or link
due to a limit being reached. (#5434)
- Document instrument name requirements in
`go.opentelemetry.io/otel/metric`. (#5435)
- Prevent random number generation data-race for experimental rand
exemplars in `go.opentelemetry.io/otel/sdk/metric`. (#5456)
- Fix counting number of dropped attributes of `Record` in
`go.opentelemetry.io/otel/sdk/log`. (#5464)
- Fix panic in baggage creation when a member contains `0x80` char in
key or value. (#5494)
- Correct comments for the priority of the `WithEndpoint` and
`WithEndpointURL` options and their corresponding environment variables
in `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc`.
(#5508)
- Retry trace and span ID generation if it generated an invalid one in
`go.opentelemetry.io/otel/sdk/trace`. (#5514)
- Fix stale timestamps reported by the last-value aggregation. (#5517)
- Indicate the `Exporter` in
`go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp` must be
created by the `New` method. (#5521)
- Improved performance in all `{Bool,Int64,Float64,String}SliceValue`
functions of `go.opentelemetry.io/attributes` by reducing the number of
allocations. (#5549)
- Added `WithHeaders` option func, which allows user to set custom http
request headers while exporting spans.
- Closes: #3474
---------
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
As discussed in a previous SIG meeting, this PR adds support for setting
a default value for
[`service.instance.id`](https://github.com/open-telemetry/semantic-conventions/tree/main/docs/resource#service-experimental)
according to semantic conventions:
> Implementations, such as SDKs, are recommended to generate a random
Version 1 or Version 4 [RFC 4122](https://www.ietf.org/rfc/rfc4122.txt)
UUID, but are free to use an inherent unique ID as the source of this
value if stability is desirable. In that case, the ID SHOULD be used as
source of a UUID Version 5 and SHOULD use the following UUID as the
namespace: `4d63009a-8d0f-11ee-aad7-4c796ed8e320`.
This PR follows the recommendation and populates `service.instance.id`
with a random Version 4 UUID. The functionality is guarded by the
`OTEL_GO_X_RESOURCE` feature flag environment variable.
There are plans to declare `service.instance.id` stable and also make it
a required attribute (similar to `service.name`). Once this happens, the
functionality can be made available regardless of whether
`OTEL_GO_X_RESOURCE` is set.
Closes
https://github.com/open-telemetry/opentelemetry-go-contrib/issues/5423
---------
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
Co-authored-by: Tyler Yahn <codingalias@gmail.com>
# Description
Fix#5462
## Type of change
add a loop to generate the spanID and traceID.
the loop will not stop until it generate a valid ID
- [x] Bug fix (non-breaking change which fixes an issue)
---------
Co-authored-by: Damien Mathieu <42@dmathieu.com>
Co-authored-by: Robert Pająk <pellared@hotmail.com>
The validation rule for baggage key/values chars has a N+1 problem with
the unicode value: `0x80`.
For instance, `baggage.NewMemberRaw` could be called with a string value
including the rune `128` and return no error.
Then `baggage.New` would panic on `validateValueChar`:
```
=== RUN TestValidateValueChar
--- FAIL: TestValidateValueChar (0.00s)
panic: runtime error: index out of range [128] with length 128 [recovered]
panic: runtime error: index out of range [128] with length 128
```
---------
Co-authored-by: Sam Xie <sam@samxie.me>
The reason for this improvement (apart that, in general, it is good to
have better performance) is there may be good use case to use a
`SimpleProcessor` to emit logs efficiently to standard output. It could
be one of the most efficient solutions (from application performance
perspective) and thanks to such configuration the user would not lose
any logs if the application suddenly crashes. For instance, a useful
configuration could be a simple processor with an OTLP file exporter
(https://github.com/open-telemetry/opentelemetry-go/issues/5408).
I think we might consider changing the following portion of
`SimpleProcessor` documentation (but I would prefer to do it as separate
PR):
> // This Processor is not recommended for production use. The
synchronous
// nature of this Processor make it good for testing, debugging, or
// showing examples of other features, but it can be slow and have a
high
// computation resource usage overhead. [NewBatchProcessor] is
recommended
// for production use instead.
```
goos: linux
goarch: amd64
pkg: go.opentelemetry.io/otel/sdk/log
cpu: Intel(R) Core(TM) i9-10885H CPU @ 2.40GHz
│ old.txt │ new.txt │
│ sec/op │ sec/op vs base │
Processor/Simple-16 449.4n ± 7% 156.2n ± 5% -65.25% (p=0.000 n=10)
Processor/ModifyTimestampSimple-16 468.0n ± 6% 171.3n ± 15% -63.40% (p=0.000 n=10)
Processor/ModifyAttributesSimple-16 515.8n ± 3% 233.2n ± 8% -54.77% (p=0.000 n=10)
geomean 476.9n 184.1n -61.40%
│ old.txt │ new.txt │
│ B/op │ B/op vs base │
Processor/Simple-16 417.0 ± 0% 0.0 ± 0% -100.00% (p=0.000 n=10)
Processor/ModifyTimestampSimple-16 417.0 ± 0% 0.0 ± 0% -100.00% (p=0.000 n=10)
Processor/ModifyAttributesSimple-16 465.00 ± 0% 48.00 ± 0% -89.68% (p=0.000 n=10)
geomean 432.4 ? ¹ ²
¹ summaries must be >0 to compute geomean
² ratios must be >0 to compute geomean
│ old.txt │ new.txt │
│ allocs/op │ allocs/op vs base │
Processor/Simple-16 1.000 ± 0% 0.000 ± 0% -100.00% (p=0.000 n=10)
Processor/ModifyTimestampSimple-16 1.000 ± 0% 0.000 ± 0% -100.00% (p=0.000 n=10)
Processor/ModifyAttributesSimple-16 2.000 ± 0% 1.000 ± 0% -50.00% (p=0.000 n=10)
geomean 1.260 ? ¹ ²
¹ summaries must be >0 to compute geomean
² ratios must be >0 to compute geomean
```
---------
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
Based on #5394
This removes `event.go`, `resource.go`, and `trace.go` from generation
because they now only contain references to the attribute registry.
Thus, they will generate empty files.
This also does not include any deprecated semantic convention. Users of
deprecated semantic conventions should continue to use them from the
previous versions that have been published.
[v1.26.0 semantic conventions release
notes](https://github.com/open-telemetry/semantic-conventions/releases/tag/v1.26.0):
<div data-pjax="true" data-test-selector="body-content"
data-view-component="true" class="markdown-body my-3"><h2>v1.26.0</h2>
<h3>🛑 Breaking changes 🛑</h3>
<ul>
<li>
<p><code>db</code>: Rename <code>db.statement</code> to
<code>db.query.text</code> and introduce
<code>db.query.parameter.<key></code> (<a class="issue-link
js-issue-link" data-error-text="Failed to load title"
data-id="2123681817" data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/716"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/716/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/issues/716">#716</a>)</p>
</li>
<li>
<p><code>db</code>: Renames <code>db.sql.table</code>,
<code>db.cassandra.table</code>, <code>db.mongodb.collection</code>, and
<code>db.cosmosdb.container</code> attributes to
<code>db.collection.name</code> (<a class="issue-link js-issue-link"
data-error-text="Failed to load title" data-id="2221821104"
data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/870"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/870/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/pull/870">#870</a>)</p>
</li>
<li>
<p><code>db</code>: Rename <code>db.operation</code> to
<code>db.operation.name</code>. (<a class="issue-link js-issue-link"
data-error-text="Failed to load title" data-id="2226761377"
data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/884"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/884/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/issues/884">#884</a>)</p>
</li>
<li>
<p><code>messaging</code>: Rename <code>messaging.operation</code> to
<code>messaging.operation.type</code>, add
<code>messaging.operation.name</code>. (<a class="issue-link
js-issue-link" data-error-text="Failed to load title"
data-id="2227637055" data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/890"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/890/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/issues/890">#890</a>)</p>
</li>
<li>
<p><code>db</code>: Deprecate the <code>db.user</code> attribute. (<a
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="2226817211" data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/885"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/885/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/issues/885">#885</a>)</p>
</li>
<li>
<p><code>db</code>: Rename <code>db.name</code> and
<code>db.redis.database_index</code> to <code>db.namespace</code>,
deprecate <code>db.mssql.instance_name</code>. (<a class="issue-link
js-issue-link" data-error-text="Failed to load title"
data-id="2226817211" data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/885"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/885/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/issues/885">#885</a>)</p>
</li>
<li>
<p><code>db</code>: Remove <code>db.instance.id</code>. For
Elasticsearch, replace with <code>db.elasticsearch.node.name</code>. (<a
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="2266411070" data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/972"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/972/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/pull/972">#972</a>)</p>
</li>
<li>
<p><code>db</code>: Clarify database span name format and fallback
values. (<a class="issue-link js-issue-link" data-error-text="Failed to
load title" data-id="2266545339" data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/974"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/974/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/pull/974">#974</a>,
<a class="issue-link js-issue-link" data-error-text="Failed to load
title" data-id="2123611008" data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/704"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/704/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/issues/704">#704</a>)</p>
</li>
<li>
<p><code>db</code>: Rename <code>db.client.connections.*</code> metric
namespace to <code>db.client.connection.*</code> and rename
<code>db.client.connection.usage</code> to
<code>db.client.connection.count</code>.<br>
(<a class="issue-link js-issue-link" data-error-text="Failed to load
title" data-id="1815993771" data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/201"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/201/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/issues/201">#201</a>,
<a class="issue-link js-issue-link" data-error-text="Failed to load
title" data-id="2262290114" data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/967"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/967/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/issues/967">#967</a>)</p>
</li>
<li>
<p><code>db</code>: Rename <code>pool.name</code> to
<code>db.client.connections.pool.name</code> and <code>state</code> to
<code>db.client.connections.state</code>. (<a class="issue-link
js-issue-link" data-error-text="Failed to load title"
data-id="2232095641" data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/909"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/909/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/pull/909">#909</a>)</p>
</li>
<li>
<p><code>system</code>: Deprecate <code>shared</code> from
<code>system.memory.state</code> values and make it a standalone metric
(<a class="issue-link js-issue-link" data-error-text="Failed to load
title" data-id="1993746916" data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/522"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/522/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/issues/522">#522</a>)</p>
</li>
<li>
<p><code>device.app.lifecycle</code>: Reformat and update the
<code>device.app.lifecycle</code> event description adds constraints for
the possible values of the <code>android.state</code> and
<code>ios.state</code>.<br>
(<a class="issue-link js-issue-link" data-error-text="Failed to load
title" data-id="2170421333" data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/794"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/794/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/pull/794">#794</a>)<br>
Removes the <code>ios.lifecycle.events</code> and
<code>android.lifecycle.events</code> attributes from the global
registry and adds constraints for the possible values of the
<code>android.state</code> and <code>ios.state</code> attributes.</p>
</li>
<li>
<p><code>messaging</code>: Rename <code>messaging.client_id</code> to
<code>messaging.client.id</code> (<a class="issue-link js-issue-link"
data-error-text="Failed to load title" data-id="2250463504"
data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/935"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/935/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/issues/935">#935</a>)</p>
</li>
<li>
<p><code>rpc</code>: Rename<code>message.*</code> attributes under
<code>rpc</code> to <code>rpc.message.*</code>. Deprecate old
<code>message.*</code> attributes. (<a class="issue-link js-issue-link"
data-error-text="Failed to load title" data-id="2211426432"
data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/854"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/854/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/pull/854">#854</a>)</p>
</li>
</ul>
<h3>🚀 New components 🚀</h3>
<ul>
<li><code>gen-ai</code>: Introducing semantic conventions for GenAI
clients. (<a class="issue-link js-issue-link" data-error-text="Failed to
load title" data-id="1897516973" data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/327"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/327/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/issues/327">#327</a>)</li>
</ul>
<h3>💡 Enhancements 💡</h3>
<ul>
<li>
<p><code>all</code>: Markdown snippets are now generated by jinja
templates in the <code>templates</code> directory. (<a class="issue-link
js-issue-link" data-error-text="Failed to load title"
data-id="2276527861" data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/1000"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/1000/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/pull/1000">#1000</a>)</p>
</li>
<li>
<p><code>db, messaging, gen_ai</code>: Clarify that
<code>db.system</code>, <code>messaging.system</code>,
<code>gen_ai.system</code> attributes capture the client perception and
may differ from the actual product name. (<a class="issue-link
js-issue-link" data-error-text="Failed to load title"
data-id="2184898831" data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/813"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/813/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/issues/813">#813</a>,
<a class="issue-link js-issue-link" data-error-text="Failed to load
title" data-id="2286519206" data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/1016"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/1016/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/pull/1016">#1016</a>)</p>
</li>
<li>
<p><code>messaging</code>: Show all applicable attributes in individual
messaging semantic conventions. (<a class="issue-link js-issue-link"
data-error-text="Failed to load title" data-id="2221751255"
data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/869"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/869/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/issues/869">#869</a>,
<a class="issue-link js-issue-link" data-error-text="Failed to load
title" data-id="2286733771" data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/1018"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/1018/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/pull/1018">#1018</a>)</p>
</li>
<li>
<p><code>process</code>: Add additional attributes to process attribute
registry (<a class="issue-link js-issue-link" data-error-text="Failed to
load title" data-id="2015129430" data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/564"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/564/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/pull/564">#564</a>)</p>
</li>
<li>
<p><code>messaging</code>: Add a GCP Pub/Sub unary pull example and the
new GCP messaging attributes: -
<code>messaging.gcp_pubsub.message.ack_deadline</code>, -
<code>messaging.gcp_pubsub.message.ack_id</code>, -
<code>messaging.gcp_pubsub.message.delivery_attempt</code> (<a
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1995123229" data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/527"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/527/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/issues/527">#527</a>)</p>
</li>
<li>
<p><code>db</code>: Add <code>db.client.operation.duration</code> metric
(<a class="issue-link js-issue-link" data-error-text="Failed to load
title" data-id="1991797441" data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/512"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/512/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/issues/512">#512</a>)</p>
</li>
<li>
<p><code>messaging</code>: Adds `messaging.destination.partition.id`` to
the messaging attributes (<a class="issue-link js-issue-link"
data-error-text="Failed to load title" data-id="2185047744"
data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/814"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/814/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/pull/814">#814</a>)</p>
</li>
<li>
<p><code>exception</code>: Replace constraints with requirement levels
on exceptions. (<a class="issue-link js-issue-link"
data-error-text="Failed to load title" data-id="2216070269"
data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/862"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/862/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/pull/862">#862</a>)</p>
</li>
<li>
<p><code>process</code>: Replace constraints with requirement_level in
process attributes. (<a class="issue-link js-issue-link"
data-error-text="Failed to load title" data-id="2216082891"
data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/863"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/863/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/pull/863">#863</a>)</p>
</li>
<li>
<p><code>db</code>: Reorganize DB conventions to be shared across span
and metric conventions. (<a class="issue-link js-issue-link"
data-error-text="Failed to load title" data-id="2232098784"
data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/910"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/910/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/pull/910">#910</a>)</p>
</li>
<li>
<p><code>all</code>: Migrate Attribute Registry to be completely
autogenerated. (<a class="issue-link js-issue-link"
data-error-text="Failed to load title" data-id="1811747563"
data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/197"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/197/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/issues/197">#197</a>)<br>
Migrate to using weaver for markdown generation (snippet +
registry).<br>
The entirety of the registry now is generated using weaver with
templates<br>
under the <code>templates/</code> directory. Snippets still require a
hardcoded<br>
command.</p>
</li>
<li>
<p><code>http</code>: List all HTTP client and server attributes in the
corresponding table, remove common attributes from yaml and markdown.
(<a class="issue-link js-issue-link" data-error-text="Failed to load
title" data-id="2249267191" data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/928"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/928/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/issues/928">#928</a>)</p>
</li>
<li>
<p><code>other</code>: Document patterns and suggestions for semconv
code generation. (<a class="issue-link js-issue-link"
data-error-text="Failed to load title" data-id="2005434950"
data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/551"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/551/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/issues/551">#551</a>,
<a class="issue-link js-issue-link" data-error-text="Failed to load
title" data-id="2260022392" data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/953"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/953/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/pull/953">#953</a>)</p>
</li>
<li>
<p><code>db</code>: Show applicable common attributes in individual
database semantic conventions. (<a class="issue-link js-issue-link"
data-error-text="Failed to load title" data-id="2266443235"
data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/973"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/973/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/pull/973">#973</a>)</p>
</li>
<li>
<p><code>db</code>: Add <code>error.type</code> attribute to the
database span and operation duration metric. (<a class="issue-link
js-issue-link" data-error-text="Failed to load title"
data-id="2266561839" data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/975"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/975/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/pull/975">#975</a>)</p>
</li>
<li>
<p><code>db</code>: Parameterized query text does not need to be
sanitized by default (<a class="issue-link js-issue-link"
data-error-text="Failed to load title" data-id="2266574593"
data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/976"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/976/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/pull/976">#976</a>)</p>
</li>
<li>
<p><code>http</code>: List experimental HTTP attributes applicable to
HTTP client and server spans. (<a class="issue-link js-issue-link"
data-error-text="Failed to load title" data-id="2272874112"
data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/989"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/989/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/pull/989">#989</a>)</p>
</li>
<li>
<p><code>db</code>: Finalizes the migration requirement for
instrumentations to follow when updating to stable database semconv. (<a
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="2124200768" data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/719"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/719/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/issues/719">#719</a>)</p>
</li>
<li>
<p><code>http</code>: New <code>url.template</code> attribute added to
URL, HTTP client attributes are extended with optional low-cardinality
<code>url.template</code> (<a class="issue-link js-issue-link"
data-error-text="Failed to load title" data-id="2107516610"
data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/675"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/675/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/pull/675">#675</a>)</p>
</li>
<li>
<p><code>db</code>: Add note to <code>db.collection.name</code>,
<code>db.namespace</code>, and <code>db.operation.name</code> about
capturing those without attempting to do any case normalization.<br>
(<a class="issue-link js-issue-link" data-error-text="Failed to load
title" data-id="2226822323" data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/886"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/886/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/issues/886">#886</a>)</p>
</li>
<li>
<p><code>events</code>: Provides additional definitions of log events
and their structure. (<a class="issue-link js-issue-link"
data-error-text="Failed to load title" data-id="2139735298"
data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/755"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/755/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/issues/755">#755</a>)</p>
</li>
<li>
<p><code>k8s</code>: add container.status.last_terminated_reason
resource attribute (<a class="issue-link js-issue-link"
data-error-text="Failed to load title" data-id="2243002863"
data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/922"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/922/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/issues/922">#922</a>)</p>
</li>
</ul>
<h3>🧰 Bug fixes 🧰</h3>
<ul>
<li><code>http</code>: Add previously deprecated http attributes to
registry (<a class="issue-link js-issue-link" data-error-text="Failed to
load title" data-id="2288411532" data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/1025"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/1025/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/pull/1025">#1025</a>)<br>
These attributes were deprecated in 1.13</li>
<li><code>net</code>: Add previously deprecated net attributes to
registry (<a class="issue-link js-issue-link" data-error-text="Failed to
load title" data-id="2289802107" data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/semantic-conventions/issues/1029"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/1029/hovercard"
href="https://github.com/open-telemetry/semantic-conventions/pull/1029">#1029</a>)<br>
These attributes were deprecated in 1.13</li>
</ul></div>
### Follow up work
- [ ] Update all dependencies on semconv to v1.26.0
---------
Co-authored-by: Tyler Yahn <codingalias@gmail.com>
Co-authored-by: Aaron Clawson <MadVikingGod@users.noreply.github.com>
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
Applying attribute limits in `Record` uses value receiver.
But it should add count of dropped attrs.
In this PR I add using of pointer receiver.
Also it's slightly faster with pointer receiver:
```
goos: darwin
goarch: arm64
pkg: go.opentelemetry.io/otel/sdk/log
│ old.txt │ new.txt │
│ sec/op │ sec/op vs base │
SetAddAttributes-10 175.7n ± 3% 159.8n ± 4% -9.08% (p=0.000 n=10)
│ old.txt │ new.txt │
│ B/op │ B/op vs base │
SetAddAttributes-10 48.00 ± 0% 48.00 ± 0% ~ (p=1.000 n=10) ¹
¹ all samples are equal
│ old.txt │ new.txt │
│ allocs/op │ allocs/op vs base │
SetAddAttributes-10 1.000 ± 0% 1.000 ± 0% ~ (p=1.000 n=10) ¹
¹ all samples are equal
```
Fix#5455
The `math/rand.Rand` type is not safe for concurrent access. Concurrent
measurements, and therefore concurrent exemplar computation, are
allowed. Ensure this concurrent design does not lead to data races with
`rng`.
Fix#5343
- Update the `evictionQueue` to log when it drops a value
- Update the `evictionQueue` to be declared over an `[T any]` parameter
so it knows what to log when it is dropping a value and to reduce the
`interface{}` allocation
- Add a `clone` method to replace the now unneeded
`interfaceArrayTo*Array` functions.
- Update the `recordingSpan` to log once that is dropped an attribute
when limits are reached.
From
https://github.com/open-telemetry/opentelemetry-go-contrib/pull/5654#discussion_r1617971674
Constructing a view requires an `Instrument` to be constructed. Given
`NewView` will not return an error directly when an empty instrument is
passed, it may be ideal for users to check this prior to making the
call. Instead of having all use-cases copy this code, export it so they
can just call the method.
Fix#5317
According to the
[specification](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/logs/sdk.md#logrecord-limits),
there should be a message printed in the SDK's log to indicate to the
user that an attribute was discarded due to such a limit. To prevent
excessive logging, the message must be printed at most once per
`LogRecord` (i.e., not per discarded attribute).
This change centralizes the `Record` dropped field writes and calls a
global logging function. This will at most log once per any `Record`
dropping attributes, meeting the specification requirement.
This does not log once per `Record` when an attribute is dropped. To do
that we would need to maintain state within the `Record` (i.e.
`sync.Mutex` or `sync.Once`). These types cannot be copied, meaning the
`Record` would take on this "no copy" requirement. This seems too
restrictive and with the permissive specification allowing a single log
line, that is the solution added.
---------
Co-authored-by: Robert Pająk <pellared@hotmail.com>
This release includes the first beta release of the OpenTelemetry Logs
Bridge API and SDK for Go.
### Added
- Add example for `go.opentelemetry.io/otel/exporters/stdout/stdoutlog`.
(#5242)
- Add `RecordFactory` in `go.opentelemetry.io/otel/sdk/log/logtest` to
facilitate testing exporter and processor implementations. (#5258)
- Add `RecordFactory` in `go.opentelemetry.io/otel/log/logtest` to
facilitate testing bridge implementations. (#5263)
- The count of dropped records from the `BatchProcessor` in
`go.opentelemetry.io/otel/sdk/log` is logged. (#5276)
- Add metrics in the `otel-collector` example. (#5283)
- Add the synchronous gauge instrument to
`go.opentelemetry.io/otel/metric`. (#5304)
- An `int64` or `float64` synchronous gauge instrument can now be
created from a `Meter`.
- All implementations of the API
(`go.opentelemetry.io/otel/metric/noop`,
`go.opentelemetry.io/otel/sdk/metric`) are updated to support this
instrument.
- Add logs to `go.opentelemetry.io/otel/example/dice`. (#5349)
### Changed
- The `Shutdown` method of `Exporter` in
`go.opentelemetry.io/otel/exporters/stdout/stdouttrace` ignores the
context cancellation and always returns `nil`. (#5189)
- The `ForceFlush` and `Shutdown` methods of the exporter returned by
`New` in `go.opentelemetry.io/otel/exporters/stdout/stdoutmetric` ignore
the context cancellation and always return `nil`. (#5189)
- Apply the value length limits to `Record` attributes in
`go.opentelemetry.io/otel/sdk/log`. (#5230)
- De-duplicate map attributes added to a `Record` in
`go.opentelemetry.io/otel/sdk/log`. (#5230)
- `go.opentelemetry.io/otel/exporters/stdout/stdoutlog` won't print
timestamps when `WithoutTimestamps` option is set. (#5241)
- The `go.opentelemetry.io/otel/exporters/stdout/stdoutlog` exporter
won't print `AttributeValueLengthLimit` and `AttributeCountLimit` fields
now, instead it prints the `DroppedAttributes` field. (#5272)
- Improved performance in the `Stringer` implementation of
`go.opentelemetry.io/otel/baggage.Member` by reducing the number of
allocations. (#5286)
- Set the start time for last-value aggregates in
`go.opentelemetry.io/otel/sdk/metric`. (#5305)
- The `Span` in `go.opentelemetry.io/otel/sdk/trace` will record links
without span context if either non-empty `TraceState` or attributes are
provided. (#5315)
- Upgrade all dependencies of `go.opentelemetry.io/otel/semconv/v1.24.0`
to `go.opentelemetry.io/otel/semconv/v1.25.0`. (#5374)
### Fixed
- Comparison of unordered maps for
`go.opentelemetry.io/otel/log.KeyValue` and
`go.opentelemetry.io/otel/log.Value`. (#5306)
- Fix the empty output of `go.opentelemetry.io/otel/log.Value` in
`go.opentelemetry.io/otel/exporters/stdout/stdoutlog`. (#5311)
- Split the behavior of `Recorder` in
`go.opentelemetry.io/otel/log/logtest` so it behaves as a
`LoggerProvider` only. (#5365)
- Fix wrong package name of the error message when parsing endpoint URL
in `go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp`.
(#5371)
- Identify the `Logger` returned from the global `LoggerProvider` in
`go.opentelemetry.io/otel/log/global` with its schema URL. (#5375)
The current logtest.Recorder implementation is wrong. We have a single
`Recorder`, which acts as both a `LoggerProvider`, and a `Logger`,
making it possible to emit a log entry with the root recorder, which
shouldn't be possible with the API.
This change introduces a new private struct, `logger` that acts as the
recording logger, while `Recorder` becomes only a LoggerProvider and not
a Logger anymore.
Closes#5357.
---------
Co-authored-by: Robert Pająk <pellared@hotmail.com>
* record links with empty span context
* add global trace state
* fix test comments and changelog
---------
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
* emit slices as their json representation
* add changelog
* fix resource tests
* indicate invalid slice if we couldn't turn them into json
* move changelog entry to the unreleased section
---------
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>