-
Notifications
You must be signed in to change notification settings - Fork 183
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Modeling the body
of a Semantic Convention
#755
Comments
What drives the desire to describe full structure in yaml? "foo" : {"bar": [1,2,3,4,5], "baz":{ ......}} There are big projects like json-schema that describe arbitrary schemas, can we reuse what they offer? What would be broken if we did this: body:
schema: link-to-schema goes here, e.g. https://support.google.com/analytics/answer/9216061#page_view
brief: <brief>
note: <note>
examples: [<examples>] then schema can be external to otel or I feel this would be the least controversial, easy to implement and use solution that can also be evolved to support stricter schema definitions. I wonder if it'd be enough as a first step. |
or even body:
brief: <brief>. link-to-schema goes here, e.g. https://support.google.com/analytics/answer/9216061#page_view
note: <note>
examples: [<examples>] |
Personally, I would like the body to be represented in yaml. Having the body represented in yaml means that types will be generated and IDEs can use those to auto-complete what we would expect to be in the body of an event we define. If the body is just described in markdown, there is really nothing there "enforcing" the contents of the body for our defined events. For the representation of body, I think we should keep it simple and stick with a collection of key/value pairs. I understand that this is not going to please everyone but it keeps our implementation simple in lieu of "body" being four possible data types and backends having to check the type for every event. I understand that having body as
There are possible performance impacts if an event is excessively deep (nesting) or wide (flattened number of attributes). However, I think this needs to fall on the consumer of the API to control. If the consumer creates an event that has a degree of nesting/breadth that it does cause a performance issue, it must fall on them to fix that and the API should not try to catch/prevent this performance issue. We can recommend a max depth/breadth but should not force it in code. With a recommendation, we can question any future PRs for defined events that exceed the recommendation. |
To clarify my previous comment:
|
I've just Updated the description of the issue to address and clarify some questions from the Event WG today, the changes are
The intent of this issue is so that we can identify a path forward, and not necessarily to describe every possible option and enforce that as the Semantic Convention for As long as we can agree that we can define an optional Apart from the auto generation as already described, the main reason for raising this (and the (now linked) example draft build-tools PR) is that our previous attempts (years ago) to create simple free-form markdown definitions to describe the While free-form markdown describing the "fields" is a possible option, it would still leave gaps for the code generation / validation, and we should really define a structure / guidance on what that "free-form" markdown should follow (IMHO). |
A few thoughts:
Should this be "unique to the event.id" ?
Don't we need
This is an oddity here. We, theoretically, disallow heterogeneous lists. Personally, I'd prefer typed lists here (with an explicit list[any] if we ever allow that). |
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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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="open-telemetry/semantic-conventions#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>
I'd like to push back a little on
vs.
That is - should we represent "Any" directly in body and be able to annotate or notes that? Looking in the code, I understand thing will need to be disjoint, but I also don't think we have a good answer for nested maps and types. I'd rather introduce one modelling concept for |
+1 for body:
type: map
brief:
notes:
fields: I assume we'd rarely have anything except we can always do Things get complicated the moment we get to complex types in arrays or maps either way (with extra |
Possible combinations for supporting "Any" value, following the examples / suggestions above. - id: single.field.primitive.or.array.body
body:
brief: ... for the body / field ...
note: ... for the body / field ...
type: boolean | boolean[] | int | int[] | double | double[] | string | string[]
# Extending to support "map" (fields)
- id: nested.map.of.primitives.or.array.body
body:
brief: ... for the body (any value) ...
note: ... for the body (any value) ...
type: map | map[]
id: map_name???
fields:
- id: field1
type: boolean | boolean[] | int | int[] | double | double[] | string | string[] | any_value
brief: ... for the field ...
examples: ... for the field ...
- id: nested_map
brief: ... for the field ...
examples: ... for the field ...
type: map
fields:
- id: nested_field1
type: boolean | boolean[] | int | int[] | double | double[] | string | string[] | any_value
brief: ... for the field ...
examples: ... for the field ...
- id: nested_field2
type: boolean | boolean[] | int | int[] | double | double[] | string | string[] | any_value
brief: ... for the field ...
examples: ... for the field ...
- id: nested_enum_name1
type:
allow_custom_values: true
members:
- id: feature1
value: "f1"
- id: feature2
value: "f2"
- id: nested_map_array
type: map[]
fields:
- id: nested_map_array_field1
type: boolean | boolean[] | int | int[] | double | double[] | string | string[] | any_value
brief: ... for the field ...
examples: ... for the field ...
- id: nested_map_array_field2
type: boolean | boolean[] | int | int[] | double | double[] | string | string[] | any_value
brief: ... for the field ...
examples: ... for the field ... |
Implemented in weaver 0.10.0 |
What are you trying to achieve?
With the definition of Events storing their payload into the Log Body as defined in Semantic Conventions and as part of the Event Api there is a need to identify "how" the payload is described and encoded so that implementers and downstream consumers have a deterministic method of defining, decoding, processing and possible validating the content.
Therefore, we need to have a consistent way to describe the Log
body
.There are 2 levels of definition that need to be considered, this issue will only focus on the Data Modeling of the
body
and not the transport encoding.body
described in semantic conventions from a data model perspective for yaml, code generation and documentationbody
of the LogAs the
body
is defined as an<any>
we need to define how thebody
will be described in yaml and ultimately encoded for transportation.Data Model
The
body
of a Log is defined as avalue
of type<any>
which means that it can be a complex type that needs to be described in a consistent manner.The following are some possible yaml representations for the
body
of a Log describing the expected content of the contents that will be included. These is based on the assumption that thebody
is a single value that can be described as amap<string, any>
,array<any>
,<scalar value>
or a<byte array>
.Basic Modeling Rules
body
definition is unique only to the encompassing Semantic Convention that is declaring it.id
assigned to thebody
definition, as it cannot be shared with other Data Models.body
definitions may define the same or similar structure, but they will be considered to be unique to the encompassing Semantic Convention.Extensions to theses basic modeling rules will be defined for each of the possible
body
definitions and can be extended in future releases of the specification if required.map< string, any >
Additional Modeling Rules
body
definition may have multiplefield
definitions.field
definition within thebody
definition is unique to the encompassingbody
definition and may include anid
that is unique to thebody
definition only.body
definition are not global and are not available outside of their declaredbody
definition. ie. They are not part of the global semantic conventions attributes.Fields
within differentbody
definitions may re-use the sameid
as they are unique to the encompassingbody
definition only, are not global and should not be considered as the samefield
definition.id
defined within thebody
definition SHOULD not repeated withing the samefields
definition.Where
fields
is a list offield
definitions where eachfield
has anid
that represents thekey
of the map and is described in the same manner as anAttribute
with the biggest difference that the describedfields
are NOT added to the global semantic conventions attributes but are instead associated with thebody
of the encompassing Log.Examples of using
fields
in a full semantic convention definition can be found in the Build tools draft PR to add log_event supportThis is the primary proposal for the
event working group
to support defining thebody
of an event in a consistent manner, so that it can be used for code generation, documentation and validation.Open Questions
fields
be allowed? ie.map<string, <any>>
within thefields
definition.map<string, <any>>
, should the<any>
be limited to not support nesting (map<string, <any>>
) or do we allow the values to be encoded based on the identified "standard".array< any >
For completeness to describe the support OTLP protocol, it is possible to have an array of
values
as thebody
of a Log. This would be a list ofvalues
that are of type<any>
.Where
array
represents that there will be an unspecified list ofvalues
of type<any>
, while it would contain the detail fields of anAttribute
(brief, note, examples, etc) it would NOT provide anid
. As thearray would assume to be numeric index based. Specific example will be required to identify if there are any specific "fields" that are expected to be present in the array. Like min/max length, min/max values, etc.
Open Question
values
that may be present in the array, along with additional attributes (Like min/max length, min/max values, etc).scalar value
Also For completeness to describe the support OTLP protocol, it is possible to have an array of
values
as thebody
of a Log. This would be a list ofvalues
that are of type<any>
.Where
<value>
is described in the same manner as anAttribute
and as with thearray
it would not include theid
(key).byte array
Also For completeness to describe the support OTLP protocol, it is possible to have an array of
values
as thebody
of a Log. This would be a list ofvalues
that are of type<any>
.This could also be rolled into the
value
definition as atype
ofbinary
but it may be better to have it as a separate definition to make it clear that thevalue
is a binary blob.Where
binary
is described in the same manner as anAttribute
and as with thearray
it would not include theid
(key).The text was updated successfully, but these errors were encountered: