Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .markdownlint.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,5 @@ no-inline-html: false
fenced-code-language: false
no-duplicate-heading: false
descriptive-link-text: false
first-line-h1: false
no-alt-text: false
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# All documents to be used in spell check.
ALL_DOCS := $(shell find . -type f -name '*.md' -not -path './.github/*' -not -path './node_modules/*' -not -path '*semantic_conventions*' | sort)
ALL_DOCS := $(shell find . -type f -name '*.md' -not -path './.github/*' -not -path './node_modules/*' -not -path '*semantic_conventions*' -not -name 'spec-compliance-matrix.md' | sort)
PWD := $(shell pwd)

TOOLS_DIR := ./internal/tools
Expand Down
6 changes: 6 additions & 0 deletions oteps/0119-standard-system-metrics.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ In the tables below, units of `1` refer to a ratio value that is always in the r
#### `system.cpu.`

**Description:** System level processor metrics.

|Name |Units |Instrument Type |Value Type|Label Key|Label Values |
|----------------------|-------|-----------------|----------|---------|-----------------------------------|
|system.cpu.time |seconds|SumObserver |Double |state |idle, user, system, interrupt, etc.|
Expand All @@ -67,6 +68,7 @@ In the tables below, units of `1` refer to a ratio value that is always in the r
#### `system.memory.`

**Description:** System level memory metrics.

|Name |Units|Instrument Type |Value Type|Label Key|Label Values |
|-------------------------|-----|-----------------|----------|---------|------------------------|
|system.memory.usage |bytes|UpDownSumObserver|Int64 |state |used, free, cached, etc.|
Expand All @@ -75,6 +77,7 @@ In the tables below, units of `1` refer to a ratio value that is always in the r
#### `system.swap.`

**Description:** System level swap/paging metrics.

|Name |Units |Instrument Type |Value Type|Label Key|Label Values|
|----------------------------|----------|-----------------|----------|---------|------------|
|system.swap.usage |pages |UpDownSumObserver|Int64 |state |used, free |
Expand All @@ -86,6 +89,7 @@ In the tables below, units of `1` refer to a ratio value that is always in the r
#### `system.disk.`

**Description:** System level disk performance metrics.

|Name |Units |Instrument Type|Value Type|Label Key|Label Values|
|----------------------------|----------|---------------|----------|---------|------------|
|system.disk.io<!--notlink-->|bytes |SumObserver |Int64 |device |(identifier)|
Expand All @@ -100,6 +104,7 @@ In the tables below, units of `1` refer to a ratio value that is always in the r
#### `system.filesystem.`

**Description:** System level filesystem metrics.

|Name |Units|Instrument Type |Value Type|Label Key|Label Values |
|-----------------------------|-----|-----------------|----------|---------|--------------------|
|system.filesystem.usage |bytes|UpDownSumObserver|Int64 |device |(identifier) |
Expand All @@ -110,6 +115,7 @@ In the tables below, units of `1` refer to a ratio value that is always in the r
#### `system.network.`

**Description:** System level network metrics.

|Name |Units |Instrument Type |Value Type|Label Key|Label Values |
|-------------------------------|-----------|-----------------|----------|---------|----------------------------------------------------------------------------------------------|
|system.network.dropped\_packets|packets |SumObserver |Int64 |device |(identifier) |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ Example of a Nginx Access Log entry structured with ECS
## Principles

| Description | [OTel Logs and Event Record](../specification/logs/data-model.md#log-and-event-record-definition) | [Elastic Common Schema (ECS)](https://www.elastic.co/docs/reference/ecs) |
|-------------|-------------|--------|
| ----------- | ------------- | -------- |
| Metadata shared by all the Log Messages / Spans / Metrics of an application instance | Resource Attributes | ECS fields |
| Metadata specific to each Log Message / Span / Metric data point | Attributes | ECS Fields |
| Message of log events | Body | [message field](https://www.elastic.co/docs/reference/ecs/ecs-base#field-message) |
Expand All @@ -159,7 +159,7 @@ Example of a Nginx Access Log entry structured with ECS
## Data Types

| Category | <a href="../specification/logs/data-model.md#log-and-event-record-definition">OTel Logs and Event Record</a> (all or a subset of <a href="https://protobuf.dev/programming-guides/proto3/">GRPC data types</a>) | <a href="https://www.elastic.co/docs/reference/elasticsearch/mapping-reference/field-data-types">ECS Data Types</a> |
|---|---|---|
| --- | --- | --- |
| Text | string | <a href="https://www.elastic.co/docs/reference/elasticsearch/mapping-reference/text#text-field-type">text</a>, <a href="https://www.elastic.co/docs/reference/elasticsearch/mapping-reference/text#match-only-text-field-type">match_only_text</a>, <a href="https://www.elastic.co/docs/reference/elasticsearch/mapping-reference/keyword#keyword-field-type">keyword</a> <a href="https://www.elastic.co/docs/reference/elasticsearch/mapping-reference/keyword#constant-keyword-field-type">constant_keyword</a>, <a href="https://www.elastic.co/docs/reference/elasticsearch/mapping-reference/keyword#wildcard-field-type">wildcard</a> |
| Dates | uint64 nanoseconds since Unix epoch | <a href="https://www.elastic.co/docs/reference/elasticsearch/mapping-reference/date">date</a>, <a href="https://www.elastic.co/docs/reference/elasticsearch/mapping-reference/date_nanos">date_nanos</a> |
| Numbers | number | <a href="https://www.elastic.co/docs/reference/elasticsearch/mapping-reference/number">long</a>, <a href="https://www.elastic.co/docs/reference/elasticsearch/mapping-reference/number">double</a>, <a href="https://www.elastic.co/docs/reference/elasticsearch/mapping-reference/number">scaled_float</a>, <a href="https://www.elastic.co/docs/reference/elasticsearch/mapping-reference/boolean">boolean</a>… |
Expand Down
5 changes: 2 additions & 3 deletions oteps/0258-env-context-baggage-carriers.md
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,6 @@ Defining the specification for Environment Variables as carriers will have a
wide impact to the industry in enabling better observability to systems outside
of the normal HTTP microservice architecture.

[w3c-bag]: https://www.w3.org/TR/baggage/#header-name
[bag-api]: https://opentelemetry.io/docs/specs/otel/baggage/api/

The above prototype example came from the resources mentioned in [this
Expand Down Expand Up @@ -280,9 +279,9 @@ mentioned in [opentelemetry-specification #740](https://github.com/open-telemetr
* [hotel-california](https://github.com/parsonsmatt/hotel-california/issues/3)

Additionally, there was a prototype implementation for environment variables as
context carriers written in the [Python SDK][python-env].
context carriers written in the [Python SDK][python-sdkenv].

[python-env]: https://github.com/open-telemetry/opentelemetry-specification/issues/740#issuecomment-919657003
[python-sdkenv]: https://github.com/open-telemetry/opentelemetry-specification/issues/740#issuecomment-919657003

## Alternatives and why they were not chosen

Expand Down
22 changes: 11 additions & 11 deletions oteps/4485-extending-attributes-to-support-complex-values.md
Original file line number Diff line number Diff line change
Expand Up @@ -295,18 +295,18 @@ This approach reduces performance overhead and the volume of transmitted data an
See [the gist](https://gist.github.com/lmolkova/737ebba190b206a5d60bbc075fea538b)
for additional details.

| Backend | Handles complex attributes gracefully? | Comments |
| --------------------------------- | ----- | ------------------------------ |
| Jaeger (OTLP) | :white_check_mark: | serializes to JSON string |
| Backend | Handles complex attributes gracefully? | Comments |
| ------- | -------------------------------------- | -------- |
| Jaeger (OTLP) | :white_check_mark: | serializes to JSON string |
| Prometheus with OTLP remote write | :white_check_mark: | serializes to JSON string |
| Grafana Tempo (OTLP) | :white_check_mark: | serializes to JSON string, viewable but can't query using this attribute |
| Grafana Loki (OTLP) | :white_check_mark: | flattens |
| Aspire dashboard (OTLP) | :white_check_mark: | serializes to JSON string |
| ClickHouse (collector exporter) | :white_check_mark: | serializes to JSON string, can parse JSON and query |
| Honeycomb (OTLP) | :white_check_mark: | flattens if less than 5 layers deep, not array or binary data, JSON string otherwise |
| Logfire (OTLP) | :white_check_mark: | stored as JSON, native support for JSON in queries |
| New Relic (OTLP) | :white_check_mark: | drops the complex attribute | |
| Splunk (OTLP and HEC exporter) | :white_check_mark: | flattens for logs (HEC), serializes to JSON string for traces and metrics (OTLP) |
| Grafana Tempo (OTLP) | :white_check_mark: | serializes to JSON string, viewable but can't query using this attribute |
| Grafana Loki (OTLP) | :white_check_mark: | flattens |
| Aspire dashboard (OTLP) | :white_check_mark: | serializes to JSON string |
| ClickHouse (collector exporter) | :white_check_mark: | serializes to JSON string, can parse JSON and query |
| Honeycomb (OTLP) | :white_check_mark: | flattens if less than 5 layers deep, not array or binary data, JSON string otherwise |
| Logfire (OTLP) | :white_check_mark: | stored as JSON, native support for JSON in queries |
| New Relic (OTLP) | :white_check_mark: | drops the complex attribute |
| Splunk (OTLP and HEC exporter) | :white_check_mark: | flattens for logs (HEC), serializes to JSON string for traces and metrics (OTLP) |

> [!NOTE]
> This list only reflects the behavior at the time of writing and may change in the future.
Expand Down
3 changes: 0 additions & 3 deletions oteps/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,3 @@ Have suggestions? Concerns? Questions? **Please** raise an issue or raise the ma
## Background on the OpenTelemetry OTEP process

Our OTEP process borrows from the [Rust RFC](https://github.com/rust-lang/rfcs) and [Kubernetes Enhancement Proposal](https://github.com/kubernetes/enhancements) processes, the former also being [very influential](https://github.com/kubernetes/enhancements/blob/master/keps/sig-architecture/0000-kep-process/README.md#prior-art) on the latter; as well as the [OpenTracing OTEP](https://github.com/opentracing/specification/blob/master/rfc_process.md) process. Massive kudos and thanks to the respective authors and communities for providing excellent prior art 💖

[slack-image]: https://img.shields.io/badge/Slack-4A154B?style=for-the-badge&logo=slack&logoColor=white
[slack-url]: https://cloud-native.slack.com/archives/C01N7PP1THC
8 changes: 4 additions & 4 deletions oteps/entities/0264-resource-and-entities.md
Original file line number Diff line number Diff line change
Expand Up @@ -206,8 +206,8 @@ The following changes are made:
| Field | Type | Description | Changes |
| ----- | ---- | ----------- | ------- |
| schema_url | string | The Schema URL, if known. This is the identifier of the Schema that the resource data is recorded in. This field is deprecated and should no longer be used. | Will be deprecated |
| dropped_attributes_count | integer | dropped_attributes_count is the number of dropped attributes. If the value is 0, then no attributes were dropped. | Unchanged |
| attributes | repeated KeyValue | Set of attributes that describe the resource.<br/><br/>Attribute keys MUST be unique (it is not allowed to have more than one attribute with the same key).| Unchanged |
| dropped_attributes_count | integer | dropped_attributes_count is the number of dropped attributes. If the value is 0, then no attributes were dropped. | Unchanged |
| attributes | repeated KeyValue | Set of attributes that describe the resource.<br/><br/>Attribute keys MUST be unique (it is not allowed to have more than one attribute with the same key). | Unchanged |
| entities | repeated ResourceEntityRef | Set of entities that participate in this Resource. | Added |

The DataModel would ensure that attributes in Resource are produced from both the identifying and descriptive attributes of Entity. This does not mean the protocol needs to transmit duplicate data, that design is TBD.
Expand All @@ -220,8 +220,8 @@ The entityref data model, would have the following changes from the original [en
| ----- | ---- | ----------- | ------- |
| schema_url | string | The Schema URL, if known. This is the identifier of the Schema that the entity data is recorded in. To learn more about Schema URL ([see docs](https://opentelemetry.io/docs/specs/otel/schemas/#schema-url)) | added |
| type | string | Defines the type of the entity. MUST not change during the lifetime of the entity. For example: "service" or "host". This field is required and MUST not be empty for valid entities. | unchanged |
| identifying_attributes_keys | repeated string | Attribute Keys that identify the entity.<br/>MUST not change during the lifetime of the entity. The Id must contain at least one attribute.<br/><br/>These keys MUST exists in Resource.attributes.<br/><br/>Follows OpenTelemetry common attribute definition. SHOULD follow OpenTelemetry semantic conventions for attributes.| now a reference |
| descriptive_attributes_keys | repeated string | Descriptive (non-identifying) attribute keys of the entity.<br/>MAY change over the lifetime of the entity. MAY be empty. These attribute keys are not part of entity's identity.<br/><br/>These keys MUST exist in Resource.attributes.<br/><br/>Follows any value definition in the OpenTelemetry spec - it can be a scalar value, byte array, an array or map of values. Arbitrary deep nesting of values for arrays and maps is allowed.<br/><br/>SHOULD follow OpenTelemetry semantic conventions for attributes.| now a reference |
| identifying_attributes_keys | repeated string | Attribute Keys that identify the entity.<br/>MUST not change during the lifetime of the entity. The Id must contain at least one attribute.<br/><br/>These keys MUST exists in Resource.attributes.<br/><br/>Follows OpenTelemetry common attribute definition. SHOULD follow OpenTelemetry semantic conventions for attributes. | now a reference |
| descriptive_attributes_keys | repeated string | Descriptive (non-identifying) attribute keys of the entity.<br/>MAY change over the lifetime of the entity. MAY be empty. These attribute keys are not part of entity's identity.<br/><br/>These keys MUST exist in Resource.attributes.<br/><br/>Follows any value definition in the OpenTelemetry spec - it can be a scalar value, byte array, an array or map of values. Arbitrary deep nesting of values for arrays and maps is allowed.<br/><br/>SHOULD follow OpenTelemetry semantic conventions for attributes. | now a reference |

### Resource Identity

Expand Down
Loading
Loading