diff --git a/CHANGELOG.md b/CHANGELOG.md index cafe951dd70..14353e4ecb7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -194,10 +194,10 @@ release. ### Compatibility -- Flexibilie escaping of characters that are discouraged by Prometheus Conventions +- Introduced flexible escaping of characters that are discouraged by Prometheus Conventions in Prometheus exporters. ([#4533](https://github.com/open-telemetry/opentelemetry-specification/pull/4533)) -- Flexibilize addition of unit/type related suffixes in Prometheus exporters. +- Introduced flexible addition of unit/type related suffixes in Prometheus exporters. ([#4533](https://github.com/open-telemetry/opentelemetry-specification/pull/4533)) - Define the configuration option "Translation Strategies" for Prometheus exporters. ([#4533](https://github.com/open-telemetry/opentelemetry-specification/pull/4533)) @@ -611,7 +611,7 @@ release. ### Compatibility -- Clarify prometheus exporter should have `host` and `port` configuration options. +- Clarify Prometheus exporter should have `host` and `port` configuration options. ([#4147](https://github.com/open-telemetry/opentelemetry-specification/pull/4147)) ### Common @@ -793,7 +793,7 @@ release. ([#3945](https://github.com/open-telemetry/opentelemetry-specification/pull/3945)) - Prometheus: represent Prometheus Info, StateSet and Unknown-typed metrics in OTLP. ([#3868](https://github.com/open-telemetry/opentelemetry-specification/pull/3868)) -- Update and reorganize the prometheus sdk exporter specification. +- Update and reorganize the Prometheus sdk exporter specification. ([#3872](https://github.com/open-telemetry/opentelemetry-specification/pull/3872)) ### SDK Configuration @@ -993,7 +993,7 @@ release. - Add optional configuration for Prometheus exporters to promote resource attributes to metric attributes ([#3761](https://github.com/open-telemetry/opentelemetry-specification/pull/3761)) -- Clarifications and flexibility in Exemplar speicification. +- Clarifications and flexibility in Exemplar specification. ([#3760](https://github.com/open-telemetry/opentelemetry-specification/pull/3760)) ### Logs @@ -1197,7 +1197,7 @@ release. - No changes. -### Supplemenatary Guidelines +### Supplementary Guidelines - No changes. @@ -1252,7 +1252,7 @@ release. - No changes. -### Supplemenatary Guidelines +### Supplementary Guidelines - No changes. @@ -1313,7 +1313,7 @@ release. - No changes. -### Supplemenatary Guidelines +### Supplementary Guidelines - No changes. @@ -1363,7 +1363,7 @@ release. namespaces. ([#3507](https://github.com/open-telemetry/opentelemetry-specification/pull/3507)) -### Supplemenatary Guidelines +### Supplementary Guidelines - No changes. @@ -1442,7 +1442,7 @@ release. - Add log entries to specification README.md contents. ([#3435](https://github.com/open-telemetry/opentelemetry-specification/pull/3435)) -### Supplemenatary Guidelines +### Supplementary Guidelines - Add guidance to use service-supported propagation formats as default for AWS SDK client calls. ([#3212](https://github.com/open-telemetry/opentelemetry-specification/pull/3212)) @@ -1583,13 +1583,13 @@ release. - Move X-Ray Env Variable propagation to span link instead of parent for AWS Lambda. ([#3166](https://github.com/open-telemetry/opentelemetry-specification/pull/3166)) -- Add heroku resource semantic conventions. +- Add Heroku resource semantic conventions. [#3075](https://github.com/open-telemetry/opentelemetry-specification/pull/3075) -- BREAKING: Rename faas.execution to faas.invocation_id +- BREAKING: Rename `faas.execution` to `faas.invocation_id` ([#3209](https://github.com/open-telemetry/opentelemetry-specification/pull/3209)) -- BREAKING: Change faas.max_memory units to Bytes instead of MB +- BREAKING: Change `faas.max_memory` units to Bytes instead of MB ([#3209](https://github.com/open-telemetry/opentelemetry-specification/pull/3209)) -- BREAKING: Expand scope of faas.id to cloud.resource_id +- BREAKING: Expand scope of `faas.id` to `cloud.resource_id` ([#3188](https://github.com/open-telemetry/opentelemetry-specification/pull/3188)) - Add Connect RPC specific conventions ([#3116](https://github.com/open-telemetry/opentelemetry-specification/pull/3116)) @@ -1689,7 +1689,7 @@ release. - Add condition with sum and count for Prometheus summaries ([3059](https://github.com/open-telemetry/opentelemetry-specification/pull/3059)). -- Clarify prometheus unit conversions +- Clarify Prometheus unit conversions ([#3066](https://github.com/open-telemetry/opentelemetry-specification/pull/3066)). - Define conversion mapping from OTel Exponential Histograms to Prometheus Native Histograms. @@ -1932,7 +1932,7 @@ release. ([#2874](https://github.com/open-telemetry/opentelemetry-specification/pull/2874)) - Add `process.paging.faults` metric to semantic conventions ([#2827](https://github.com/open-telemetry/opentelemetry-specification/pull/2827)) -- Define semantic conventions yaml for non-otlp conventions +- Define semantic conventions yaml for Non-OTLP conventions ([#2850](https://github.com/open-telemetry/opentelemetry-specification/pull/2850)) - Add more semantic convetion attributes of Apache RocketMQ ([#2881](https://github.com/open-telemetry/opentelemetry-specification/pull/2881)) @@ -1977,7 +1977,7 @@ release. - Changed the default buckets for Explicit Bucket Histogram to better match the official Prometheus clients. ([#2770](https://github.com/open-telemetry/opentelemetry-specification/pull/2770)). -- Fix OpenMetrics valid label keys, and specify prometheus conversion for metric name. +- Fix OpenMetrics valid label keys, and specify Prometheus conversion for metric name. ([#2788](https://github.com/open-telemetry/opentelemetry-specification/pull/2788)) ### Logs @@ -2230,7 +2230,7 @@ release. ### Common -- Move non-otlp.md to common directory +- Move `non-otlp.md` to common directory ([#2587](https://github.com/open-telemetry/opentelemetry-specification/pull/2587)). ## v1.11.0 (2022-05-04) @@ -2339,7 +2339,7 @@ release. ([#2317](https://github.com/open-telemetry/opentelemetry-specification/pull/2317)). - Clarify that expectations for user callback behavior are documentation REQUIREMENTs. ([#2361](https://github.com/open-telemetry/opentelemetry-specification/pull/2361)). -- Specify how to handle prometheus exemplar timestamp and attributes +- Specify how to handle Prometheus exemplar timestamp and attributes ([#2376](https://github.com/open-telemetry/opentelemetry-specification/pull/2376)) - Clarify that the periodic metric reader is the default metric reader to be paired with push metric exporters (OTLP, stdout, in-memory) @@ -2348,7 +2348,7 @@ release. ([#2380](https://github.com/open-telemetry/opentelemetry-specification/pull/2380)) - Clarify that MetricReader has one-to-one mapping to MeterProvider. ([#2406](https://github.com/open-telemetry/opentelemetry-specification/pull/2406)). -- For prometheus metrics without sums, leave the sum unset +- For Prometheus metrics without sums, leave the sum unset ([#2413](https://github.com/open-telemetry/opentelemetry-specification/pull/2413)) - Specify default configuration for a periodic metric reader that is associated with the stdout metric exporter. @@ -2599,7 +2599,7 @@ release. ([#1945](https://github.com/open-telemetry/opentelemetry-specification/pull/1945)) - Add "IBM z/Architecture" (`s390x`) to `host.arch` ([#2055](https://github.com/open-telemetry/opentelemetry-specification/pull/2055)) -- BREAKING: Remove db.cassandra.keyspace and db.hbase.namespace, and clarify db.name +- BREAKING: Remove `db.cassandra.keyspace` and `db.hbase.namespace`, and clarify db.name ([#1973](https://github.com/open-telemetry/opentelemetry-specification/pull/1973)) - Add AWS App Runner as a cloud platform ([#2004](https://github.com/open-telemetry/opentelemetry-specification/pull/2004)) @@ -2703,7 +2703,7 @@ Added telemetry schemas documents to the specification ([#2008](https://github.c ### OpenTelemetry Protocol - Add environment variables for configuring the OTLP exporter protocol (`grpc`, `http/protobuf`, `http/json`) ([#1880](https://github.com/open-telemetry/opentelemetry-specification/pull/1880)) -- Allow implementations to use their own default for OTLP compression, with `none` denotating no compression +- Allow implementations to use their own default for OTLP compression, with `none` indicating no compression ([#1923](https://github.com/open-telemetry/opentelemetry-specification/pull/1923)) - Clarify OTLP server components MUST support none/gzip compression ([#1955](https://github.com/open-telemetry/opentelemetry-specification/pull/1955)) @@ -2747,7 +2747,7 @@ Added telemetry schemas documents to the specification ([#2008](https://github.c ### Semantic Conventions - Add mobile-related network state: `net.host.connection.type`, `net.host.connection.subtype` & `net.host.carrier.*` [#1647](https://github.com/open-telemetry/opentelemetry-specification/issues/1647) -- Adding alibaba cloud as a cloud provider. +- Adding Alibaba cloud as a cloud provider. ([#1831](https://github.com/open-telemetry/opentelemetry-specification/pull/1831)) ### Compatibility @@ -2822,7 +2822,7 @@ Added telemetry schemas documents to the specification ([#2008](https://github.c ### Traces - Add schema_url support to `Tracer`. ([#1666](https://github.com/open-telemetry/opentelemetry-specification/pull/1666)) -- Add Dropped Links Count to non-otlp exporters section ([#1697](https://github.com/open-telemetry/opentelemetry-specification/pull/1697)) +- Add Dropped Links Count to Non-OTLP exporters section ([#1697](https://github.com/open-telemetry/opentelemetry-specification/pull/1697)) - Add note about reporting dropped counts for attributes, events, links. ([#1699](https://github.com/open-telemetry/opentelemetry-specification/pull/1699)) ### Metrics @@ -3075,7 +3075,7 @@ New: ([#1066](https://github.com/open-telemetry/opentelemetry-specification/pull/1066)) - Change Status to be consistent with Link and Event ([#1067](https://github.com/open-telemetry/opentelemetry-specification/pull/1067)) -- Clarify env variables in otlp exporter +- Clarify env variables in OTLP exporter ([#975](https://github.com/open-telemetry/opentelemetry-specification/pull/975)) - Add Prometheus exporter environment variables ([#1021](https://github.com/open-telemetry/opentelemetry-specification/pull/1021)) @@ -3319,7 +3319,7 @@ Updates: - [OTEP-0002](oteps/trace/0002-remove-spandata.md): Removed SpanData interface in favor of Span Start and End options. - [OTEP-0003](oteps/metrics/0003-measure-metric-type.md) - Consolidatesd pre-aggregated and raw metrics APIs. + Consolidated pre-aggregated and raw metrics APIs. - [OTEP-0008](oteps/metrics/0008-metric-observer.md) Added Metrics Observers API. - [OTEP-0009](oteps/metrics/0009-metric-handles.md) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5df81c8a1fb..8dc13c3fddc 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -312,7 +312,7 @@ Release Procedure: (e.g., in the last released version rather than Unreleased). 4. Add the changelog entries from `CHANGELOG.md` to the description of the [release PR]( - https://github.com/open-telemetry/opentelemetry-specification/releases) and undraft it. + https://github.com/open-telemetry/opentelemetry-specification/releases) and un-draft it. 5. Once it is approved, confirm the date in the CHANGELOG is up-to-date, and merge it, creating a new release tag, e.g. "v1.50.0", containing the CHANGELOG contents. diff --git a/development/trace/zpages.md b/development/trace/zpages.md index 8e5f8ce2b22..c72b5329fb9 100644 --- a/development/trace/zpages.md +++ b/development/trace/zpages.md @@ -1,3 +1,4 @@ + # zPages ## Table of Contents diff --git a/oteps/0001-telemetry-without-manual-instrumentation.md b/oteps/0001-telemetry-without-manual-instrumentation.md index 1af631d251b..61999a80331 100644 --- a/oteps/0001-telemetry-without-manual-instrumentation.md +++ b/oteps/0001-telemetry-without-manual-instrumentation.md @@ -43,7 +43,7 @@ Without further ado, here are a set of requirements for “official” OpenTelem * Note that this also makes it easy to test against multiple different versions of any given library * A fully pluggable architecture, where plugins can be registered at runtime without requiring changes to the central repo at github.com/open-telemetry * E.g., for ops teams that want to write a plugin for a proprietary piece of legacy software they are unable to recompile -* Augemntation of whitebox instrumentation by blackbox instrumentation (or, perhaps, vice versa). That is, not only can the trace context be shared by these different flavors of instrumentation, but even things like in-flight Span objects can be shared and co-modified (e.g., to use runtime interposition to grab local variables and attach them to a manually-instrumented span). +* Augmentation of whitebox instrumentation by blackbox instrumentation (or, perhaps, vice versa). That is, not only can the trace context be shared by these different flavors of instrumentation, but even things like in-flight Span objects can be shared and co-modified (e.g., to use runtime interposition to grab local variables and attach them to a manually-instrumented span). ## Trade-offs and mitigations diff --git a/oteps/0016-named-tracers.md b/oteps/0016-named-tracers.md index d25734f2489..ee3dcd168f0 100644 --- a/oteps/0016-named-tracers.md +++ b/oteps/0016-named-tracers.md @@ -1,6 +1,6 @@ # Named Tracers and Meters -_Associate Tracers and Meters with the name and version of the instrumentation library which reports telemetry data by parameterizing the API which the library uses to acquire the Tracer or Meter._ +_Associate Tracers and Meters with the name and version of the instrumentation library which reports telemetry data by parameterization of the API which the library uses to acquire the Tracer or Meter._ ## Suggested reading @@ -50,7 +50,7 @@ Meter meter = OpenTelemetry.getMeterProvider().getMeter("io.opentelemetry.contri These factories (`TracerProvider` and `MeterProvider`) replace the global `Tracer` / `Meter` singleton objects as ubiquitous points to request Tracer and Meter instances. - The _name_ used to create a Tracer or Meter must identify the _instrumentation_ libraries (also referred to as _integrations_) and not the library being instrumented. These instrumentation libraries could be libraries developed in an OpenTelemetry repository, a 3rd party implementation, or even auto-injected code (see [Open Telemetry Without Manual Instrumentation OTEP](https://github.com/open-telemetry/oteps/blob/main/text/0001-telemetry-without-manual-instrumentation.md)). See also the examples for identifiers at the end. + The _name_ used to create a Tracer or Meter must identify the _instrumentation_ libraries (also referred to as _integrations_) and not the library being instrumented. These instrumentation libraries could be libraries developed in an OpenTelemetry repository, a 3rd party implementation, or even auto-injected code (see [OpenTelemetry Without Manual Instrumentation OTEP](https://github.com/open-telemetry/oteps/blob/main/text/0001-telemetry-without-manual-instrumentation.md)). See also the examples for identifiers at the end. If a library (or application) has instrumentation built-in, it is both the instrumenting and instrumented library and should pass its own name here. In all other cases (and to distinguish them from that case), the distinction between instrumenting and instrumented library is very important. For example, if an HTTP library `com.example.http` is instrumented by either `io.opentelemetry.contrib.examplehttp`, then it is important that the Tracer is not named `com.example.http`, but `io.opentelemetry.contrib.examplehttp` after the actual instrumentation library. If no name (null or empty string) is specified, following the suggestions in ["error handling proposal"](https://github.com/open-telemetry/opentelemetry-specification/pull/153), a "smart default" will be applied and a default Tracer / Meter implementation is returned. @@ -68,7 +68,7 @@ Examples (based on existing contribution libraries from OpenTracing and OpenCens * `io.opentracing.contrib.asynchttpclient` * `io.opencensus.contrib.http.servlet` * `io.opencensus.contrib.spring.sleuth.v1x` -* `io.opencesus.contrib.http.jaxrs` +* `io.opencensus.contrib.http.jaxrs` * `github.com/opentracing-contrib/go-amqp` (Go) * `github.com/opentracing-contrib/go-grpc` (Go) * `OpenTracing.Contrib.NetCore.AspNetCore` (.NET) diff --git a/oteps/0035-opentelemetry-protocol.md b/oteps/0035-opentelemetry-protocol.md index 1c277a517e6..3292aeb888a 100644 --- a/oteps/0035-opentelemetry-protocol.md +++ b/oteps/0035-opentelemetry-protocol.md @@ -1,3 +1,4 @@ + # OpenTelemetry Protocol Specification **Author**: Tigran Najaryan, Omnition Inc. diff --git a/oteps/0066-separate-context-propagation.md b/oteps/0066-separate-context-propagation.md index d63362bbfe5..86dae81e4e5 100644 --- a/oteps/0066-separate-context-propagation.md +++ b/oteps/0066-separate-context-propagation.md @@ -96,7 +96,7 @@ When a span is started, a new context is returned, with the new span set as the current span. **`GetSpanPropagator() -> (HTTP_Extractor, HTTP_Injector)`** -When a span is extracted, the extracted value is stored in the context seprately +When a span is extracted, the extracted value is stored in the context separately from the current span. ### Correlations API diff --git a/oteps/0083-component.md b/oteps/0083-component.md index e29e6d90341..34b95919656 100644 --- a/oteps/0083-component.md +++ b/oteps/0083-component.md @@ -50,7 +50,7 @@ Application servers) every Application will have it's own `TracerProvider` and ## Internal details -This proposal affects only the OpenTelemtry protocol, and proposes a way to +This proposal affects only the OpenTelemetry protocol, and proposes a way to represent the telemetry data in a structured way. For example, here is the protobuf definition for metrics: metrics: diff --git a/oteps/0122-otlp-http-json.md b/oteps/0122-otlp-http-json.md index 1a655e379cb..f2a42d4d4ec 100644 --- a/oteps/0122-otlp-http-json.md +++ b/oteps/0122-otlp-http-json.md @@ -19,7 +19,7 @@ This is a proposal to add HTTP Transport extension supporting json serialization ## Motivation -Protobuf is a relatively big dependency, which some clients are not willing to take. For example, webjs, iOS/Android (in some scenarios, the size of the installation package is limited, do not want to introduce protobuf dependencies). Plain JSON is a smaller dependency and is built in the standard libraries of many programming languages. +Protobuf is a relatively big dependency, which some clients are not willing to take. For example, WebJS, iOS/Android (in some scenarios, the size of the installation package is limited, do not want to introduce protobuf dependencies). Plain JSON is a smaller dependency and is built in the standard libraries of many programming languages. ## OTLP/HTTP+JSON Protocol Details diff --git a/oteps/0149-exponential-histogram.md b/oteps/0149-exponential-histogram.md index 48a057f9f07..acf2ab3f884 100644 --- a/oteps/0149-exponential-histogram.md +++ b/oteps/0149-exponential-histogram.md @@ -70,7 +70,7 @@ The followings are restrictions of ExponentialBuckets: Merging histograms of different types, or even the same type, but with different parameters remains an issue. There are lengthy discussions in [#226](https://github.com/open-telemetry/opentelemetry-proto/pull/226#issuecomment-776526864) -Some merge method may introduce artifacts (information not present in original data). Generally, splitting a bucket introduces artifacts. For example, when using linear interpolation to split a bucket, we are assumming uniform distribution within the bucket. "Uniform distribution" is information not present in original data. Merging buckets on the other hand, does not introduce artifacts. Merging buckets with identical bounds from two histograms is totally artifact free. Merging multiple adjacent buckets in one histogram is also artifact free, but it does reduce the resolution of the histogram. Whether such a merge is "lossy" is arguable. Because of this ambiguity, the term "lossy" is not used in this doc. +Some merge method may introduce artifacts (information not present in original data). Generally, splitting a bucket introduces artifacts. For example, when using linear interpolation to split a bucket, we are assuming uniform distribution within the bucket. "Uniform distribution" is information not present in original data. Merging buckets on the other hand, does not introduce artifacts. Merging buckets with identical bounds from two histograms is totally artifact free. Merging multiple adjacent buckets in one histogram is also artifact free, but it does reduce the resolution of the histogram. Whether such a merge is "lossy" is arguable. Because of this ambiguity, the term "lossy" is not used in this doc. For exponential histograms, if base1 = base2 ^ N, where N is an integer, the two histograms can be merged without artifacts. Furthermore, we can introduce a series of bases where diff --git a/oteps/0182-otlp-remote-parent.md b/oteps/0182-otlp-remote-parent.md index 5bcfa3b1e50..972a4389ac8 100644 --- a/oteps/0182-otlp-remote-parent.md +++ b/oteps/0182-otlp-remote-parent.md @@ -117,7 +117,7 @@ The first property described by SpanKind reflects whether the Span is a "logical However, the specification stay ambiguous for the `CONSUMER` span kind with respect to the property of the "logical" remote parent. Nevertheless, the proposed field `parent_span_is_remote` has some overlap with that `SpanKind` property. -The specification would require some clearification on the `SpanKind` and its relation to `parent_span_is_remote`. +The specification would require some clarification on the `SpanKind` and its relation to `parent_span_is_remote`. ## Future possibilities diff --git a/oteps/0199-support-elastic-common-schema-in-opentelemetry.md b/oteps/0199-support-elastic-common-schema-in-opentelemetry.md index e497e8009d5..512e7407b3b 100644 --- a/oteps/0199-support-elastic-common-schema-in-opentelemetry.md +++ b/oteps/0199-support-elastic-common-schema-in-opentelemetry.md @@ -42,7 +42,7 @@ Adding the coverage of ECS to OTel would provide guidance to authors of OpenTele In addition to the use case of structured logs, the maturity of ECS for SIEM (Security Information and Event Management) is a great opportunity for OpenTelemetry to expand its scope to the security use cases. -Another significant use case is providing first-class support for Kubernetes application logs, system logs, and application introspection events. We would also like to see support for structured events (e.g. [k8seventsreceiver](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/k8seventsreceiver)) and using 'content-type' to identify event types. +Another significant use case is providing first-class support for Kubernetes application logs, system logs, and application introspection events. We would also like to see support for structured events (e.g. [`k8seventsreceiver`](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/k8seventsreceiver)) and using 'content-type' to identify event types. We'd like to see different categories of structured logs being well-supported in the [OTel Log Data Model](../specification/logs/data-model.md), presumably through [semantic conventions for log attributes](../specification/logs/data-model.md#field-attributes). For example, NGINX access logs and Apache access logs should be processed the same way as structured logs. This would help in trace and metric correlation with such log data as well as it would help grow the ecosystem of curated UIs provided by observability backends and monitoring dashboards (e.g. one single HTTP access log dashboard benefiting Apache httpd, Nginx, and HAProxy). diff --git a/oteps/0202-events-and-logs-api.md b/oteps/0202-events-and-logs-api.md index 189ef9b4eee..2b371a449dc 100644 --- a/oteps/0202-events-and-logs-api.md +++ b/oteps/0202-events-and-logs-api.md @@ -4,7 +4,7 @@ We introduce an Events and Logs API that is based on the OpenTelemetry Log signa ## Motivation -In OpenTelemetry's perspective Log Records and Events are different names for the same concept - however, there is a subtle difference in how they are represented using the underlying data model that is described below. We will describe why the existing Logging APIs are not sufficient for the purpose of creating events. It will then be evident that we will need an API in OpenTelementry for creating events. Note that the Events here refer to standalone Events and not to be confused with Span Events which occur only in the context of a span. +In OpenTelemetry's perspective Log Records and Events are different names for the same concept - however, there is a subtle difference in how they are represented using the underlying data model that is described below. We will describe why the existing Logging APIs are not sufficient for the purpose of creating events. It will then be evident that we will need an API in OpenTelemetry for creating events. Note that the Events here refer to standalone Events and not to be confused with Span Events which occur only in the context of a span. The Logs part of the API introduced here is supposed to be used only by the Log Appenders and end-users should continue to use the logging APIs available in the languages. diff --git a/oteps/0225-configuration.md b/oteps/0225-configuration.md index 84e18836294..e0e5653a865 100644 --- a/oteps/0225-configuration.md +++ b/oteps/0225-configuration.md @@ -300,7 +300,7 @@ In choosing to recommend JSON schema, the working group looked at the following * Tooling available for validating CUE files in languages outside of Go were limited. * Familiarity and learning curve would create problems for both users and contributors of OpenTelemetry. * [Protobuf](https://protobuf.dev) - With protobuf already used heavily in OpenTelemetry, the format was worth investigating as an option to define the schema. The working group decided against Protobuf because: - * Validation errors are the result of serlization errors which can be difficult to interpret. + * Validation errors are the result of serialization errors which can be difficult to interpret. * Limitations in the schema definition language result in poor ergonomics if type safety is to be retained. ## Open questions @@ -335,7 +335,7 @@ There are likely more questions related to the final design that will be discuss ### Additional configuration providers -Although the initial proposal for configuration supports only describes in-code and file representations, it's possible additional sources (remote, opamp, ...) for configuration will be desirable. The implementation of the configuration model and components should be extensible to allow for this. +Although the initial proposal for configuration supports only describes in-code and file representations, it's possible additional sources (remote, OpAMP, ...) for configuration will be desirable. The implementation of the configuration model and components should be extensible to allow for this. ### Integration with auto-instrumentation diff --git a/oteps/0227-separate-semantic-conventions.md b/oteps/0227-separate-semantic-conventions.md index 427c019d0e2..d0bc611b10c 100644 --- a/oteps/0227-separate-semantic-conventions.md +++ b/oteps/0227-separate-semantic-conventions.md @@ -63,7 +63,7 @@ required attribute names and their interaction with the SDK. The following process would be used to ensure semantic conventions are seamlessly moved to their new location. This process lists steps in order: -- A moratorium will be placed on Semantic Convention PRs to the specififcation +- A moratorium will be placed on Semantic Convention PRs to the specification repository. (Caveat that PRs related to this proposal would be allowed). - Interactions between Semantic Conventions and the Specification will be extracted such that the Specification can place requirements on Semantic diff --git a/oteps/0232-maturity-of-otel.md b/oteps/0232-maturity-of-otel.md index 660406fccfc..ac93aab8bcc 100644 --- a/oteps/0232-maturity-of-otel.md +++ b/oteps/0232-maturity-of-otel.md @@ -19,7 +19,7 @@ Deliverables of a SIG MUST have a declared maturity level, established by SIG ma * the Collector core distribution might declare itself stable and include a receiver that is not stable. In that case, the receiver has to be clearly marked as such * the Java Agent might be declared stable, while individual instrumentation packages are not -Components SHOULD NOT be marked as stable if their user-visible interfaces are not stable. For instance, if the Collector's component "otlpreceiver" declares a dependency on the OpenTelemetry Collector API "config" package which is marked with a maturity level of "beta", the "otlpreceiver" should be at most "beta". Maintainers are free to deviate from this recommendation if they believe users are not going to be affected by future changes. +Components SHOULD NOT be marked as stable if their user-visible interfaces are not stable. For instance, if the Collector's component `otlpreceiver` declares a dependency on the OpenTelemetry Collector API "config" package which is marked with a maturity level of "beta", the `otlpreceiver` should be at most "beta". Maintainers are free to deviate from this recommendation if they believe users are not going to be affected by future changes. For the purposes of this document, a breaking change is defined as a change that may require consumers of our components to adapt themselves in order to avoid disruption to their usage of our components. diff --git a/oteps/0266-move-oteps-to-spec.md b/oteps/0266-move-oteps-to-spec.md index 2bef2caa34d..4acd721b646 100644 --- a/oteps/0266-move-oteps-to-spec.md +++ b/oteps/0266-move-oteps-to-spec.md @@ -16,7 +16,7 @@ Originally, OTEPs were kept as a separate repository to keep disjoint/disruptive - OTEPs are expected to be directional and subject to change when actually entered into the specification. - OTEPs require more approvals than specification PRs -- OTEPs have different PR worklfows (whether due to accidental omission or conscious decision), e.g. staleness checks, linting. +- OTEPs have different PR workflows (whether due to accidental omission or conscious decision), e.g. staleness checks, linting. As OpenTelemetry is stabilizing, the need for OTEPs to live outside the specification is growing less, and we face challenges like: @@ -55,7 +55,7 @@ aspects of the current OTEP status. OTEPs were originally based on common enhancement proposal processes in other ecosystems, where enhancements live outside core repositories and follow a more rigorous criteria and evaluation. We are finding this problematic for OpenTelemetry for reasons discussed above. Additionally, unlike many other ecosystems where enhancement/design is kept separate from core code, OpenTelemetry *already* keeps its design separate form core code via the Specification vs. implementation repositories. Unlike these other OSS projects, our Specification generally requires rigorous discussion, design and prototyping prior to acceptance. Even -after acceptance into the specification, work is still required for improvements to roll out to the ecosystem. Effectively: The OpenTelemetry specification has no such thing as a "small" change: There are only medium changes that appear small, but would be enhancements in other proejcts or large changes that require an OTEP. +after acceptance into the specification, work is still required for improvements to roll out to the ecosystem. Effectively: The OpenTelemetry specification has no such thing as a "small" change: There are only medium changes that appear small, but would be enhancements in other projects or large changes that require an OTEP. ## Open questions diff --git a/oteps/assets/0225-config.yaml b/oteps/assets/0225-config.yaml index febfd3ee861..53ac90199a8 100644 --- a/oteps/assets/0225-config.yaml +++ b/oteps/assets/0225-config.yaml @@ -404,7 +404,7 @@ sdk: # # Environment variable: OTEL_BLRP_MAX_EXPORT_BATCH_SIZE max_export_batch_size: 512 - # Sets the exporter. Exporter must refer to a key in sdk.loger_provider.exporters. + # Sets the exporter. Exporter must refer to a key in sdk.logger_provider.exporters. # # Environment variable: OTEL_LOGS_EXPORTER exporter: otlp diff --git a/oteps/entities/0256-entities-data-model.md b/oteps/entities/0256-entities-data-model.md index 70d0fde0b5f..8fe55806e5b 100644 --- a/oteps/entities/0256-entities-data-model.md +++ b/oteps/entities/0256-entities-data-model.md @@ -611,7 +611,7 @@ virtually identical to what this OTEP proposes. There is also an implementation of this design in the Collector, see [completed issue to add entity events](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/23565) and [the PR](https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/24419) -that implements entity event emitting for k8scluster receiver in the Collector. +that implements entity event emitting for `k8scluster` receiver in the Collector. ## Alternatives diff --git a/oteps/entities/0264-resource-and-entities.md b/oteps/entities/0264-resource-and-entities.md index ab4eefd6f62..0cd055b79da 100644 --- a/oteps/entities/0264-resource-and-entities.md +++ b/oteps/entities/0264-resource-and-entities.md @@ -44,7 +44,7 @@ It is an expansion on the [previous entity proposal](0256-entities-data-model.md - [Trade-offs and mitigations](#trade-offs-and-mitigations) * [Why don't we download schema url contents?](#why-dont-we-download-schema-url-contents) - [Prior art and alternatives](#prior-art-and-alternatives) -- [Future Posibilities](#future-posibilities) +- [Future Possibilities](#future-possibilities) - [Use Cases](#use-cases) * [SDK - Multiple Detectors of the same Entity type](#sdk---multiple-detectors-of-the-same-entity-type) * [SDK and Collector - Simple coordination](#sdk-and-collector---simple-coordination) @@ -93,7 +93,7 @@ The SDK Resource Provider is responsible for running all configured Resource and - Resource detectors otherwise follow existing merge semantics. - The Specification merge rules will be updated to account for violations prevalent in ALL implementation of resource detection. - Specifically: This means the [rules around merging Resource across schema-url will be dropped](../../specification/resource/sdk.md#merge). Instead only conflicting attributes will be dropped. - - SchemaURL on Resource will be deprecated with entity-specific schema-url replacing it. SDKs will only fill out SchemaURL on Resource when SchemaURL matches across all entities discovered. Additionally, only existing stable resource attributes can be used in Resource SchemaURL in stable OpenTelemetry components (Specifially `service.*` and `sdk.*` are the only stabilized resource convnetions). Given prevalent concerns of implementations around Resource merge specification, we suspect impact of this deprecation to be minimal, and existing usage was within the "experimental" phase of semantic conventions. + - SchemaURL on Resource will be deprecated with entity-specific schema-url replacing it. SDKs will only fill out SchemaURL on Resource when SchemaURL matches across all entities discovered. Additionally, only existing stable resource attributes can be used in Resource SchemaURL in stable OpenTelemetry components (Specifically `service.*` and `sdk.*` are the only stabilized resource conventions). Given prevalent concerns of implementations around Resource merge specification, we suspect impact of this deprecation to be minimal, and existing usage was within the "experimental" phase of semantic conventions. - An OOTB ["Env Variable Entity Detector"](#environment-variable-detector) will be specified and provided vs. requiring SDK wide ENV variables for resource detection. - *Additionally, Resource Provider would be responsible for understanding Entity lifecycle events, for Entities whose lifetimes do not match or exceed the SDK's own lifetime (e.g. browser session).* @@ -123,7 +123,7 @@ We provide a simple algorithm for this behavior: - For each entity detector `D`, detect entities - For each entity detected, `d'` - If an entity `e'` exists in `E` with same entity type as `d'`, do one of the following: - - If the entity identiy and schema_url are the same, merge the descriptive attributes of `d'` into `e'`: + - If the entity identity and schema_url are the same, merge the descriptive attributes of `d'` into `e'`: - For each descriptive attribute `da'` in `d'` - If `da'.key` does not exist in `e'`, then add `da'` to `ei` - otherwise, ignore. @@ -187,7 +187,7 @@ processor: The list of detectors is given in priority order (first wins, in event of a tie, outside of override configuration). The processor may need to be updated to allow the override flag to apply to each individual detector. -The rules for attributes would follow entity merging rules, as defined for the SDK resource proivder. +The rules for attributes would follow entity merging rules, as defined for the SDK resource provider. Note: While this proposals shows a new processor replacing the `resourcedetection` processor, the details of whether to modify-in-place the existing `resourcedetection` processor or create a new one would be determined as a follow up to this design. Ideally, we don't want users to need new configuration for resource in the otel collector. @@ -196,7 +196,7 @@ Note: While this proposals shows a new processor replacing the `resourcedetectio Given our desired design and algorithms for detecting, merging and manipulating Entities, we need the ability to denote how entity and resource relate. These changes must not break existing usage of Resource, therefore: - The Entity model must be *layered on top of* the Resource model. A system does not need to interact with entities for correct behavior. -- Existing key usage of Resource must remain when using Entities, specifically navigationality (see: [OpenTelemetry Resources: Principles and Characteristics](https://docs.google.com/document/d/1Xd1JP7eNhRpdz1RIBLeA1_4UYPRJaouloAYqldCeNSc/edit)) +- Existing key usage of Resource must remain when using Entities, specifically navigation (see: [OpenTelemetry Resources: Principles and Characteristics](https://docs.google.com/document/d/1Xd1JP7eNhRpdz1RIBLeA1_4UYPRJaouloAYqldCeNSc/edit)) - Downstream components should be able to engage with the Entity model in Resource. The following changes are made: @@ -321,13 +321,13 @@ Today, [Prometheus compatibility](../../specification/compatibility/prometheus_a Here's a list of requirements for the solution: -- Existing prometheus/OpenTelemetry users should be able to migrate from where they are today. -- Any solution MUST work with the [info-typed metrics](https://github.com/prometheus/proposals/blob/main/proposals/0037-native-support-for-info-metrics-metadata.md#goals) being added in prometheus. +- Existing Prometheus/OpenTelemetry users should be able to migrate from where they are today. +- Any solution MUST work with the [info-typed metrics](https://github.com/prometheus/proposals/blob/main/proposals/0037-native-support-for-info-metrics-metadata.md#goals) being added in Prometheus. - Resource descriptive attributes should leverage `info()` or metadata. - Resource identifying attributes need more thought/design from OpenTelemetry semconv + entities WG. - - Note: Current `info()` design will only work with `target_info` metric by default (other info metrics can be specified per `info` call), and `job/instance` labels for joins. These labels MUST be generated by the OTLP endpoint in prometheus. -- (desired) Users should be able to correlate metric timeseries to other signals via Resource attributes showing up as labels in prometheus. -- (desired) Conversion from `OTLP -> prometheus` can be reversed such that `OTLP -> Prometheus -> OTLP` is non-lossy. + - Note: Current `info()` design will only work with `target_info` metric by default (other info metrics can be specified per `info` call), and `job/instance` labels for joins. These labels MUST be generated by the OTLP endpoint in Prometheus. +- (desired) Users should be able to correlate metric timeseries to other signals via Resource attributes showing up as labels in Prometheus. +- (desired) Conversion from `OTLP -> Prometheus` can be reversed such that `OTLP -> Prometheus -> OTLP` is non-lossy. Here's a few (non-exhaustive) options for what this could look like: @@ -338,23 +338,23 @@ Here's a few (non-exhaustive) options for what this could look like: - By default all identifying labels on Resource are promoted to resource attributes. - All descriptive labels are placed on `target_info`. - (likely) `job`/`instance` will need to be synthesized for resources lacking a `service` entity. -- Option #3 - Enocde entities into prometheus as info metrics +- Option #3 - Encode entities into Prometheus as info metrics - Create `{entity_type}_entity_info` metrics. - Synthesize `job`/`instance` labels for joins between all `*_info` metrics. - Expand the scope of info-typed metrics work in Prometheus to work with this encoding. - Option #4 - Find solutions leveraging the [metadata design](https://docs.google.com/document/d/1epBslSSwRO2do4armx40fruStJy_PS6thROnPeDifz8/edit#heading=h.5sybau7waq2q) -These designs will be explored and evaluated in light of the requirements. For now, prometheus compatibility will continue with Option #1 as we work together towards building a better future for resource in prometheus. +These designs will be explored and evaluated in light of the requirements. For now, Prometheus compatibility will continue with Option #1 as we work together towards building a better future for resource in Prometheus. ### Should entities have a domain? -Is it worth having a `domain` in addition to type for entity? We could force each entity to exist in one domain and leverage domain generically in resource management. Entity Detectors would be responsible for an entire domain, selecting only ONE to apply a resource. Domains could be layered, e.g. a Cloud-specific domain may layer on top of a Kubernetes domain, where "GKE cluster entity" identifies *which* kubernetes cluster a kuberntes infra entity is part of. This layer would be done naively, via automatic join of participating entities or explicit relationships derived from GKE specific hooks. +Is it worth having a `domain` in addition to type for entity? We could force each entity to exist in one domain and leverage domain generically in resource management. Entity Detectors would be responsible for an entire domain, selecting only ONE to apply a resource. Domains could be layered, e.g. a Cloud-specific domain may layer on top of a Kubernetes domain, where "GKE cluster entity" identifies *which* kubernetes cluster a kubernetes infra entity is part of. This layer would be done naively, via automatic join of participating entities or explicit relationships derived from GKE specific hooks. It's unclear if this is needed initially, and we believe this could be layered in later. ### Should resources have only one associated entity? -Given the problems leading to the Entities working group, and the needs of existing Resource users today, we think it is infeasible and unscalable to limit resource to only one entity. This would place restrictions on modeling Entities that would require OpenTelemetry to be the sole source of entity definitions and hurt building an open and extensible ecosystem. Additionally it would need careful definition of solutions for the following problems/rubrics: +Given the problems leading to the Entities working group, and the needs of existing Resource users today, we think it is infeasible and un-scalable to limit resource to only one entity. This would place restrictions on modeling Entities that would require OpenTelemetry to be the sole source of entity definitions and hurt building an open and extensible ecosystem. Additionally it would need careful definition of solutions for the following problems/rubrics: - New entities added by extension should not break existing code - Collector augmentation / enrichment (resource, e.g.) - Should be extensible and not hard-coded. We need a general algorithm not specific rulesets. @@ -370,7 +370,7 @@ This can be done in follow up design / OTEPs. While we expect the collector to be the first component to start engaging with Entities in an architecture, this could lead to data model violations. We have a few options to deal with this issue: - Consider this a bug and warn users not to do it. -- Specify that missing attribute keys are acceptable for descriptive attribtues. +- Specify that missing attribute keys are acceptable for descriptive attributes. - Specify that missing attribute keys denote that entities are unusable for that batch of telemetry, and treat the content as malformed. ### What about advanced entity interaction in the Collector? @@ -411,7 +411,7 @@ Below is a brief discussion of some design decisions: - **Embed fully Entity in Resource.** This was rejected because it makes it easy/trivial for Resource attributes and Entities to diverge. This would prevent the backwards/forwards compatibility goals and also require all participating OTLP users to leverage entities. Entity should be an opt-in / additional feature that may or may not be engaged with, depending on user need. - **Re-using resource detection as-is** This was rejected as not having a viable compatibility path forward. Creating a new set of components that can preserve existing behavior while allowing users to adopt the new functionality means that users have better control of when they see / change system behavior, and adoption is more obvious across the ecosystem. -## Future Posibilities +## Future Possibilities This proposal opens the door for addressing issues where an Entity's lifetime does not match an SDK's lifetime, in addition to providing a data model where mutable (descriptive) attributes can be changed over the lifetime of a resource without affecting its identity. We expect a follow-on OTEP which directly handles this issue. @@ -476,7 +476,7 @@ The resulting OTLP from the collector would contain a resource with all of the entities (`process`, `service`, `ec2`, and `host`). This is because the entities are all disjoint. -*Note: this matches today's behavior of existing resource detection and OpenTelmetry collector where all attributes wind up on resource.* +*Note: this matches today's behavior of existing resource detection and OpenTelemetry collector where all attributes wind up on resource.* ### SDK and Collector - Entity coordination with descriptive attributes @@ -589,208 +589,208 @@ Ideally, we'd like a solution where: - Collector - [system](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/resourcedetectionprocessor/internal/system/metadata.yaml) - - host.arch - - host.name - - host.id - - host.ip - - host.mac - - host.cpu.vendor.id - - host.cpu.family - - host.cpu.model.id - - host.cpu.model.name - - host.cpu.stepping - - host.cpu.cache.l2.size - - os.description - - os.type + - `host.arch` + - `host.name` + - `host.id` + - `host.ip` + - `host.mac` + - `host.cpu.vendor.id` + - `host.cpu.family` + - `host.cpu.model.id` + - `host.cpu.model.name` + - `host.cpu.stepping` + - `host.cpu.cache.l2.size` + - `os.description` + - `os.type` - [docker](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/resourcedetectionprocessor/internal/docker/metadata.yaml) - - host.name - - os.type + - `host.name` + - `os.type` - [heroku](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/resourcedetectionprocessor/internal/heroku/metadata.yaml) - - cloud.provider - - heroku.app.id - - heroku.dyno.id - - heroku.release.commit - - heroku.release.creation_timestamp - - service.instance.id - - service.name - - service.version + - `cloud.provider` + - `heroku.app.id` + - `heroku.dyno.id` + - `heroku.release.commit` + - `heroku.release.creation_timestamp` + - `service.instance.id` + - `service.name` + - `service.version` - [gcp](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/resourcedetectionprocessor/internal/gcp/metadata.yaml) - gke - - cloud.provider - - cloud.platform - - cloud.account.id - - cloud.region - - cloud.availability_zone - - k8s.cluster.name - - host.id - - host.name + - `cloud.provider` + - `cloud.platform` + - `cloud.account.id` + - `cloud.region` + - `cloud.availability_zone` + - `k8s.cluster.name` + - `host.id` + - `host.name` - gce - - cloud.provider - - cloud.platform - - cloud.account.id - - cloud.region - - cloud.availability_zone - - host.id - - host.name - - host.type - - (optional) gcp.gce.instance.hostname - - (optional) gcp.gce.instance.name + - `cloud.provider` + - `cloud.platform` + - `cloud.account.id` + - `cloud.region` + - `cloud.availability_zone` + - `host.id` + - `host.name` + - `host.type` + - (optional) `gcp.gce.instance.hostname` + - (optional) `gcp.gce.instance.name` - AWS - [ec2](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/resourcedetectionprocessor/internal/aws/ec2/metadata.yaml) - - cloud.provider - - cloud.platform - - cloud.account.id - - cloud.region - - cloud.availability_zone - - host.id - - host.image.id - - host.name - - host.type + - `cloud.provider` + - `cloud.platform` + - `cloud.account.id` + - `cloud.region` + - `cloud.availability_zone` + - `host.id` + - `host.image.id` + - `host.name` + - `host.type` - [ecs](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/resourcedetectionprocessor/internal/aws/ecs/metadata.yaml) - - cloud.provider - - cloud.platform - - cloud.account.id - - cloud.region - - cloud.availability_zone - - aws.ecs.cluster.arn - - aws.ecs.task.arn - - aws.ecs.task.family - - aws.ecs.task.id - - aws.ecs.task.revision - - aws.ecs.launchtype (V4 only) - - aws.log.group.names (V4 only) - - aws.log.group.arns (V4 only) - - aws.log.stream.names (V4 only) - - aws.log.stream.arns (V4 only) + - `cloud.provider` + - `cloud.platform` + - `cloud.account.id` + - `cloud.region` + - `cloud.availability_zone` + - `aws.ecs.cluster.arn` + - `aws.ecs.task.arn` + - `aws.ecs.task.family` + - `aws.ecs.task.id` + - `aws.ecs.task.revision` + - `aws.ecs.launchtype` (V4 only) + - `aws.log.group.names` (V4 only) + - `aws.log.group.arns` (V4 only) + - `aws.log.stream.names` (V4 only) + - `aws.log.stream.arns` (V4 only) - [elastic_beanstalk](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/resourcedetectionprocessor/internal/aws/elasticbeanstalk/metadata.yaml) - - cloud.provider - - cloud.platform - - deployment.environment - - service.instance.id - - service.version + - `cloud.provider` + - `cloud.platform` + - `deployment.environment` + - `service.instance.id` + - `service.version` - eks - - cloud.provider - - cloud.platform - - k8s.cluster.name + - `cloud.provider` + - `cloud.platform` + - `k8s.cluster.name` - lambda - - cloud.provider - - cloud.platform - - cloud.region - - faas.name - - faas.version - - faas.instance - - faas.max_memory - - aws.log.group.names - - aws.log.stream.names + - `cloud.provider` + - `cloud.platform` + - `cloud.region` + - `faas.name` + - `faas.version` + - `faas.instance` + - `faas.max_memory` + - `aws.log.group.names` + - `aws.log.stream.names` - Azure - - cloud.provider - - cloud.platform - - cloud.region - - cloud.account.id - - host.id - - host.name - - azure.vm.name - - azure.vm.size - - azure.vm.scaleset.name - - azure.resourcegroup.name + - `cloud.provider` + - `cloud.platform` + - `cloud.region` + - `cloud.account.id` + - `host.id` + - `host.name` + - `azure.vm.name` + - `azure.vm.size` + - `azure.vm.scaleset.name` + - `azure.resourcegroup.name` - Azure aks - - cloud.provider - - cloud.platform - - k8s.cluster.name + - `cloud.provider` + - `cloud.platform` + - `k8s.cluster.name` - Consul - - cloud.region - - host.id - - host.name + - `cloud.region` + - `host.id` + - `host.name` - *exploded consul metadata* - k8s Node - - k8s.node.uid + - `k8s.node.uid` - Openshift - - cloud.provider - - cloud.platform - - cloud.region - - k8s.cluster.name + - `cloud.provider` + - `cloud.platform` + - `cloud.region` + - `k8s.cluster.name` - Java Resource Detection - SDK-Default - - service.name - - telemetry.sdk.version - - telemetry.sdk.language - - telemetry.sdk.name + - `service.name` + - `telemetry.sdk.version` + - `telemetry.sdk.language` + - `telemetry.sdk.name` - [process](https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/691de74a4b0539c1329222aefb962c232028032b/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/ProcessResource.java#L60) - - process.pid - - process.command_line - - process.command_args - - process.executable.path + - `process.pid` + - `process.command_line` + - `process.command_args` + - `process.executable.path` - [host](https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/HostResource.java#L31) - - host.name - - host.arch + - `host.name` + - `host.arch` - [container](https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/ContainerResource.java) - - container.id + - `container.id` - [os](https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/OsResource.java) - - os.type + - `os.type` - [AWS](https://github.com/open-telemetry/opentelemetry-java-contrib/tree/main/aws-resources) - EC2 - - host.id - - cloud.availability_zone - - host.type - - host.image.id - - cloud.account.id - - cloud.region - - host.name + - `host.id` + - `cloud.availability_zone` + - `host.type` + - `host.image.id` + - `cloud.account.id` + - `cloud.region` + - `host.name` - ECS - - cloud.provider - - cloud.platform - - aws.log.group.names - - aws.log.stream.names + - `cloud.provider` + - `cloud.platform` + - `aws.log.group.names` + - `aws.log.stream.names` - EKS - - cloud.provider - - cloud.platform - - k8s.cluster.name - - container.id + - `cloud.provider` + - `cloud.platform` + - `k8s.cluster.name` + - `container.id` - Lambda - - cloud.platform - - cloud.region - - faas.name - - faas.version + - `cloud.platform` + - `cloud.region` + - `faas.name` + - `faas.version` - [GCP](https://github.com/open-telemetry/opentelemetry-java-contrib/tree/main/gcp-resources) - - cloud.provider - - cloud.platform - - cloud.account.id - - cloud.availability_zone - - cloud.region - - host.id - - host.name - - host.type - - k8s.pod.name - - k8s.namespace.name - - k8s.container.name - - k8s.cluster.name - - faas.name - - faas.instance + - `cloud.provider` + - `cloud.platform` + - `cloud.account.id` + - `cloud.availability_zone` + - `cloud.region` + - `host.id` + - `host.name` + - `host.type` + - `k8s.pod.name` + - `k8s.namespace.name` + - `k8s.container.name` + - `k8s.cluster.name` + - `faas.name` + - `faas.instance` - Go - [container](https://github.com/open-telemetry/opentelemetry-go/blob/main/sdk/resource/container.go) - - container.id + - `container.id` - [host](https://github.com/open-telemetry/opentelemetry-go/blob/main/sdk/resource/host_id.go) - - host.id + - `host.id` - [os](https://github.com/open-telemetry/opentelemetry-go/blob/main/sdk/resource/os.go) - - os.name + - `os.name` - [process](https://github.com/open-telemetry/opentelemetry-go/blob/main/sdk/resource/process.go) - - process.pid - - process.executable.name - - process.executable.path - - process.command_line - - process.command_args - - process.owner + - `process.pid` + - `process.executable.name` + - `process.executable.path` + - `process.command_line` + - `process.command_args` + - `process.owner` - [builtin](https://github.com/open-telemetry/opentelemetry-go/blob/main/sdk/resource/builtin.go) - - service.instance.id - - service.name + - `service.instance.id` + - `service.name` - [OTEL operator](https://github.com/open-telemetry/opentelemetry-operator/blob/a1e8f927909b81eb368c0483940e0b90d7fdb057/pkg/instrumentation/sdk_test.go#L752) injected ENV variables - - service.instance.id - - service.name - - service.version - - k8s.namespace.name - - k8s.pod.name - - k8s.node.name - - k8s.container.name + - `service.instance.id` + - `service.name` + - `service.version` + - `k8s.namespace.name` + - `k8s.pod.name` + - `k8s.node.name` + - `k8s.container.name` ### Implications @@ -851,7 +851,7 @@ included". However, this can be refined. Resources today provide a [few key features](https://docs.google.com/document/d/1Xd1JP7eNhRpdz1RIBLeA1_4UYPRJaouloAYqldCeNSc/edit): - They provide identity - Uniquely identifying the origin of the data. -- They provide "navigationality" - allowing users to find the source of the data within their o11y and infrastructure tools. +- They provide "navigation" - allowing users to find the source of the data within their o11y and infrastructure tools. - They allow aggregation / slicing of data on interesting domains. A litmus test for what entities to include on resource should be as follows: diff --git a/oteps/experimental/0121-config-service.md b/oteps/experimental/0121-config-service.md index af43645cdce..c6886fc5939 100644 --- a/oteps/experimental/0121-config-service.md +++ b/oteps/experimental/0121-config-service.md @@ -110,7 +110,7 @@ Having a small polling interval (how often we read configs) would mean that conf ## Prior art and alternatives -Jaegar has the option of a Remote sampler, which allows reading from a central configuration, even dynamically with an Adaptive sampler. +Jaeger has the option of a Remote sampler, which allows reading from a central configuration, even dynamically with an Adaptive sampler. The main comparative for remote configuration is a push vs. polling mechanism. The benefits of having a mechanism where the configuration service pushes new configs is that it's less work for the user, with it being not necessary for them to set up a configuration service. There is also no load associated with polling the configuration service in the instrumented application, which would keep the OpenTelemetry SDK more lightweight. diff --git a/oteps/logs/0097-log-data-model.md b/oteps/logs/0097-log-data-model.md index b1c7e3b8b4d..f88bbcd5dc1 100644 --- a/oteps/logs/0097-log-data-model.md +++ b/oteps/logs/0097-log-data-model.md @@ -610,31 +610,31 @@ this data model.
mail system