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

1010 Commits

Author SHA1 Message Date
Tyler Yahn dea52958ae Upgrade semconv to 1.34.0 in trace (#6836) 2025-05-28 11:15:38 -07:00
Tyler Yahn 33eb582188 Upgrade semconv to 1.34.0 in sdk/trace (#6835) 2025-05-28 11:10:10 -07:00
Tyler Yahn cc26aaad49 Upgrade semconv to 1.34.0 in sdk/resource (#6834) 2025-05-28 11:03:39 -07:00
Tyler Yahn 91bf875c49 Upgrade semconv to 1.34.0 in metric (#6832) 2025-05-28 10:49:03 -07:00
Tyler Yahn 31b44a2215 Upgrade semconv to 1.34.0 in exporters/zipkin (#6829) 2025-05-28 10:32:44 -07:00
Tyler Yahn 313073b711 Upgrade semconv to v1.34.0 in OpenTracing bridge (#6827) 2025-05-28 09:37:59 -07:00
Robert Pająk 65b8067f18 log,sdk/log: add EventName to EnabledParameters (#6825)
Fixes https://github.com/open-telemetry/opentelemetry-go/issues/6771
2025-05-28 07:16:24 +02:00
Robert Pająk e186baaf9e prometheus: remove otel_scope_info (#6770)
Fixes https://github.com/open-telemetry/opentelemetry-go/issues/6768

Towards
https://github.com/open-telemetry/opentelemetry-specification/issues/4223
(last point from from
https://github.com/open-telemetry/opentelemetry-specification/issues/4223#issuecomment-2839595942)

- Remove instrumentation scope attributes as `otel_scope_info` metric
2025-05-28 07:09:36 +02:00
Robert Pająk 69f189f0b6 prometheus: Add otel_scope_schema_url and otel_scope_[attribute] labels (#5947)
Fixes https://github.com/open-telemetry/opentelemetry-go/issues/5846

Towards
https://github.com/open-telemetry/opentelemetry-specification/issues/4223
(first two points from
https://github.com/open-telemetry/opentelemetry-specification/issues/4223#issuecomment-2839595942)

- Add instrumentation scope schema URL as `otel_scope_schema_url` label
to exported metrics
- Add instrumentation scope attributes as `otel_scope_[attribute]`
labels to exported metrics

Side notes:

- The exporter does not seem to work correctly if the end user adds e.g.
an `otel_scope_name` attribute. I think the exporter should ignore all
attributes with names that have prefix `otel_scope_`. This scenario is
also not covered by the spec. I think it may be covered by a separate PR
and issue.
- Removal of `otel_scope_info` metric would be handled as a separate PR.
https://github.com/open-telemetry/opentelemetry-go/pull/6770
2025-05-24 19:35:21 +02:00
Tyler Yahn e587b1884f Semconv v1.34.0 (#6812)
Resolve #6811 
Resolve #6691

No migration documentation is added. This does not contain any breaking
changes between v1.34.0 and v1.33.0 for the Go API.

## [`v1.34.0` semantic convention release
notes](https://github.com/open-telemetry/semantic-conventions/releases/tag/v1.34.0):

<h3>🛑 Breaking changes 🛑</h3>
<ul>
<li>
<p><code>all</code>: Convert deprecated text to structured format. (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/2047"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/2047/hovercard">#2047</a>)<br>
This is a breaking change from the schema perspective, but does not
change anything for instrumentations or the end users. It breaks
compatibility with the (old) <a
href="https://github.com/open-telemetry/build-tools/issues/322"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/build-tools/issues/322/hovercard">code
generation tooling</a>. Please use <a
href="https://github.com/open-telemetry/weaver">weaver</a> to generate
Semantic Conventions markdown or code.</p>
</li>
<li>
<p><code>feature_flag</code>: Move the evaluated value from the event
body to attributes (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1990"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/1990/hovercard">#1990</a>)</p>
</li>
<li>
<p><code>process</code>: Require sensitive data sanitization for
<code>process.command_args</code> and <code>process.command_line</code>
(<a
href="https://github.com/open-telemetry/semantic-conventions/issues/626"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/626/hovercard">#626</a>)</p>
</li>
</ul>
<h3>💡 Enhancements 💡</h3>
<ul>
<li><code>docs</code>: Document system-specific naming conventions (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/608"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/608/hovercard">#608</a>,
<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1494"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1494/hovercard">#1494</a>,
<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1708"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/1708/hovercard">#1708</a>)</li>
<li><code>gen-ai</code>: Add <code>gen_ai.conversation.id</code>
attribute (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/2024"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/2024/hovercard">#2024</a>)</li>
<li><code>all</code>: Renames all <code>resource.*</code> groups to be
<code>entity.*</code> (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/2244"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/2244/hovercard">#2244</a>)<br>
Part of <a class="issue-link js-issue-link" data-error-text="Failed to
load title" data-id="2885075816" data-permission-text="Title is private"
data-url="https://github.com/open-telemetry/opentelemetry-specification/issues/4436"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/opentelemetry-specification/issues/4436/hovercard"
href="https://github.com/open-telemetry/opentelemetry-specification/issues/4436">open-telemetry/opentelemetry-specification#4436</a></li>
<li><code>aws</code>: Added new AWS attributes for various services
including SQS, SNS, Bedrock, Step Functions, Secrets Manager and Kineses
(<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1794"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/1794/hovercard">#1794</a>)</li>
<li><code>cloud</code>: Broaden <code>cloud.region</code> definition to
explicitly cover both resource location and targeted destination. (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/2142"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/2142/hovercard">#2142</a>)</li>
<li><code>network</code>: Stabilize <code>network.transport</code> enum
value <code>quic</code>. (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/2275"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/2275/hovercard">#2275</a>)</li>
</ul>
<h3>🧰 Bug fixes 🧰</h3>
<ul>
<li><code>db</code>: Fix the <code>db.system.name</code> attribute value
for MySQL which was incorrectly pointing to
<code>microsoft.sql_server</code>. (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/2276"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/2276/hovercard">#2276</a>)</li>
</ul>
2025-05-23 13:19:20 -07:00
Tyler Yahn 3dbeacaa58 Generate semconv/v1.33.0 (#6799)
- Generate the new `semconv/v1.33.0` package and all sub-packages
- Fix the metric util package generation to support `int64` attribute
definitions

## [`v1.33.0` semantic convention release
notes](https://github.com/open-telemetry/semantic-conventions/releases/tag/v1.33.0):

<div data-pjax="true" data-test-selector="body-content"
data-view-component="true" class="markdown-body my-3"><p>This release
marks the first where the core of database semantic conventions have
stabilized.</p>
<h3>🛑 Breaking changes 🛑</h3>
<ul>
<li><code>db</code>: Add <code>db.query.parameter</code>, replace
relevant usages of <code>db.operation.parameter</code> (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/2093"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/2093/hovercard">#2093</a>)</li>
<li><code>db</code>: Make <code>db.response.returned_rows</code> opt-in
on <code>release_candidate</code> spans (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/2211"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/2211/hovercard">#2211</a>)</li>
<li><code>db</code>: Use <code>|</code> as the separator when
<code>db.namespace</code> is a concatenation of multiple components. (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/2067"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/2067/hovercard">#2067</a>)</li>
<li><code>feature_flag</code>: Rename
<code>feature_flag.provider_name</code> to
<code>feature_flag.provider.name</code> (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1982"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/1982/hovercard">#1982</a>)</li>
<li><code>feature_flag</code>: Use generic <code>error.message</code> in
feature flag evaluation event (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1994"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/1994/hovercard">#1994</a>)</li>
<li><code>gen-ai</code>: Refine the values for
<code>gen_ai.system</code> related to Google's AI endpoints. (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1950"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1950/hovercard">#1950</a>)<br>
Enable sharing of attributes between Vertex AI and Gemini through a
common prefix.</li>
<li><code>k8s</code>: Make k8s Node and Pod labels optional (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/2079"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/2079/hovercard">#2079</a>)</li>
<li><code>otel</code>: Rename span health metrics to remove the .count
suffixes (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1979"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1979/hovercard">#1979</a>)</li>
</ul>
<h3>🚀 New components 🚀</h3>
<ul>
<li><code>db</code>: Adding semantic conventions for
<code>oracledb</code> instrumentations. (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/2612">#2612</a>)<br>
Oracle Database semantic conventions.</li>
<li><code>browser</code>: Add browser web vitals event. (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1940"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/1940/hovercard">#1940</a>)</li>
</ul>
<h3>💡 Enhancements 💡</h3>
<ul>
<li><code>cicd</code>: Add resource conventions for CICD systems and
define spans for CICD pipeline runs. (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1713"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1713/hovercard">#1713</a>)<br>
Define spans <code>cicd.pipeline.run.server</code> and
<code>cicd.pipeline.task.internal</code>.<br>
Add <code>cicd.pipeline.action.name</code>, <code>cicd.worker.id</code>,
<code>cicd.worker.name</code>, <code>cicd.worker.url.full</code>
and<code>cicd.pipeline.task.run.result</code> to attribute registry.<br>
Define resources <code>cicd.pipeline</code>,
<code>cicd.pipeline.run</code> and <code>cicd.worker</code>.<br>
Add entity associations in cicd metrics for these new cicd
resources.</li>
<li><code>vcs</code>: Add resource conventions for VCS systems and VCS
references. (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1713"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1713/hovercard">#1713</a>)<br>
Define resources <code>vcs.repo</code> and <code>vcs.ref</code>.<br>
Add entity associations in vcs metrics for these new vcs resources.</li>
<li><code>gen-ai</code>: Adding span for invoke agent (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1842"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1842/hovercard">#1842</a>)</li>
<li><code>gen-ai</code>: Adding gen_ai.tool.description to the span
attributes (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/2087"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/2087/hovercard">#2087</a>)</li>
<li><code>gen-ai</code>: Separate inference and embeddings span
definitions, remove irrelevant attributes from the create agent span.
(<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1924"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1924/hovercard">#1924</a>,
<a
href="https://github.com/open-telemetry/semantic-conventions/issues/2122"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/2122/hovercard">#2122</a>)</li>
<li><code>general</code>: Provide guidance on modeling lat/lon, x/y, etc
(<a
href="https://github.com/open-telemetry/semantic-conventions/issues/2145"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/2145/hovercard">#2145</a>)</li>
<li><code>db</code>: Move <code>db.query.parameter.&lt;key&gt;</code>
from release_candidate back to development. (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/2194"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/2194/hovercard">#2194</a>)</li>
<li><code>db</code>: Mark database semantic conventions as stable for
MariaDB, Microsoft SQL Server, MySQL, and PostgreSQL. (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/2199"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/2199/hovercard">#2199</a>)</li>
<li><code>db</code>: Make <code>db.operation.name</code> required where
it's available, add recommendation for instrumentation point. (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/2200"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/2200/hovercard">#2200</a>,
<a
href="https://github.com/open-telemetry/semantic-conventions/issues/2098"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/2098/hovercard">#2098</a>)</li>
<li><code>db</code>: Add <code>db.stored_procedure.name</code> to the
general span conventions (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/2205"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/2205/hovercard">#2205</a>)</li>
<li><code>db</code>: Add an option to generate
<code>db.query.summary</code> from operation name and target, remove it
from CosmosDB. (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/2206"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/2206/hovercard">#2206</a>)</li>
<li><code>db</code>: Add <code>db.operation.name</code> and
<code>db.collection.name</code> to SQL for higher-level APIs (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/2207"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/2207/hovercard">#2207</a>)</li>
<li><code>jvm</code>: Add <code>jvm.file_descriptor.count</code> as an
in-development metric to track the number of open file descriptors as
reported by the JVM. (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1838"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1838/hovercard">#1838</a>)</li>
<li><code>jvm</code>: Add <code>jvm.gc.cause</code> to metric
<code>jvm.gc.duration</code> as an opt-in attribute to track gc cause.
(<a
href="https://github.com/open-telemetry/semantic-conventions/issues/2065"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/2065/hovercard">#2065</a>)</li>
<li><code>process</code>: Add process.environment_variable. (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/672"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/672/hovercard">#672</a>)</li>
<li><code>app</code>: Defines two new click events for the app domain
(<a
href="https://github.com/open-telemetry/semantic-conventions/issues/2070"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/2070/hovercard">#2070</a>)</li>
<li><code>code</code>: Mark <code>code.*</code> semantic conventions as
stable (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1377"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1377/hovercard">#1377</a>)</li>
<li><code>k8s</code>: Introduce semantic conventions for k8s CronJob
labels and annotations (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/2138"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/2138/hovercard">#2138</a>)</li>
<li><code>k8s</code>: Introduce semantic conventions for k8s DaemonSet
labels and annotations (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/2136"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/2136/hovercard">#2136</a>)</li>
<li><code>k8s</code>: Introduce semantic conventions for k8s Deployment
labels and annotations (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/2134"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/2134/hovercard">#2134</a>)</li>
<li><code>system</code>: Added entity association template rendering and
policies. (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1276"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1276/hovercard">#1276</a>)</li>
<li><code>gen_ai</code>: Document <code>generate_content</code> as a
permissible value of <code>gen_ai.operation.name</code>. (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/2048"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/2048/hovercard">#2048</a>)</li>
<li><code>k8s</code>: Introduce semantic conventions for k8s Job labels
and annotations (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/2137"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/2137/hovercard">#2137</a>)</li>
<li><code>otel</code>: Adds SDK self-monitoring metrics for metric
processing (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/2016"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/2016/hovercard">#2016</a>)</li>
<li><code>k8s</code>: Introduce semantic conventions for k8s Namespace
labels and annotations (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/2131"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/2131/hovercard">#2131</a>)</li>
<li><code>k8s</code>: Introduce semantic conventions for k8s Node labels
and annotations (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/2079"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/2079/hovercard">#2079</a>)</li>
<li><code>k8s</code>: Introduce semantic conventions for k8s ReplicaSet
labels and annotations (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/2132"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/2132/hovercard">#2132</a>)</li>
<li><code>otel</code>: Adds SDK self-monitoring metric for exporter call
duration (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1906"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1906/hovercard">#1906</a>)</li>
<li><code>k8s</code>: Introduce semantic conventions for k8s StatefulSet
labels and annotations (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/2135"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/2135/hovercard">#2135</a>)</li>
</ul>
<h3>🧰 Bug fixes 🧰</h3>
<ul>
<li><code>gen-ai</code>: Removed irrelevant response attributes on GenAI
create agent span. (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1924"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1924/hovercard">#1924</a>,
<a
href="https://github.com/open-telemetry/semantic-conventions/issues/2116"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/2116/hovercard">#2116</a>)</li>
<li><code>vcs</code>: Fix typo in gitea name (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/2057"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/2057/hovercard">#2057</a>)</li>
<li><code>gen-ai</code>: Add invoke_agent as a member of
gen_ai.operation.name (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/2160"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/2160/hovercard">#2160</a>)</li>
<li><code>db</code>: Clarify <code>db.query.summary</code> for stored
procedures (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/2218"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/2218/hovercard">#2218</a>)</li>
</ul>
2025-05-22 07:56:01 -07:00
Tyler Yahn 0fc383a3ac Release log/v0.12.2 (#6806)
Resolve #6803 

- Retract `v0.12.0` release of
`go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc` module
that contains invalid dependencies. (#6804)
- Retract `v0.12.0` release of
`go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp` module
that contains invalid dependencies. (#6804)
- Retract `v0.12.0` release of
`go.opentelemetry.io/otel/exporters/stdout/stdoutlog` module that
contains invalid dependencies. (#6804)

---------

Co-authored-by: Robert Pająk <pellared@hotmail.com>
Co-authored-by: Damien Mathieu <42@dmathieu.com>
2025-05-22 09:30:55 +02:00
Tyler Yahn b64535e2df Retract v0.12.0 for log exporters (#6804)
Part of #6803. This needs to be released for that issue to be resolved.
2025-05-21 22:10:08 +02:00
Tyler Yahn 4c7da64bb1 Fix broken link in changelog (#6805) 2025-05-21 21:08:44 +02:00
Damien Mathieu 355c8ccc26 Release experimental logs 0.12.1 (#6802)
# Overview

### Fixes

- Use the proper dependency version of
`go.opentelemetry.io/otel/sdk/log/logtest` in
`go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc`. (#6800)
- Use the proper dependency version of
`go.opentelemetry.io/otel/sdk/log/logtest` in
`go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp`. (#6800)
- Use the proper dependency version of
`go.opentelemetry.io/otel/sdk/log/logtest` in
`go.opentelemetry.io/otel/exporters/stdout/stdoutlog`. (#6800)
2025-05-21 15:25:38 +02:00
Damien Mathieu c359e91ea2 Fix dependencies to unreleased sdk/logtest (#6800)
Fixes https://github.com/open-telemetry/opentelemetry-go/issues/6801

`sdk/log/logtest`, which is exported into its own module, is also not
released.
Yet the package upgrade turned it into its own version, which went
unseen because the local import is using a replace statement.
For some reason, this also wasn't triggered when I [checked the contrib
repo](https://github.com/open-telemetry/opentelemetry-go-contrib/blob/main/RELEASING.md#verify-otel-changes).

I believe we need to cut 0.12.1 for those three modules.

---------

Co-authored-by: Robert Pająk <pellared@hotmail.com>
2025-05-21 15:14:07 +02:00
Damien Mathieu a85ae98dce Release v1.36.0/v0.58.0/v0.12.0 (#6793)
# Overview

Closes https://github.com/open-telemetry/opentelemetry-go/issues/6786

### Added

- Add exponential histogram support in
`go.opentelemetry.io/otel/exporters/prometheus`. (#6421)
- The `go.opentelemetry.io/otel/semconv/v1.31.0` package.
The package contains semantic conventions from the `v1.31.0` version of
the OpenTelemetry Semantic Conventions.
See the [migration documentation](./semconv/v1.31.0/MIGRATION.md) for
information on how to upgrade from
`go.opentelemetry.io/otel/semconv/v1.30.0`. (#6479)
- Add `Recording`, `Scope`, and `Record` types in
`go.opentelemetry.io/otel/log/logtest`. (#6507)
- Add `WithHTTPClient` option to configure the `http.Client` used by
`go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp`.
(#6751)
- Add `WithHTTPClient` option to configure the `http.Client` used by
`go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp`.
(#6752)
- Add `WithHTTPClient` option to configure the `http.Client` used by
`go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp`. (#6688)
- Add `ValuesGetter` in `go.opentelemetry.io/otel/propagation`, a
`TextMapCarrier` that supports retrieving multiple values for a single
key. (#5973)
- Add `Values` method to `HeaderCarrier` to implement the new
`ValuesGetter` interface in `go.opentelemetry.io/otel/propagation`.
(#5973)
- Update `Baggage` in `go.opentelemetry.io/otel/propagation` to retrieve
multiple values for a key when the carrier implements `ValuesGetter`.
(#5973)
- Add `AssertEqual` function in `go.opentelemetry.io/otel/log/logtest`.
(#6662)
- The `go.opentelemetry.io/otel/semconv/v1.32.0` package.
The package contains semantic conventions from the `v1.32.0` version of
the OpenTelemetry Semantic Conventions.
See the [migration documentation](./semconv/v1.32.0/MIGRATION.md) for
information on how to upgrade from
`go.opentelemetry.io/otel/semconv/v1.31.0`(#6782)
- Add `Transform` option in `go.opentelemetry.io/otel/log/logtest`.
(#6794)
- Add `Desc` option in `go.opentelemetry.io/otel/log/logtest`. (#6796)

### Removed

- Drop support for [Go 1.22]. (#6381, #6418)
- Remove `Resource` field from `EnabledParameters` in
`go.opentelemetry.io/otel/sdk/log`. (#6494)
- Remove `RecordFactory` type from
`go.opentelemetry.io/otel/log/logtest`. (#6492)
- Remove `ScopeRecords`, `EmittedRecord`, and `RecordFactory` types from
`go.opentelemetry.io/otel/log/logtest`. (#6507)
- Remove `AssertRecordEqual` function in
`go.opentelemetry.io/otel/log/logtest`, use `AssertEqual` instead.
(#6662)

### Changed

- ⚠️ Update `github.com/prometheus/client_golang` to `v1.21.1`, which
changes the `NameValidationScheme` to `UTF8Validation`.
This allows metrics names to keep original delimiters (e.g. `.`), rather
than replacing with underscores.
This can be reverted by setting
`github.com/prometheus/common/model.NameValidationScheme` to
`LegacyValidation` in `github.com/prometheus/common/model`. (#6433)
- Initialize map with `len(keys)` in `NewAllowKeysFilter` and
`NewDenyKeysFilter` to avoid unnecessary allocations in
`go.opentelemetry.io/otel/attribute`. (#6455)
- `go.opentelemetry.io/otel/log/logtest` is now a separate Go module.
(#6465)
- `go.opentelemetry.io/otel/sdk/log/logtest` is now a separate Go
module. (#6466)
- `Recorder` in `go.opentelemetry.io/otel/log/logtest` no longer
separately stores records emitted by loggers with the same
instrumentation scope. (#6507)
- Improve performance of `BatchProcessor` in
`go.opentelemetry.io/otel/sdk/log` by not exporting when exporter cannot
accept more. (#6569, #6641)

### Deprecated

- Deprecate support for `model.LegacyValidation` for
`go.opentelemetry.io/otel/exporters/prometheus`. (#6449)

### Fixes

- Stop percent encoding header environment variables in
`go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc` and
`go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp`. (#6392)
- Ensure the `noopSpan.tracerProvider` method is not inlined in
`go.opentelemetry.io/otel/trace` so the `go.opentelemetry.io/auto`
instrumentation can instrument non-recording spans. (#6456)
- Use a `sync.Pool` instead of allocating `metricdata.ResourceMetrics`
in `go.opentelemetry.io/otel/exporters/prometheus`. (#6472)

---------

Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
Co-authored-by: Robert Pająk <pellared@hotmail.com>
2025-05-21 09:35:39 +02:00
Robert Pająk 3f85c35038 logtest: add Desc (#6796)
Fixes https://github.com/open-telemetry/opentelemetry-go/issues/6490

Fixes https://github.com/open-telemetry/opentelemetry-go/issues/6341
2025-05-21 09:15:30 +02:00
Tyler Yahn 2d4c9dc115 Add semconv/v1.32.0 (#6782)
- Add the new metric API package structure prototyped in
https://github.com/MrAlias/semconv-go

  Prototypes of new metric API use:
   - https://github.com/MrAlias/opentelemetry-go-contrib/pull/6136
   - https://github.com/MrAlias/opentelemetry-go-contrib/pull/6135
   - https://github.com/MrAlias/opentelemetry-go-contrib/pull/6134
- Generate `semconv/v1.32.0`
- Drop the `kestrel` metric namespace as this is a Java specific
technology

## [`v1.32.0` semantic convention release
notes](https://github.com/open-telemetry/semantic-conventions/releases/tag/v1.32.0):

<div data-pjax="true" data-test-selector="body-content"
data-view-component="true" class="markdown-body my-3"><p>📣 This release
is the second release candidate for the Database Semantic Conventions,
with <strong>db conventions stability planned to be declared in the
subsequent release</strong>.</p>
<h3>🛑 Breaking changes 🛑</h3>
<ul>
<li><code>device</code>: Change the definition of <code>device.id</code>
and make it opt-in. (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1874"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1874/hovercard">#1874</a>,
<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1951"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/1951/hovercard">#1951</a>)</li>
<li><code>feature_flag</code>: Rename <code>evaluation</code> to
<code>result</code> for feature flag evaluation result attributes (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1989"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/1989/hovercard">#1989</a>)</li>
</ul>
<h3>🚀 New components 🚀</h3>
<ul>
<li><code>app</code>: Create <code>app.installation.id</code> attribute
(<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1874"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1874/hovercard">#1874</a>,
<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1897"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/1897/hovercard">#1897</a>)</li>
<li><code>cpython</code>: Add CPython runtime garbage collector metrics
(<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1930"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1930/hovercard">#1930</a>)</li>
</ul>
<h3>💡 Enhancements 💡</h3>
<ul>
<li><code>vcs</code>: Add owner and provider name to VCS attribute
registry (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1452"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1452/hovercard">#1452</a>)</li>
<li><code>vcs</code>: Remove fallback value for VCS provider name
attribute (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/2020"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/2020/hovercard">#2020</a>)</li>
<li><code>db</code>: Truncate <code>db.query.summary</code> to 255
characters if parsed from the query (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1978"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1978/hovercard">#1978</a>)</li>
<li><code>db</code>: Normalize spaces in <code>db.operation.name</code>
(if any) (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/2028"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/2028/hovercard">#2028</a>)</li>
<li><code>db</code>: <code>db.operation.parameter.&lt;key&gt;</code>
should not be captured for batch operations (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/2026"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/2026/hovercard">#2026</a>)</li>
<li><code>db</code>: Add <code>db.stored_procedure.name</code> (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1491"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1491/hovercard">#1491</a>)</li>
<li><code>gcp</code>: Adds GCP AppHub labels for resource. (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/2006"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/2006/hovercard">#2006</a>)</li>
<li><code>error</code>: Add <code>error.message</code> property for
human-readable error message on events. (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1992"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/1992/hovercard">#1992</a>)</li>
<li><code>profile</code>: Extend the list of known frame types with a
value for Go and Rust (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/2003"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/2003/hovercard">#2003</a>)</li>
<li><code>otel</code>: Adds SDK self-monitoring metrics for log
processing (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1921"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/1921/hovercard">#1921</a>)</li>
</ul>
2025-05-20 10:33:50 -07:00
Robert Pająk fe523bd15a logtest: add Transform (#6794)
Fixes https://github.com/open-telemetry/opentelemetry-go/issues/6491
Fixes https://github.com/open-telemetry/opentelemetry-go/issues/6489

Towards https://github.com/open-telemetry/opentelemetry-go/issues/6341

Per
https://github.com/open-telemetry/opentelemetry-go/pull/6774#discussion_r2091424563
2025-05-20 10:54:48 +02:00
James Moessis f410084b21 propagation: extract of multiple header values (#5973)
* Add `ValuesGetter` interface, an optional `TextMapCarrier` feature
that adds `Values(string) []string`.
* `HeaderCarrier` implements `ValuesGetter`.
* Change `Baggage` to use the `Values()` method if it's implemented.

Notable comment:
https://github.com/open-telemetry/opentelemetry-go/pull/5973#discussion_r2074894706

Adds tests extracting requests with multiple 'baggage' headers set.
Does not introduce any breaking changes or alter any existing tests.

Spec issue:
https://github.com/open-telemetry/opentelemetry-specification/issues/433
Corresponding Java prototype:
https://github.com/open-telemetry/opentelemetry-java/pull/6852

---------

Co-authored-by: Robert Pająk <pellared@hotmail.com>
Co-authored-by: dmathieu <42@dmathieu.com>
2025-05-15 09:14:35 +02:00
Robert Pająk bf7ffa3900 log/logtest: Add AssertEqual and remove AssertRecordEqual (#6662)
Fixes https://github.com/open-telemetry/opentelemetry-go/issues/6487
Fixes https://github.com/open-telemetry/opentelemetry-go/issues/6488

Towards https://github.com/open-telemetry/opentelemetry-go/issues/6341

Prior-art: https://github.com/open-telemetry/opentelemetry-go/pull/6464

Replace `AssertRecordEqual` with `AssertEqual` which accepts options and
can work not only with `Record` but most importantly, whole `Recording`.

The changes between the previous approach are inspired by the design of
https://pkg.go.dev/go.opentelemetry.io/otel/sdk/metric/metricdata/metricdatatest.
Thanks to it we continue to use the "assert" pattern, but are not
impacted by downsides of `testify`. The main issue is that with
`testify` we cannot force `[]log.KeyValue` to sort slices before
comparing (unordered collection equality). This can make the tests too
much "white-boxed" and can easy break during refactoring. Moreover,
empty and nil slices are seen not equal which in this case is not
relevant.

Here is an example of how the current tests of log bridges can be
improved:
- https://github.com/open-telemetry/opentelemetry-go-contrib/pull/6953
2025-05-13 21:13:59 +02:00
Robert Pająk 5cd1611cda otlptracehttp: Add WithHTTPClient option (#6751)
Follows https://github.com/open-telemetry/opentelemetry-go/pull/6688

Towards (for OTLP trace exporter):
- https://github.com/open-telemetry/opentelemetry-go/issues/4536
- https://github.com/open-telemetry/opentelemetry-go/issues/5129
- https://github.com/open-telemetry/opentelemetry-go/issues/2632
2025-05-13 21:06:01 +02:00
Robert Pająk b66542529a otlpmetrichttp: Add WithHTTPClient option (#6752)
Follows https://github.com/open-telemetry/opentelemetry-go/pull/6688

Towards (for OTLP metric exporter):
- https://github.com/open-telemetry/opentelemetry-go/issues/4536
- https://github.com/open-telemetry/opentelemetry-go/issues/5129
- https://github.com/open-telemetry/opentelemetry-go/issues/2632
2025-05-13 20:58:06 +02:00
Robert Pająk cf8179a373 otlploghttp: Add WithHTTPClient option (#6688)
Towards (for OTLP logs exporter):
- https://github.com/open-telemetry/opentelemetry-go/issues/4536
- https://github.com/open-telemetry/opentelemetry-go/issues/5129
- https://github.com/open-telemetry/opentelemetry-go/issues/2632


Per
https://github.com/open-telemetry/opentelemetry-go/pull/6362/files#r1978191352

Providing `WithHTTPClient` option allows easy interoperability e.g. with
https://pkg.go.dev/golang.org/x/oauth2/clientcredentials#Config.Client
and also see
https://github.com/open-telemetry/opentelemetry-go/issues/2632. The
options is also similar to:
https://pkg.go.dev/go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc#WithGRPCConn

I favor this over
https://github.com/open-telemetry/opentelemetry-go/pull/6686

The option for OTLP span and metrics exporters will be added in separate
PRs.
2025-05-07 06:31:53 +02:00
Robert Pająk ba37ae0f8b log/logtest: Change Recorder.Result (#6507)
Fixes https://github.com/open-telemetry/opentelemetry-go/issues/6486

Towards https://github.com/open-telemetry/opentelemetry-go/issues/6341

`Recorder` in `go.opentelemetry.io/otel/log/logtest` no longer
separately stores records emitted by loggers with the same
instrumentation scope.

Prior-art: https://github.com/open-telemetry/opentelemetry-go/pull/6464
2025-04-12 17:07:29 +02:00
Robert Pająk a6e302fa86 sdk/log: remove unnecessary b.q.Len() call (#6641)
Addresses
https://github.com/open-telemetry/opentelemetry-go/pull/6569#discussion_r2037896972
2025-04-11 10:48:01 +02:00
Igor a5abd88e1d Optimize Logs SDK BatchProcessor (#6569)
Towards: https://github.com/open-telemetry/opentelemetry-go/issues/6382

This PR optimizes Logs SDK BatchProcessor.

## Why? <!-- was i so blind -->

Batch processor does not check if buffer exporter is full, instead it
clones records to buffer, then tries to push them to buffer exporter,
and then buffer exporter will return false from EnqueueExport if it is
full.

It does not cause any performance issues when using NOOP exporter,
because it "exports" instantly. -> Buffer exporter input channel will
almost never be full.

But actual implementations of exporters are not going to act that way,
they need some time for export operation. And so buffer exporter will
get full fairly frequently. Each export attempt to buffer exporter costs
us copying entire queue inside of batch processor.

In order to catch this or similar performance bottleneck in the future,
new benchmark (`BatchSimulateExport`) was added which will use exporter
that will simulate non-instant export by sleeping for 5ms.

## Benchmarks

```sh
goos: linux
goarch: amd64
pkg: go.opentelemetry.io/otel/sdk/log
cpu: AMD Ryzen 9 7900X 12-Core Processor
                                 │   base.txt   │               new.txt               │
                                 │    sec/op    │   sec/op     vs base                │
Processor/Simple-24                 340.9n ± 2%   343.5n ± 5%        ~ (p=0.971 n=10)
Processor/Batch-24                  667.6n ± 2%   666.3n ± 4%        ~ (p=0.896 n=10)
Processor/BatchSimulateExport-24   4441.5n ± 5%   526.4n ± 4%  -88.15% (p=0.000 n=10)
Processor/SetTimestampSimple-24     360.0n ± 4%   351.0n ± 1%        ~ (p=0.247 n=10)
Processor/SetTimestampBatch-24      669.8n ± 3%   647.0n ± 5%        ~ (p=0.052 n=10)
Processor/AddAttributesSimple-24    383.9n ± 1%   386.6n ± 5%        ~ (p=0.138 n=10)
Processor/AddAttributesBatch-24     759.9n ± 6%   734.5n ± 5%        ~ (p=0.481 n=10)
Processor/SetAttributesSimple-24    369.9n ± 2%   372.4n ± 3%        ~ (p=0.643 n=10)
Processor/SetAttributesBatch-24     684.2n ± 4%   674.0n ± 8%        ~ (p=0.529 n=10)
geomean                             639.9n        499.9n       -21.88%

                                 │   base.txt   │                new.txt                 │
                                 │     B/op     │     B/op      vs base                  │
Processor/Simple-24                  450.0 ± 0%     450.0 ± 0%        ~ (p=1.000 n=10) ¹
Processor/Batch-24                 1.153Ki ± 2%   1.125Ki ± 1%   -2.41% (p=0.001 n=10)
Processor/BatchSimulateExport-24     649.0 ± 1%     473.0 ± 0%  -27.12% (p=0.000 n=10)
Processor/SetTimestampSimple-24      450.0 ± 0%     450.0 ± 0%        ~ (p=1.000 n=10) ¹
Processor/SetTimestampBatch-24     1.145Ki ± 2%   1.122Ki ± 2%   -2.01% (p=0.003 n=10)
Processor/AddAttributesSimple-24     450.0 ± 0%     450.0 ± 0%        ~ (p=1.000 n=10) ¹
Processor/AddAttributesBatch-24    1.169Ki ± 2%   1.148Ki ± 1%   -1.80% (p=0.000 n=10)
Processor/SetAttributesSimple-24     450.0 ± 0%     450.0 ± 0%        ~ (p=1.000 n=10) ¹
Processor/SetAttributesBatch-24    1.141Ki ± 2%   1.128Ki ± 2%   -1.11% (p=0.030 n=10)
geomean                              719.3          688.7        -4.24%
¹ all samples are equal

                                 │  base.txt  │               new.txt               │
                                 │ allocs/op  │ allocs/op   vs base                 │
Processor/Simple-24                1.000 ± 0%   1.000 ± 0%       ~ (p=1.000 n=10) ¹
Processor/Batch-24                 1.000 ± 0%   1.000 ± 0%       ~ (p=1.000 n=10) ¹
Processor/BatchSimulateExport-24   1.000 ± 0%   1.000 ± 0%       ~ (p=1.000 n=10) ¹
Processor/SetTimestampSimple-24    1.000 ± 0%   1.000 ± 0%       ~ (p=1.000 n=10) ¹
Processor/SetTimestampBatch-24     1.000 ± 0%   1.000 ± 0%       ~ (p=1.000 n=10) ¹
Processor/AddAttributesSimple-24   1.000 ± 0%   1.000 ± 0%       ~ (p=1.000 n=10) ¹
Processor/AddAttributesBatch-24    1.000 ± 0%   1.000 ± 0%       ~ (p=1.000 n=10) ¹
Processor/SetAttributesSimple-24   1.000 ± 0%   1.000 ± 0%       ~ (p=1.000 n=10) ¹
Processor/SetAttributesBatch-24    1.000 ± 0%   1.000 ± 0%       ~ (p=1.000 n=10) ¹
geomean                            1.000        1.000       +0.00%
¹ all samples are equal
```

## Benchmarks from issue (external)

```sh
goos: linux
goarch: amd64
pkg: github.com/pellared/spanevents-vs-logs
cpu: AMD Ryzen 9 7900X 12-Core Processor
           │ spanevents.txt │              logs.base.txt              │             logs.new.txt             │
           │     sec/op     │    sec/op      vs base                  │   sec/op     vs base                 │
/OTLP-24        41.40µ ± 3%   2935.15µ ± 9%  +6989.05% (p=0.000 n=10)   84.19µ ± 4%  +103.34% (p=0.000 n=10)
/STDOUT-24      39.55µ ± 4%    623.45µ ± 1%  +1476.21% (p=0.000 n=10)   89.51µ ± 3%  +126.29% (p=0.000 n=10)
/NOOP-24       13.179µ ± 2%     4.950µ ± 1%    -62.44% (p=0.000 n=10)   4.932µ ± 1%   -62.58% (p=0.000 n=10)
geomean         27.84µ          208.4µ        +648.68%                  33.37µ        +19.86%

           │ spanevents.txt │             logs.base.txt              │             logs.new.txt             │
           │      B/op      │     B/op       vs base                 │     B/op      vs base                │
/OTLP-24       98.90Ki ± 8%   210.44Ki ± 0%  +112.79% (p=0.000 n=10)   52.01Ki ± 0%  -47.41% (p=0.000 n=10)
/STDOUT-24     91.01Ki ± 0%   286.62Ki ± 0%  +214.93% (p=0.000 n=10)   81.67Ki ± 1%  -10.27% (p=0.000 n=10)
/NOOP-24       29840.0 ± 0%      240.0 ± 0%   -99.20% (p=0.000 n=10)     240.0 ± 0%  -99.20% (p=0.000 n=10)
geomean        64.01Ki         24.18Ki        -62.23%                  9.985Ki       -84.40%

           │ spanevents.txt │            logs.base.txt             │            logs.new.txt            │
           │   allocs/op    │  allocs/op   vs base                 │ allocs/op   vs base                │
/OTLP-24        699.0 ± 20%   2174.5 ± 1%  +211.09% (p=0.000 n=10)   249.5 ± 1%  -64.31% (p=0.000 n=10)
/STDOUT-24      646.5 ±  1%   4912.5 ± 0%  +659.86% (p=0.000 n=10)   872.5 ± 2%  +34.96% (p=0.000 n=10)
/NOOP-24      303.000 ±  0%    3.000 ± 0%   -99.01% (p=0.000 n=10)   3.000 ± 0%  -99.01% (p=0.000 n=10)
geomean         515.4          317.6        -38.37%                  86.76       -83.17%
```

```sh
goos: linux
goarch: amd64
pkg: github.com/pellared/spanevents-vs-logs
cpu: AMD Ryzen 9 7900X 12-Core Processor
           │ logs.base.txt │            logs.new.txt             │
           │    sec/op     │   sec/op     vs base                │
/OTLP-24     2935.15µ ± 9%   84.19µ ± 4%  -97.13% (p=0.000 n=10)
/STDOUT-24    623.45µ ± 1%   89.51µ ± 3%  -85.64% (p=0.000 n=10)
/NOOP-24       4.950µ ± 1%   4.932µ ± 1%        ~ (p=0.342 n=10)
geomean        208.4µ        33.37µ       -83.99%

           │ logs.base.txt │              logs.new.txt              │
           │     B/op      │     B/op      vs base                  │
/OTLP-24     210.44Ki ± 0%   52.01Ki ± 0%  -75.28% (p=0.000 n=10)
/STDOUT-24   286.62Ki ± 0%   81.67Ki ± 1%  -71.51% (p=0.000 n=10)
/NOOP-24        240.0 ± 0%     240.0 ± 0%        ~ (p=1.000 n=10) ¹
geomean       24.18Ki        9.985Ki       -58.70%
¹ all samples are equal

           │ logs.base.txt │             logs.new.txt             │
           │   allocs/op   │ allocs/op   vs base                  │
/OTLP-24       2174.5 ± 1%   249.5 ± 1%  -88.53% (p=0.000 n=10)
/STDOUT-24     4912.5 ± 0%   872.5 ± 2%  -82.24% (p=0.000 n=10)
/NOOP-24        3.000 ± 0%   3.000 ± 0%        ~ (p=1.000 n=10) ¹
geomean         317.6        86.76       -72.69%
¹ all samples are equal
```

---------

Co-authored-by: Robert Pająk <pellared@hotmail.com>
Co-authored-by: Damien Mathieu <42@dmathieu.com>
2025-04-09 14:36:25 +02:00
Damien Mathieu 9d8b6161dd Remove prometheus legacy validation warning (#6590)
I have been chatting with @bwplotka, who wouldn't recommend removing the
support for the legacy scheme now.

Indeed, some system don't support the new scheme yet (such as cortex).
So removing this will entirely prevent those users form upgrading their
SDK.

They are going to remove the deprecation from the legacy method on
common, at least until the new scheme can be used in enough systems.

---------

Co-authored-by: Sam Xie <sam@samxie.me>
2025-04-09 09:17:30 +02:00
Giedrius Statkevičius 75973eccbf exporters: prometheus: add exponential (native) histogram support (#6421)
Almost closes 5777.

Adding native (exponential) histogram support to the Prometheus
exporter. I tested it with a toy program, and the result looks good. I
added a unit test.

---------

Signed-off-by: Giedrius Statkevičius <giedrius.statkevicius@vinted.com>
Co-authored-by: Sam Xie <sam@samxie.me>
2025-04-03 19:35:14 -07:00
Damien Mathieu 905684c58a Ignore deprecation warnings about NameValidationScheme (#6449)
In 0.63.0, prometheus deprecates the `model.NameValidationScheme`
attribute.

https://github.com/open-telemetry/opentelemetry-go/actions/runs/13885046847/job/38848614767?pr=6442

> Error: exporter_test.go:478:6: SA1019: model.NameValidationScheme is
deprecated: This variable should not be used and might be removed in the
far future. If you wish to stick to the legacy name validation use
`IsValidLegacyMetricName()` and `LabelName.IsValidLegacy()` methods
instead. This variable is here as an escape hatch for emergency cases,
given the recent change from `LegacyValidation` to `UTF8Validation`,
e.g., to delay UTF-8 migrations in time or aid in debugging unforeseen
results of the change. In such a case, a temporary assignment to
`LegacyValidation` value in the `init()` function in your main.go or so,
could be considered. (staticcheck)

We probably want to keep supporting this scheme in the near future
though. So this ignores those deprecations, so we can upgrade the
package.

Unblocks https://github.com/open-telemetry/opentelemetry-go/pull/6442
2025-03-27 09:41:35 +01:00
Tyler Yahn 95e5bbab98 Generate v1.31.0 semconv (#6479)
- Generate `semconv/v1.31.0`
- Stop generating deprecated metric semconv similar to all other
generation
- Fix acronyms:
  - `ReplicationController`
  - `ResourceQuota`

## [`v1.31.0` semantic convention release
notes](https://github.com/open-telemetry/semantic-conventions/releases/tag/v1.31.0):

<h3>🛑 Breaking changes 🛑</h3>
<ul>
<li>
<p><code>code</code>: <code>code.function.name</code> value should
contain the fully qualified function name, <code>code.namespace</code>
is now deprecated (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1677"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1677/hovercard">#1677</a>)</p>
</li>
<li>
<p><code>gen-ai</code>: Introduce <code>gen_ai.output.type</code>and
deprecate <code>gen_ai.openai.request.response_format</code> (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1757"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/1757/hovercard">#1757</a>)</p>
</li>
<li>
<p><code>mobile</code>: Rework <code>device.app.lifecycle</code> mobile
event. (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1880"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/1880/hovercard">#1880</a>)<br>
The <code>device.app.lifecycle</code> event has been reworked to use
attributes instead<br>
of event body fields. The <code>ios.app.state</code> and
<code>android.app.state</code> attributes<br>
have been reintroduced to the attribute registry.</p>
</li>
<li>
<p><code>system</code>: Move CPU-related system.cpu.* metrics to CPU
namespace (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1873"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1873/hovercard">#1873</a>)</p>
</li>
<li>
<p><code>k8s</code>: Change k8s.replication_controller metrics to
k8s.replicationcontroller (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1848"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/1848/hovercard">#1848</a>)</p>
</li>
<li>
<p><code>db</code>: Rename <code>db.system</code> to
<code>db.system.name</code> in database metrics, and update the values
to be consistent with database spans. (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1581"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1581/hovercard">#1581</a>)</p>
</li>
<li>
<p><code>session</code>: Move <code>session.id</code> and
<code>session.previous_id</code> from body fields to event attributes,
and yamlize <code>session.start</code> and <code>session.end</code>
events. (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1845"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/1845/hovercard">#1845</a>)<br>
As part of the ongoing migration of event fields from LogRecord body to
extended/complex attributes, the <code>session.start</code> and
<code>session.end</code> events have been redefined.</p>
</li>
</ul>
<h3>💡 Enhancements 💡</h3>
<ul>
<li>
<p><code>code</code>: Mark <code>code.*</code> semantic conventions as
release candidate (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1377"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1377/hovercard">#1377</a>)</p>
</li>
<li>
<p><code>gen-ai</code>: Added AI Agent Semantic Convention (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1732"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1732/hovercard">#1732</a>,
<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1739"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/1739/hovercard">#1739</a>)</p>
</li>
<li>
<p><code>db</code>: Add database-specific notes on db.operation.name and
db.collection.name for Cassandra, Cosmos DB, HBase, MongoDB, and Redis,
covering their batch/bulk terms and lack of cross-table queries. (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1863"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/1863/hovercard">#1863</a>,
<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1573"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1573/hovercard">#1573</a>)</p>
</li>
<li>
<p><code>gen-ai</code>: Adds <code>gen_ai.request.choice.count</code>
span attribute (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1888"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1888/hovercard">#1888</a>)<br>
Enables recording target number of completions to generate</p>
</li>
<li>
<p><code>enduser</code>: Undeprecate 'enduser.id' and introduce new
attribute <code>enduser.pseudo.id</code> (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1104"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1104/hovercard">#1104</a>)<br>
The new attribute <code>enduser.pseudo.id</code> is intended to provide
a unique identifier of a pseudonymous enduser.</p>
</li>
<li>
<p><code>k8s</code>: Add <code>k8s.hpa</code>,
<code>k8s.resourcequota</code> and
<code>k8s.replicationcontroller</code> attributes and resources (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1656"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1656/hovercard">#1656</a>)</p>
</li>
<li>
<p><code>k8s</code>: How to populate resource attributes based on
attributes, labels and transformation (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/236"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/236/hovercard">#236</a>)</p>
</li>
<li>
<p><code>process</code>: Adjust the semantic expectations for
<code>process.executable.name</code> (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1736"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1736/hovercard">#1736</a>)</p>
</li>
<li>
<p><code>otel</code>: Adds SDK self-monitoring metrics for span
processing (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1631"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/1631/hovercard">#1631</a>)</p>
</li>
<li>
<p><code>cicd</code>: Adds a new attribute
<code>cicd.pipeline.run.url.full</code> and corrects the attribute
description of <code>cicd.pipeline.task.run.url.full</code> (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1796"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1796/hovercard">#1796</a>)</p>
</li>
<li>
<p><code>user-agent</code>: Add <code>user_agent.os.name</code> and
<code>user_agent.os.version</code> attributes (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1433"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1433/hovercard">#1433</a>)</p>
</li>
</ul>
<h3>🧰 Bug fixes 🧰</h3>
<ul>
<li><code>process</code>: Fix units of
process.open_file_descriptor.count and process.context_switches (<a
href="https://github.com/open-telemetry/semantic-conventions/issues/1662"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1662/hovercard">#1662</a>)</li>
</ul>

---------

Co-authored-by: Robert Pająk <pellared@hotmail.com>
2025-03-26 08:05:18 +01:00
Robert Pająk dbc3bce6fa log/logtest: Remove RecordFactory (#6492)
Fixes https://github.com/open-telemetry/opentelemetry-go/issues/6485

Towards https://github.com/open-telemetry/opentelemetry-go/issues/6341

`RecordFactory` is unused.
2025-03-26 06:36:44 +01:00
Robert Pająk 84ff4da7ab sdk/log: remove EnabledParameters.Resource (#6494)
Per
https://github.com/open-telemetry/opentelemetry-specification/pull/4439#discussion_r1980165954
2025-03-25 06:44:14 +01:00
Robert Pająk f39f16c6ca sdk/log/logtest: new module (#6466)
Fixes https://github.com/open-telemetry/opentelemetry-go/issues/6378
2025-03-20 17:47:49 +01:00
ian f556bd3211 prometheus: use a sync.Pool instead of allocating metricdata.ResourceMetrics in Collect (#6472)
Fix #3047 

Use a `sync.Pool` instead of allocating `metricdata.ResourceMetrics` in
`go.opentelemetry.io/otel/exporters/prometheus`

```shell
goos: darwin
goarch: arm64
pkg: go.opentelemetry.io/otel/exporters/prometheus
cpu: Apple M3
               │ before.txt  │             after.txt             │
               │   sec/op    │   sec/op     vs base              │
Collect1-8       8.273µ ± 0%   8.013µ ± 5%       ~ (p=0.065 n=6)
Collect10-8      23.84µ ± 0%   22.40µ ± 3%  -6.02% (p=0.002 n=6)
Collect100-8     148.0µ ± 0%   139.4µ ± 0%  -5.84% (p=0.002 n=6)
Collect1000-8    1.326m ± 0%   1.244m ± 1%  -6.14% (p=0.002 n=6)
Collect10000-8   15.90m ± 1%   14.51m ± 1%  -8.77% (p=0.002 n=6)
geomean          227.9µ        214.3µ       -6.00%

               │  before.txt  │              after.txt              │
               │     B/op     │     B/op      vs base               │
Collect1-8       35.65Ki ± 0%   34.49Ki ± 0%   -3.24% (p=0.002 n=6)
Collect10-8      55.78Ki ± 0%   45.57Ki ± 0%  -18.31% (p=0.002 n=6)
Collect100-8     260.8Ki ± 0%   174.1Ki ± 0%  -33.23% (p=0.002 n=6)
Collect1000-8    2.307Mi ± 0%   1.537Mi ± 1%  -33.38% (p=0.002 n=6)
Collect10000-8   22.47Mi ± 0%   14.75Mi ± 4%  -34.36% (p=0.002 n=6)
geomean          489.8Ki        365.3Ki       -25.42%

               │ before.txt  │             after.txt             │
               │  allocs/op  │  allocs/op   vs base              │
Collect1-8        72.00 ± 0%    66.00 ± 0%  -8.33% (p=0.002 n=6)
Collect10-8       398.0 ± 0%    375.0 ± 0%  -5.78% (p=0.002 n=6)
Collect100-8     3.662k ± 0%   3.491k ± 0%  -4.67% (p=0.002 n=6)
Collect1000-8    36.15k ± 0%   34.62k ± 0%  -4.24% (p=0.002 n=6)
Collect10000-8   361.0k ± 0%   345.7k ± 0%  -4.25% (p=0.002 n=6)
geomean          4.239k        4.008k       -5.47%
```
2025-03-20 16:59:17 +01:00
Robert Pająk 1b8fe16bea log/logtest: new module (#6465)
Towards https://github.com/open-telemetry/opentelemetry-go/issues/6378
2025-03-20 16:37:57 +01:00
Tyler Yahn 90a9d1d936 Do not inline noopSpan.tracerProvider (#6456)
Currently, the `noopSpan.tracerProvider` is inlined into
`noopSpan.TracerProvider` for binaries built with standard tooling. This
function is needed in the ELF file for auto-instrumentation. Ensure
this, and the other required methods are always kept isolated.

cc @open-telemetry/go-instrumentation-approvers

---------

Co-authored-by: Robert Pająk <pellared@hotmail.com>
2025-03-19 14:50:43 -07:00
ian 8dc08e26b4 attribute: preallocate map in NewAllowKeysFilter and NewDenyKeysFilter (#6455)
preallocate map in `NewAllowKeysFilter` and `NewDenyKeysFilter` to avoid
necessary allocations
2025-03-18 08:38:17 -07:00
Ajat Prabha 921e0e679e chore(deps): update github.com/prometheus/client_golang to v1.21.1 (#6433)
There are changes in how testutil.GatherAndCompare behaves in tests,
this PR updates the testcases and bumps the
`github.com/prometheus/client_golang` dependency to `v1.21.1`

Signed-off-by: ajatprabha <ajat.prabha.leo@gmail.com>
Co-authored-by: Damien Mathieu <42@dmathieu.com>
2025-03-18 10:22:12 +01:00
Robert Wu efe325aa95 Stop percent-encoding the header environment variables in otlplog exporters (#6392)
Bugfixes for #5623 

Based on the conversation
https://github.com/open-telemetry/opentelemetry-go/issues/5623#issuecomment-2331089315,
only OTLP log exporters need bugfixes.

---------

Co-authored-by: Damien Mathieu <42@dmathieu.com>
Co-authored-by: Robert Pająk <pellared@hotmail.com>
2025-03-12 06:32:18 +01:00
Sam Xie 838643a3a5 Bump Go version for schema (#6418)
Fix
https://github.com/open-telemetry/opentelemetry-go/actions/runs/13696022593/job/38298512564

> * schema/go.mod#L0C0:0: As of Go 1.21, toolchain versions [must use
the 1.N.P syntax](https://go.dev/doc/> toolchain#version).
>     
> `1.22` in `schema/go.mod` does not match this syntax and there is no
additional `toolchain` directive, which may cause some `go` commands to
fail.
2025-03-07 09:18:09 +01:00
Sam Xie 09ff8b107a Drop support for Go 1.22 (#6381) 2025-03-05 22:23:10 -08:00
Sam Xie 5ba5e7a449 Release v1.35.0/v0.57.0/v0.11.0 (#6407)
## Overview

This release is the last to support [Go 1.22].
The next release will require at least [Go 1.23].

### Added

- Add `ValueFromAttribute` and `KeyValueFromAttribute` in
`go.opentelemetry.io/otel/log`. (#6180)
- Add `EventName` and `SetEventName` to `Record` in
`go.opentelemetry.io/otel/log`. (#6187)
- Add `EventName` to `RecordFactory` in
`go.opentelemetry.io/otel/log/logtest`. (#6187)
- `AssertRecordEqual` in `go.opentelemetry.io/otel/log/logtest` checks
`Record.EventName`. (#6187)
- Add `EventName` and `SetEventName` to `Record` in
`go.opentelemetry.io/otel/sdk/log`. (#6193)
- Add `EventName` to `RecordFactory` in
`go.opentelemetry.io/otel/sdk/log/logtest`. (#6193)
- Emit `Record.EventName` field in
`go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc`. (#6211)
- Emit `Record.EventName` field in
`go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp`. (#6211)
- Emit `Record.EventName` field in
`go.opentelemetry.io/otel/exporters/stdout/stdoutlog` (#6210)
- The `go.opentelemetry.io/otel/semconv/v1.28.0` package.
The package contains semantic conventions from the `v1.28.0` version of
the OpenTelemetry Semantic Conventions.
See the [migration documentation](./semconv/v1.28.0/MIGRATION.md) for
information on how to upgrade from
`go.opentelemetry.io/otel/semconv/v1.27.0`(#6236)
- The `go.opentelemetry.io/otel/semconv/v1.30.0` package.
The package contains semantic conventions from the `v1.30.0` version of
the OpenTelemetry Semantic Conventions.
See the [migration documentation](./semconv/v1.30.0/MIGRATION.md) for
information on how to upgrade from
`go.opentelemetry.io/otel/semconv/v1.28.0`(#6240)
- Document the pitfalls of using `Resource` as a comparable type.
`Resource.Equal` and `Resource.Equivalent` should be used instead.
(#6272)
- Support [Go 1.24]. (#6304)
- Add `FilterProcessor` and `EnabledParameters` in
`go.opentelemetry.io/otel/sdk/log`.
It replaces
`go.opentelemetry.io/otel/sdk/log/internal/x.FilterProcessor`.
Compared to previous version it additionally gives the possibility to
filter by resource and instrumentation scope. (#6317)

### Changed

- Update `github.com/prometheus/common` to v0.62.0., which changes the
`NameValidationScheme` to `NoEscaping`. This allows metrics names to
keep original delimiters (e.g. `.`), rather than replacing with
underscores. This is controlled by the `Content-Type` header, or can be
reverted by setting `NameValidationScheme` to `LegacyValidation` in
`github.com/prometheus/common/model`. (#6198)

### Fixes

- Eliminate goroutine leak for the processor returned by
`NewSimpleSpanProcessor` when `Shutdown` is called and the passed `ctx`
is canceled and `SpanExporter.Shutdown` has not returned. (#6368)
- Eliminate goroutine leak for the processor returned by
`NewBatchSpanProcessor` when `ForceFlush` is called and the passed `ctx`
is canceled and `SpanExporter.Export` has not returned. (#6369)

[Go 1.23]: https://go.dev/doc/go1.23
[Go 1.22]: https://go.dev/doc/go1.22

---------

Co-authored-by: Robert Pająk <pellared@hotmail.com>
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
2025-03-05 10:33:59 -08:00
Robert Pająk 9be18c14cb sdk/trace: Fix gorountine leak in batchSpanProcessor.ForceFlush (#6369)
Fixes https://github.com/open-telemetry/opentelemetry-go/issues/6360

Per
https://github.com/open-telemetry/opentelemetry-go/issues/6360#issuecomment-2678080742:

> So I'd fix this issue with the first proposed solution, and open an
issue to change the behavior in a separate PR.

```
$ go test -run=TestBatchSpanProcessorForceFlushTimeout -count=1000
PASS
ok      go.opentelemetry.io/otel/sdk/trace      1.701s
$ go test -run=TestBatchSpanProcessorForceFlushTimeout -count=1000 -race
PASS
ok      go.opentelemetry.io/otel/sdk/trace      4.056s
```

@peterbourgon, thank you for your contribution 🏅
2025-02-27 11:28:31 +01:00
Robert Pająk 44d50457d9 sdk/trace: Fix goroutine leak in simpleSpanProcessor.Shutdown (#6368)
Side-effect when working towards
https://github.com/open-telemetry/opentelemetry-go/issues/6360

- Fix goroutine leaks from tests in places where batch processor was not
shut down
- Fix goroutine leak in simpleSpanProcessor.Shutdown
2025-02-26 23:32:15 +01:00
Robert Pająk 1ee7c79b73 sdk/log: Add FilterProcessor and EnabledParameters (#6317)
Per
https://github.com/open-telemetry/opentelemetry-go/pull/6271#issuecomment-2657554647

> We agreed that we can move `FilterProcessor` directly to `sdk/log` as
Logs SDK does not look to be stabilized soon.

- Add the possibility to filter based on the resource and scope which is
available for the SDK. The scope information is the most important as it
gives the possibility to e.g. filter out logs emitted for a given
logger. Thus e.g.
https://github.com/open-telemetry/opentelemetry-specification/issues/4364
is not necessary. See
https://github.com/open-telemetry/opentelemetry-specification/pull/4290#discussion_r1927546170
for more context.
- It is going be an example for
https://github.com/open-telemetry/opentelemetry-specification/issues/4363

There is a little overhead (IMO totally acceptable) because of data
transformation. Most importantly, there is no new heap allocation.

```
goos: linux
goarch: amd64
pkg: go.opentelemetry.io/otel/sdk/log
cpu: 13th Gen Intel(R) Core(TM) i7-13800H
                 │   old.txt   │                 new.txt                  │
                 │   sec/op    │     sec/op      vs base                  │
LoggerEnabled-20   4.589n ± 1%   319.750n ± 16%  +6867.75% (p=0.000 n=10)

                 │   old.txt    │             new.txt             │
                 │     B/op     │     B/op       vs base          │
LoggerEnabled-20   0.000Ki ± 0%   1.093Ki ± 13%  ? (p=0.000 n=10)

                 │  old.txt   │            new.txt             │
                 │ allocs/op  │ allocs/op   vs base            │
LoggerEnabled-20   0.000 ± 0%   0.000 ± 0%  ~ (p=1.000 n=10) ¹
¹ all samples are equal
```

`Logger.Enabled` is still more efficient than `Logger.Emit` (benchmarks
from https://github.com/open-telemetry/opentelemetry-go/pull/6315).

```
goos: linux
goarch: amd64
pkg: go.opentelemetry.io/otel/sdk/log
cpu: 13th Gen Intel(R) Core(TM) i7-13800H
BenchmarkLoggerEmit/5_attributes-20               559934              2391 ns/op           39088 B/op          1 allocs/op
BenchmarkLoggerEmit/10_attributes-20             1000000              5910 ns/op           49483 B/op          5 allocs/op
BenchmarkLoggerEnabled-20                        1605697               968.7 ns/op          1272 B/op          0 allocs/op
PASS
ok      go.opentelemetry.io/otel/sdk/log        10.789s
```

Prior art:
- https://github.com/open-telemetry/opentelemetry-go/pull/6271
- https://github.com/open-telemetry/opentelemetry-go/pull/6286

I also created for tracking purposes:
- https://github.com/open-telemetry/opentelemetry-go/issues/6328
2025-02-18 22:35:14 +01:00
Damien Mathieu 44ea53bad8 Add support for Go 1.24 (#6304)
Co-authored-by: Robert Pająk <pellared@hotmail.com>
2025-02-13 10:31:16 +01:00
Tyler Yahn 3c1286a9ea Document and check resource comparability (#6272)
Ensure backwards compatibility by adding a compile-time check that the
Resource remains comparable.

Document the shortcomings of direct comparison of a Resource.

---------

Co-authored-by: Robert Pająk <pellared@hotmail.com>
2025-02-12 08:35:25 -08:00
Tyler Yahn fa5a782c57 Generate semconv/v1.30.0 (#6240)
Resolve #6227 

Generates the v1.30.0 version of semantic conventions in the added
go.opentelemetry.io/otel/semconv/v1.30.0 package.

Note: `v1.29.0` is skipped
(https://github.com/open-telemetry/opentelemetry-go/issues/6228)

## Key differences from `v1.28.0`

### Deprecated and dropped in `v1.30.0`

- `CodeColumn`
- `CodeColumnKey`
- `CodeFunction`
- `CodeFunctionKey`
- `DBCassandraConsistencyLevelAll`
- `DBCassandraConsistencyLevelAny`
- `DBCassandraConsistencyLevelEachQuorum`
- `DBCassandraConsistencyLevelKey`
- `DBCassandraConsistencyLevelLocalOne`
- `DBCassandraConsistencyLevelLocalQuorum`
- `DBCassandraConsistencyLevelLocalSerial`
- `DBCassandraConsistencyLevelOne`
- `DBCassandraConsistencyLevelQuorum`
- `DBCassandraConsistencyLevelSerial`
- `DBCassandraConsistencyLevelThree`
- `DBCassandraConsistencyLevelTwo`
- `DBCassandraCoordinatorDC`
- `DBCassandraCoordinatorDCKey`
- `DBCassandraCoordinatorID`
- `DBCassandraCoordinatorIDKey`
- `DBCassandraIdempotence`
- `DBCassandraIdempotenceKey`
- `DBCassandraPageSize`
- `DBCassandraPageSizeKey`
- `DBCassandraSpeculativeExecutionCount`
- `DBCassandraSpeculativeExecutionCountKey`
- `DBCosmosDBClientID`
- `DBCosmosDBClientIDKey`
- `DBCosmosDBConnectionModeDirect`
- `DBCosmosDBConnectionModeGateway`
- `DBCosmosDBConnectionModeKey`
- `DBCosmosDBOperationTypeBatch`
- `DBCosmosDBOperationTypeCreate`
- `DBCosmosDBOperationTypeDelete`
- `DBCosmosDBOperationTypeExecute`
- `DBCosmosDBOperationTypeExecuteJavascript`
- `DBCosmosDBOperationTypeHead`
- `DBCosmosDBOperationTypeHeadFeed`
- `DBCosmosDBOperationTypeInvalid`
- `DBCosmosDBOperationTypeKey`
- `DBCosmosDBOperationTypePatch`
- `DBCosmosDBOperationTypeQuery`
- `DBCosmosDBOperationTypeQueryPlan`
- `DBCosmosDBOperationTypeRead`
- `DBCosmosDBOperationTypeReadFeed`
- `DBCosmosDBOperationTypeReplace`
- `DBCosmosDBOperationTypeUpsert`
- `DBCosmosDBRequestCharge`
- `DBCosmosDBRequestChargeKey`
- `DBCosmosDBRequestContentLength`
- `DBCosmosDBRequestContentLengthKey`
- `DBCosmosDBSubStatusCode`
- `DBCosmosDBSubStatusCodeKey`
- `DBElasticsearchNodeName`
- `DBElasticsearchNodeNameKey`
- `DBSystemAdabas`
- `DBSystemCache`
- `DBSystemCassandra`
- `DBSystemClickhouse`
- `DBSystemCloudscape`
- `DBSystemCockroachdb`
- `DBSystemColdfusion`
- `DBSystemCosmosDB`
- `DBSystemCouchDB`
- `DBSystemCouchbase`
- `DBSystemDb2`
- `DBSystemDerby`
- `DBSystemDynamoDB`
- `DBSystemEDB`
- `DBSystemElasticsearch`
- `DBSystemFilemaker`
- `DBSystemFirebird`
- `DBSystemFirstSQL`
- `DBSystemGeode`
- `DBSystemH2`
- `DBSystemHBase`
- `DBSystemHSQLDB`
- `DBSystemHanaDB`
- `DBSystemHive`
- `DBSystemInfluxdb`
- `DBSystemInformix`
- `DBSystemIngres`
- `DBSystemInstantDB`
- `DBSystemInterbase`
- `DBSystemIntersystemsCache`
- `DBSystemKey`
- `DBSystemMSSQL`
- `DBSystemMariaDB`
- `DBSystemMaxDB`
- `DBSystemMemcached`
- `DBSystemMongoDB`
- `DBSystemMssqlcompact`
- `DBSystemMySQL`
- `DBSystemNeo4j`
- `DBSystemNetezza`
- `DBSystemOpensearch`
- `DBSystemOracle`
- `DBSystemOtherSQL`
- `DBSystemPervasive`
- `DBSystemPointbase`
- `DBSystemPostgreSQL`
- `DBSystemProgress`
- `DBSystemRedis`
- `DBSystemRedshift`
- `DBSystemSpanner`
- `DBSystemSqlite`
- `DBSystemSybase`
- `DBSystemTeradata`
- `DBSystemTrino`
- `DBSystemVertica`
- `EventName`
- `EventNameKey`
- `ExceptionEscaped`
- `ExceptionEscapedKey`
- `GenAIOpenaiRequestSeed`
- `GenAIOpenaiRequestSeedKey`
- `ProcessExecutableBuildIDProfiling`
- `ProcessExecutableBuildIDProfilingKey`
- `SystemNetworkStateClose`
- `SystemNetworkStateCloseWait`
- `SystemNetworkStateClosing`
- `SystemNetworkStateDelete`
- `SystemNetworkStateEstablished`
- `SystemNetworkStateFinWait1`
- `SystemNetworkStateFinWait2`
- `SystemNetworkStateKey`
- `SystemNetworkStateLastAck`
- `SystemNetworkStateListen`
- `SystemNetworkStateSynRecv`
- `SystemNetworkStateSynSent`
- `SystemNetworkStateTimeWait`
- `VCSRepositoryChangeID`
- `VCSRepositoryChangeIDKey`
- `VCSRepositoryChangeTitle`
- `VCSRepositoryChangeTitleKey`
- `VCSRepositoryRefName`
- `VCSRepositoryRefNameKey`
- `VCSRepositoryRefRevision`
- `VCSRepositoryRefRevisionKey`
- `VCSRepositoryRefTypeBranch`
- `VCSRepositoryRefTypeKey`
- `VCSRepositoryRefTypeTag`

### Added in `v1.30.0`

- `AWSExtendedRequestID`
- `AWSExtendedRequestIDKey`
- `AzureClientID`
- `AzureClientIDKey`
- `AzureCosmosDBClientActiveInstanceCountDescription`
- `AzureCosmosDBClientActiveInstanceCountName`
- `AzureCosmosDBClientActiveInstanceCountUnit`
- `AzureCosmosDBClientOperationRequestChargeDescription`
- `AzureCosmosDBClientOperationRequestChargeName`
- `AzureCosmosDBClientOperationRequestChargeUnit`
- `AzureCosmosDBConnectionModeDirect`
- `AzureCosmosDBConnectionModeGateway`
- `AzureCosmosDBConnectionModeKey`
- `AzureCosmosDBConsistencyLevelBoundedStaleness`
- `AzureCosmosDBConsistencyLevelConsistentPrefix`
- `AzureCosmosDBConsistencyLevelEventual`
- `AzureCosmosDBConsistencyLevelKey`
- `AzureCosmosDBConsistencyLevelSession`
- `AzureCosmosDBConsistencyLevelStrong`
- `AzureCosmosDBOperationContactedRegions`
- `AzureCosmosDBOperationContactedRegionsKey`
- `AzureCosmosDBOperationRequestCharge`
- `AzureCosmosDBOperationRequestChargeKey`
- `AzureCosmosDBRequestBodySize`
- `AzureCosmosDBRequestBodySizeKey`
- `AzureCosmosDBResponseSubStatusCode`
- `AzureCosmosDBResponseSubStatusCodeKey`
- `CICDPipelineResultCancellation`
- `CICDPipelineResultError`
- `CICDPipelineResultFailure`
- `CICDPipelineResultKey`
- `CICDPipelineResultSkip`
- `CICDPipelineResultSuccess`
- `CICDPipelineResultTimeout`
- `CICDPipelineRunActiveDescription`
- `CICDPipelineRunActiveName`
- `CICDPipelineRunActiveUnit`
- `CICDPipelineRunDurationDescription`
- `CICDPipelineRunDurationName`
- `CICDPipelineRunDurationUnit`
- `CICDPipelineRunErrorsDescription`
- `CICDPipelineRunErrorsName`
- `CICDPipelineRunErrorsUnit`
- `CICDPipelineRunStateExecuting`
- `CICDPipelineRunStateFinalizing`
- `CICDPipelineRunStateKey`
- `CICDPipelineRunStatePending`
- `CICDSystemComponent`
- `CICDSystemComponentKey`
- `CICDSystemErrorsDescription`
- `CICDSystemErrorsName`
- `CICDSystemErrorsUnit`
- `CICDWorkerCountDescription`
- `CICDWorkerCountName`
- `CICDWorkerCountUnit`
- `CICDWorkerStateAvailable`
- `CICDWorkerStateBusy`
- `CICDWorkerStateKey`
- `CICDWorkerStateOffline`
- `CassandraConsistencyLevelAll`
- `CassandraConsistencyLevelAny`
- `CassandraConsistencyLevelEachQuorum`
- `CassandraConsistencyLevelKey`
- `CassandraConsistencyLevelLocalOne`
- `CassandraConsistencyLevelLocalQuorum`
- `CassandraConsistencyLevelLocalSerial`
- `CassandraConsistencyLevelOne`
- `CassandraConsistencyLevelQuorum`
- `CassandraConsistencyLevelSerial`
- `CassandraConsistencyLevelThree`
- `CassandraConsistencyLevelTwo`
- `CassandraCoordinatorDC`
- `CassandraCoordinatorDCKey`
- `CassandraCoordinatorID`
- `CassandraCoordinatorIDKey`
- `CassandraPageSize`
- `CassandraPageSizeKey`
- `CassandraQueryIdempotent`
- `CassandraQueryIdempotentKey`
- `CassandraSpeculativeExecutionCount`
- `CassandraSpeculativeExecutionCountKey`
- `CloudPlatformOracleCloudCompute`
- `CloudPlatformOracleCloudOke`
- `CloudProviderOracleCloud`
- `CodeColumnNumber`
- `CodeColumnNumberKey`
- `CodeFunctionName`
- `CodeFunctionNameKey`
- `ContainerUptimeDescription`
- `ContainerUptimeName`
- `ContainerUptimeUnit`
- `DBClientCosmosDBActiveInstanceCountDescription`
- `DBClientCosmosDBActiveInstanceCountName`
- `DBClientCosmosDBActiveInstanceCountUnit`
- `DBClientCosmosDBOperationRequestChargeDescription`
- `DBClientCosmosDBOperationRequestChargeName`
- `DBClientCosmosDBOperationRequestChargeUnit`
- `DBClientResponseReturnedRowsDescription`
- `DBClientResponseReturnedRowsName`
- `DBClientResponseReturnedRowsUnit`
- `DBQuerySummary`
- `DBQuerySummaryKey`
- `DBResponseReturnedRows`
- `DBResponseReturnedRowsKey`
- `DBSystemNameAWSDynamoDB`
- `DBSystemNameAWSRedshift`
- `DBSystemNameActianIngres`
- `DBSystemNameAzureCosmosDB`
- `DBSystemNameCassandra`
- `DBSystemNameClickhouse`
- `DBSystemNameCockroachdb`
- `DBSystemNameCouchDB`
- `DBSystemNameCouchbase`
- `DBSystemNameDerby`
- `DBSystemNameElasticsearch`
- `DBSystemNameFirebirdsql`
- `DBSystemNameGCPSpanner`
- `DBSystemNameGeode`
- `DBSystemNameH2database`
- `DBSystemNameHBase`
- `DBSystemNameHSQLDB`
- `DBSystemNameHive`
- `DBSystemNameIbmDb2`
- `DBSystemNameIbmInformix`
- `DBSystemNameIbmNetezza`
- `DBSystemNameInfluxdb`
- `DBSystemNameInstantDB`
- `DBSystemNameIntersystemsCache`
- `DBSystemNameKey`
- `DBSystemNameMariaDB`
- `DBSystemNameMemcached`
- `DBSystemNameMicrosoftSQLServer`
- `DBSystemNameMongoDB`
- `DBSystemNameMySQL`
- `DBSystemNameNeo4j`
- `DBSystemNameOpensearch`
- `DBSystemNameOracleDB`
- `DBSystemNameOtherSQL`
- `DBSystemNamePostgreSQL`
- `DBSystemNameRedis`
- `DBSystemNameSapHana`
- `DBSystemNameSapMaxDB`
- `DBSystemNameSoftwareagAdabas`
- `DBSystemNameSqlite`
- `DBSystemNameTeradata`
- `DBSystemNameTrino`
- `ElasticsearchNodeName`
- `ElasticsearchNodeNameKey`
- `FeatureFlagContextID`
- `FeatureFlagContextIDKey`
- `FeatureFlagEvaluationErrorMessage`
- `FeatureFlagEvaluationErrorMessageKey`
- `FeatureFlagEvaluationReasonCached`
- `FeatureFlagEvaluationReasonDefault`
- `FeatureFlagEvaluationReasonDisabled`
- `FeatureFlagEvaluationReasonError`
- `FeatureFlagEvaluationReasonKey`
- `FeatureFlagEvaluationReasonSplit`
- `FeatureFlagEvaluationReasonStale`
- `FeatureFlagEvaluationReasonStatic`
- `FeatureFlagEvaluationReasonTargetingMatch`
- `FeatureFlagEvaluationReasonUnknown`
- `FeatureFlagSetID`
- `FeatureFlagSetIDKey`
- `FeatureFlagVersion`
- `FeatureFlagVersionKey`
- `GenAIOpenaiResponseSystemFingerprint`
- `GenAIOpenaiResponseSystemFingerprintKey`
- `GenAIOperationNameEmbeddings`
- `GenAIRequestEncodingFormats`
- `GenAIRequestEncodingFormatsKey`
- `GenAIRequestSeed`
- `GenAIRequestSeedKey`
- `GenAISystemAWSBedrock`
- `GenAISystemAzAIInference`
- `GenAISystemAzAIOpenai`
- `GenAISystemDeepseek`
- `GenAISystemGemini`
- `GenAISystemGroq`
- `GenAISystemIbmWatsonxAI`
- `GenAISystemMistralAI`
- `GenAISystemPerplexity`
- `GenAISystemXai`
- `GeoContinentCodeAf`
- `GeoContinentCodeAn`
- `GeoContinentCodeAs`
- `GeoContinentCodeEu`
- `GeoContinentCodeKey`
- `GeoContinentCodeNa`
- `GeoContinentCodeOc`
- `GeoContinentCodeSa`
- `GeoCountryIsoCode`
- `GeoCountryIsoCodeKey`
- `GeoLocalityName`
- `GeoLocalityNameKey`
- `GeoLocationLat`
- `GeoLocationLatKey`
- `GeoLocationLon`
- `GeoLocationLonKey`
- `GeoPostalCode`
- `GeoPostalCodeKey`
- `GeoRegionIsoCode`
- `GeoRegionIsoCodeKey`
- `K8SCronJobActiveJobsDescription`
- `K8SCronJobActiveJobsName`
- `K8SCronJobActiveJobsUnit`
- `K8SDaemonSetCurrentScheduledNodesDescription`
- `K8SDaemonSetCurrentScheduledNodesName`
- `K8SDaemonSetCurrentScheduledNodesUnit`
- `K8SDaemonSetDesiredScheduledNodesDescription`
- `K8SDaemonSetDesiredScheduledNodesName`
- `K8SDaemonSetDesiredScheduledNodesUnit`
- `K8SDaemonSetMisscheduledNodesDescription`
- `K8SDaemonSetMisscheduledNodesName`
- `K8SDaemonSetMisscheduledNodesUnit`
- `K8SDaemonSetReadyNodesDescription`
- `K8SDaemonSetReadyNodesName`
- `K8SDaemonSetReadyNodesUnit`
- `K8SDeploymentAvailablePodsDescription`
- `K8SDeploymentAvailablePodsName`
- `K8SDeploymentAvailablePodsUnit`
- `K8SDeploymentDesiredPodsDescription`
- `K8SDeploymentDesiredPodsName`
- `K8SDeploymentDesiredPodsUnit`
- `K8SHpaCurrentPodsDescription`
- `K8SHpaCurrentPodsName`
- `K8SHpaCurrentPodsUnit`
- `K8SHpaDesiredPodsDescription`
- `K8SHpaDesiredPodsName`
- `K8SHpaDesiredPodsUnit`
- `K8SHpaMaxPodsDescription`
- `K8SHpaMaxPodsName`
- `K8SHpaMaxPodsUnit`
- `K8SHpaMinPodsDescription`
- `K8SHpaMinPodsName`
- `K8SHpaMinPodsUnit`
- `K8SJobActivePodsDescription`
- `K8SJobActivePodsName`
- `K8SJobActivePodsUnit`
- `K8SJobDesiredSuccessfulPodsDescription`
- `K8SJobDesiredSuccessfulPodsName`
- `K8SJobDesiredSuccessfulPodsUnit`
- `K8SJobFailedPodsDescription`
- `K8SJobFailedPodsName`
- `K8SJobFailedPodsUnit`
- `K8SJobMaxParallelPodsDescription`
- `K8SJobMaxParallelPodsName`
- `K8SJobMaxParallelPodsUnit`
- `K8SJobSuccessfulPodsDescription`
- `K8SJobSuccessfulPodsName`
- `K8SJobSuccessfulPodsUnit`
- `K8SNamespacePhaseActive`
- `K8SNamespacePhaseDescription`
- `K8SNamespacePhaseKey`
- `K8SNamespacePhaseName`
- `K8SNamespacePhaseTerminating`
- `K8SNamespacePhaseUnit`
- `K8SNodeNetworkErrorsDescription`
- `K8SNodeNetworkErrorsName`
- `K8SNodeNetworkErrorsUnit`
- `K8SNodeNetworkIoDescription`
- `K8SNodeNetworkIoName`
- `K8SNodeNetworkIoUnit`
- `K8SNodeUptimeDescription`
- `K8SNodeUptimeName`
- `K8SNodeUptimeUnit`
- `K8SPodNetworkErrorsDescription`
- `K8SPodNetworkErrorsName`
- `K8SPodNetworkErrorsUnit`
- `K8SPodNetworkIoDescription`
- `K8SPodNetworkIoName`
- `K8SPodNetworkIoUnit`
- `K8SPodUptimeDescription`
- `K8SPodUptimeName`
- `K8SPodUptimeUnit`
- `K8SReplicaSetAvailablePodsDescription`
- `K8SReplicaSetAvailablePodsName`
- `K8SReplicaSetAvailablePodsUnit`
- `K8SReplicaSetDesiredPodsDescription`
- `K8SReplicaSetDesiredPodsName`
- `K8SReplicaSetDesiredPodsUnit`
- `K8SReplicationControllerAvailablePodsDescription`
- `K8SReplicationControllerAvailablePodsName`
- `K8SReplicationControllerAvailablePodsUnit`
- `K8SReplicationControllerDesiredPodsDescription`
- `K8SReplicationControllerDesiredPodsName`
- `K8SReplicationControllerDesiredPodsUnit`
- `K8SStatefulSetCurrentPodsDescription`
- `K8SStatefulSetCurrentPodsName`
- `K8SStatefulSetCurrentPodsUnit`
- `K8SStatefulSetDesiredPodsDescription`
- `K8SStatefulSetDesiredPodsName`
- `K8SStatefulSetDesiredPodsUnit`
- `K8SStatefulSetReadyPodsDescription`
- `K8SStatefulSetReadyPodsName`
- `K8SStatefulSetReadyPodsUnit`
- `K8SStatefulSetUpdatedPodsDescription`
- `K8SStatefulSetUpdatedPodsName`
- `K8SStatefulSetUpdatedPodsUnit`
- `NetworkConnectionStateCloseWait`
- `NetworkConnectionStateClosed`
- `NetworkConnectionStateClosing`
- `NetworkConnectionStateEstablished`
- `NetworkConnectionStateFinWait1`
- `NetworkConnectionStateFinWait2`
- `NetworkConnectionStateKey`
- `NetworkConnectionStateLastAck`
- `NetworkConnectionStateListen`
- `NetworkConnectionStateSynReceived`
- `NetworkConnectionStateSynSent`
- `NetworkConnectionStateTimeWait`
- `NetworkInterfaceName`
- `NetworkInterfaceNameKey`
- `ProcessExecutableBuildIDHtlhash`
- `ProcessExecutableBuildIDHtlhashKey`
- `ProcessLinuxCgroup`
- `ProcessLinuxCgroupKey`
- `ProfileFrameTypeBeam`
- `SecurityRuleCategory`
- `SecurityRuleCategoryKey`
- `SecurityRuleDescription`
- `SecurityRuleDescriptionKey`
- `SecurityRuleLicense`
- `SecurityRuleLicenseKey`
- `SecurityRuleName`
- `SecurityRuleNameKey`
- `SecurityRuleReference`
- `SecurityRuleReferenceKey`
- `SecurityRuleRulesetName`
- `SecurityRuleRulesetNameKey`
- `SecurityRuleUUID`
- `SecurityRuleUUIDKey`
- `SecurityRuleVersion`
- `SecurityRuleVersionKey`
- `SystemUptimeDescription`
- `SystemUptimeName`
- `SystemUptimeUnit`
- `UserAgentSyntheticTypeBot`
- `UserAgentSyntheticTypeKey`
- `UserAgentSyntheticTypeTest`
- `VCSChangeCountDescription`
- `VCSChangeCountName`
- `VCSChangeCountUnit`
- `VCSChangeDurationDescription`
- `VCSChangeDurationName`
- `VCSChangeDurationUnit`
- `VCSChangeID`
- `VCSChangeIDKey`
- `VCSChangeStateClosed`
- `VCSChangeStateKey`
- `VCSChangeStateMerged`
- `VCSChangeStateOpen`
- `VCSChangeStateWip`
- `VCSChangeTimeToApprovalDescription`
- `VCSChangeTimeToApprovalName`
- `VCSChangeTimeToApprovalUnit`
- `VCSChangeTimeToMergeDescription`
- `VCSChangeTimeToMergeName`
- `VCSChangeTimeToMergeUnit`
- `VCSChangeTitle`
- `VCSChangeTitleKey`
- `VCSContributorCountDescription`
- `VCSContributorCountName`
- `VCSContributorCountUnit`
- `VCSLineChangeTypeAdded`
- `VCSLineChangeTypeKey`
- `VCSLineChangeTypeRemoved`
- `VCSRefBaseName`
- `VCSRefBaseNameKey`
- `VCSRefBaseRevision`
- `VCSRefBaseRevisionKey`
- `VCSRefBaseTypeBranch`
- `VCSRefBaseTypeKey`
- `VCSRefBaseTypeTag`
- `VCSRefCountDescription`
- `VCSRefCountName`
- `VCSRefCountUnit`
- `VCSRefHeadName`
- `VCSRefHeadNameKey`
- `VCSRefHeadRevision`
- `VCSRefHeadRevisionKey`
- `VCSRefHeadTypeBranch`
- `VCSRefHeadTypeKey`
- `VCSRefHeadTypeTag`
- `VCSRefLinesDeltaDescription`
- `VCSRefLinesDeltaName`
- `VCSRefLinesDeltaUnit`
- `VCSRefRevisionsDeltaDescription`
- `VCSRefRevisionsDeltaName`
- `VCSRefRevisionsDeltaUnit`
- `VCSRefTimeDescription`
- `VCSRefTimeName`
- `VCSRefTimeUnit`
- `VCSRefTypeBranch`
- `VCSRefTypeKey`
- `VCSRefTypeTag`
- `VCSRepositoryCountDescription`
- `VCSRepositoryCountName`
- `VCSRepositoryCountUnit`
- `VCSRepositoryName`
- `VCSRepositoryNameKey`
- `VCSRevisionDeltaDirectionAhead`
- `VCSRevisionDeltaDirectionBehind`
- `VCSRevisionDeltaDirectionKey`
2025-02-04 07:52:00 -08:00