From 0c4e76a5a604b23de6f0b3dae17b0e8d164b09db Mon Sep 17 00:00:00 2001 From: Liudmila Molkova Date: Thu, 10 Jul 2025 18:50:19 -0700 Subject: [PATCH] Automate schema-next generation in release workflow (#2307) --- .github/PULL_REQUEST_TEMPLATE.md | 2 +- .github/workflows/prepare-release.yml | 7 +- CONTRIBUTING.md | 37 +- Makefile | 18 + .../tools/scripts/generate-schema-next.sh | 41 ++ .../scripts/schema-diff/yaml/schema-diff.j2 | 23 + .../scripts/schema-diff/yaml/weaver.yaml | 16 + schema-next.yaml | 662 ------------------ 8 files changed, 119 insertions(+), 687 deletions(-) create mode 100644 internal/tools/scripts/generate-schema-next.sh create mode 100644 internal/tools/scripts/schema-diff/yaml/schema-diff.j2 create mode 100644 internal/tools/scripts/schema-diff/yaml/weaver.yaml delete mode 100644 schema-next.yaml diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 0ea068d59..0d8fe5fe5 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -11,4 +11,4 @@ Note: if the PR is touching an area that is not listed in the [existing areas](h * [ ] [CONTRIBUTING.md](https://github.com/open-telemetry/semantic-conventions/blob/main/CONTRIBUTING.md) guidelines followed. * [ ] Change log entry added, according to the guidelines in [When to add a changelog entry](https://github.com/open-telemetry/semantic-conventions/blob/main/CONTRIBUTING.md#when-to-add-a-changelog-entry). * If your PR does not need a change log, start the PR title with `[chore]` -* [ ] [schema-next.yaml](https://github.com/open-telemetry/semantic-conventions/blob/main/schema-next.yaml) updated with changes to existing conventions. + diff --git a/.github/workflows/prepare-release.yml b/.github/workflows/prepare-release.yml index 6b24e7e8d..abd11b3c1 100644 --- a/.github/workflows/prepare-release.yml +++ b/.github/workflows/prepare-release.yml @@ -31,12 +31,7 @@ jobs: fi version=${{ inputs.version }} - cp schema-next.yaml "schemas/$version" - - sed -i "s/ next:$/ next:\n $version:/" schema-next.yaml - - sed -i "s/^schema_url: .*/schema_url: https:\/\/opentelemetry.io\/schemas\/$version/" "schemas/$version" - sed -i "s/ next:$/ $version:/" "schemas/$version" + make generate-schema-next SCHEMA_NEXT_VERSION=$version git add "schemas/$version" - name: Update change log diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d7c66367b..11ef057d1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -18,7 +18,6 @@ requirements and recommendations. - [Prerequisites](#prerequisites) - [1. Modify the YAML model](#1-modify-the-yaml-model) - [Code structure](#code-structure) - - [Schema files](#schema-files) - [2. Update the markdown files](#2-update-the-markdown-files) - [Hugo frontmatter](#hugo-frontmatter) - [3. Check new convention](#3-check-new-convention) @@ -36,6 +35,7 @@ requirements and recommendations. - [Update the tables of content](#update-the-tables-of-content) - [Markdown link check](#markdown-link-check) - [Yamllint check](#yamllint-check) +- [Schema files](#schema-files) - [Merging existing ECS conventions](#merging-existing-ecs-conventions) @@ -57,8 +57,7 @@ key, but non-obvious, aspects: - All descriptions, normative language are defined in the `docs/` directory. - All changes to existing attributes, metrics, etc. MUST be allowed as per our [stability guarantees][stability guarantees] and - defined in a schema file. As part of any contribution, you should - include attribute changes defined in the `schema-next.yaml` file. + defined in a schema file. - Links to the specification repository MUST point to a tag and **not** to the `main` branch. The tag version MUST match with the one defined in [README](README.md). @@ -164,21 +163,6 @@ are defined in `/model/aws/lambda-spans.yaml` and `/model/aws/sdk-spans.yaml` fi Deprecated conventions should be placed under `/model/{root-namespace}/deprecated` folder. -#### Schema files - -When making changes to existing semantic conventions (attributes, metrics, etc) -you MUST also update the `schema-next.yaml` file with the changes. - -For details, please read -[the schema specification](https://opentelemetry.io/docs/specs/otel/schemas/). - -You can also take examples from past changes inside the `schemas` folder. - -> [!WARNING] -> -> DO NOT add your changes to files inside the `schemas` folder. Always add your -> changes to the `schema-next.yaml` file. - ### 2. Update the markdown files After updating the YAML file(s), you need to update @@ -434,6 +418,23 @@ If it is the first time to run this command, install `yamllint` first: make install-yamllint ``` +## Schema files + +> [!WARNING] +> +> DO NOT add your changes to files inside the `schemas` folder. These files are +> generated automatically by the release scripts and can't be updated after +> the corresponding version is released. + +Release script uses the following command to generate new schema file: + +```bash +make generate-schema-next NEXT_SEMCONV_VERSION={next version} +``` + +For details, please read +[the schema specification](https://opentelemetry.io/docs/specs/otel/schemas/). + ## Merging existing ECS conventions The Elastic Common Schema (ECS) is being merged into OpenTelemetry Semantic diff --git a/Makefile b/Makefile index 1299f426d..627da0a00 100644 --- a/Makefile +++ b/Makefile @@ -316,3 +316,21 @@ check-dead-yaml: . \ /home/weaver/target $(TOOLS_DIR)/scripts/find-dead-yaml.sh $(PWD)/internal/tools/bin/signal-groups.txt $(PWD)/docs + +NEXT_SEMCONV_VERSION ?= next +.PHONY: generate-schema-next +generate-schema-next: + mkdir -p $(TOOLS_DIR)/bin + $(DOCKER_RUN) --rm \ + $(DOCKER_USER_IS_HOST_USER_ARG) \ + --mount 'type=bind,source=$(PWD)/internal/tools/scripts,target=/home/weaver/templates,readonly' \ + --mount 'type=bind,source=$(PWD)/model,target=/home/weaver/source,readonly' \ + --mount 'type=bind,source=$(TOOLS_DIR)/bin,target=/home/weaver/target' \ + $(WEAVER_CONTAINER) registry diff \ + --registry=/home/weaver/source \ + --baseline-registry=https://github.com/open-telemetry/semantic-conventions/archive/refs/tags/v$(LATEST_RELEASED_SEMCONV_VERSION).zip[model] \ + --diff-format yaml \ + --diff-template /home/weaver/templates/schema-diff \ + --output /home/weaver/target + # --param next_version=$(NEXT_SEMCONV_VERSION) + $(TOOLS_DIR)/scripts/generate-schema-next.sh $(NEXT_SEMCONV_VERSION) $(LATEST_RELEASED_SEMCONV_VERSION) $(TOOLS_DIR)/bin/schema-diff.yaml diff --git a/internal/tools/scripts/generate-schema-next.sh b/internal/tools/scripts/generate-schema-next.sh new file mode 100644 index 000000000..c5b9cb66d --- /dev/null +++ b/internal/tools/scripts/generate-schema-next.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bash +# +# Copyright The OpenTelemetry Authors +# SPDX-License-Identifier: Apache-2.0 +# +# Generate header and `{next_version}:` section in next schema yaml based on weaver +# diff output. + +set -euo pipefail + +cur_version="$1" +prev_version="$2" +diff_file="$3" +cur_version_schema_file="schemas/$cur_version" +prev_version_schema_file="schemas/$prev_version" + +# Check if the previous version schema file exists +if [[ ! -f "$prev_version_schema_file" ]]; then + echo "Previous version schema file not found: $prev_version_schema_file" + exit 1 +fi + +# check if the current version schema file exists +if [[ -f "$cur_version_schema_file" ]]; then + echo "Current version schema file already exists: $cur_version_schema_file" + exit 1 +fi + +if ! grep -q "^versions:$" "$prev_version_schema_file"; then + echo "String 'versions:' not found in the file $prev_version_schema_file." + exit 1 +fi + +prev_header_lines=$(awk '/^versions:/{print NR; exit}' "$prev_version_schema_file") + +# need to replace the next_version_placeholder in the header file due to https://github.com/open-telemetry/weaver/issues/775 +# TODO: remove it after the issue is fixed +{ + sed "s/next_version_placeholder/$cur_version/g" "$diff_file" + tail -n +"$((prev_header_lines + 1))" "$prev_version_schema_file" +} > "$cur_version_schema_file" \ No newline at end of file diff --git a/internal/tools/scripts/schema-diff/yaml/schema-diff.j2 b/internal/tools/scripts/schema-diff/yaml/schema-diff.j2 new file mode 100644 index 000000000..251ddb253 --- /dev/null +++ b/internal/tools/scripts/schema-diff/yaml/schema-diff.j2 @@ -0,0 +1,23 @@ +{{- template.set_file_name("schema-diff.yaml") }} + +file_format: 1.1.0 +schema_url: https://opentelemetry.io/schemas/{{ctx.next_version}} +versions: + {{ctx.next_version}}: +{% if ctx.renames.registry_attributes | length > 0 %} + all: + changes: + - rename_attributes: + attribute_map: +{% for attr in ctx.renames.registry_attributes %} + {{attr.old_name}}: {{attr.new_name}} +{% endfor %} +{% endif %} +{% if ctx.renames.metrics | length > 0 %} + metrics: + changes: + - rename_metrics: +{% for metric in ctx.renames.metrics %} + {{metric.old_name}}: {{metric.new_name}} +{% endfor %} +{% endif %} \ No newline at end of file diff --git a/internal/tools/scripts/schema-diff/yaml/weaver.yaml b/internal/tools/scripts/schema-diff/yaml/weaver.yaml new file mode 100644 index 000000000..702545a9e --- /dev/null +++ b/internal/tools/scripts/schema-diff/yaml/weaver.yaml @@ -0,0 +1,16 @@ +params: + next_version: "next_version_placeholder" # https://github.com/open-telemetry/weaver/issues/775 +templates: + - pattern: schema-diff.j2 + filter: > + . + | { + renames: .changes | with_entries(.value |= (map(select(.type == "renamed")) | sort_by(.old_name))), + next_version: $next_version, + latest_released_version: .baseline.semconv_version, + } + application_mode: single +whitespace_control: + trim_blocks: true + lstrip_blocks: true + keep_trailing_newline: true diff --git a/schema-next.yaml b/schema-next.yaml deleted file mode 100644 index e738f8a8a..000000000 --- a/schema-next.yaml +++ /dev/null @@ -1,662 +0,0 @@ -file_format: 1.1.0 -schema_url: https://opentelemetry.io/schemas/next -versions: - next: - all: - changes: - # https://github.com/open-telemetry/semantic-conventions/pull/2046 - - rename_attributes: - attribute_map: - gen_ai.system: gen_ai.provider.name - gen_ai.openai.request.service_tier: openai.request.service_tier - gen_ai.openai.response.service_tier: openai.response.service_tier - gen_ai.openai.response.system_fingerprint: openai.response.system_fingerprint - 1.36.0: - 1.35.0: - all: - changes: - # https://github.com/open-telemetry/semantic-conventions/pull/1698 - - rename_attributes: - attribute_map: - az.namespace: azure.resource_provider.namespace - az.service_request_id: azure.service.request.id - metrics: - changes: - # https://github.com/open-telemetry/semantic-conventions/issues/1800 - - rename_metrics: - system.network.connections: system.network.connection.count - 1.34.0: - metrics: - changes: - # https://github.com/open-telemetry/semantic-conventions/pull/2295 - - rename_metrics: - cpu.time: system.cpu.time - cpu.utilization: system.cpu.utilization - cpu.frequency: system.cpu.frequency - 1.33.0: - all: - changes: - # https://github.com/open-telemetry/semantic-conventions/pull/1982 - - rename_attributes: - attribute_map: - feature_flag.provider_name: feature_flag.provider.name - # https://github.com/open-telemetry/semantic-conventions/pull/1994 - - rename_attributes: - attribute_map: - feature_flag.evaluation.error.message: error.message - 1.32.0: - all: - changes: - # https://github.com/open-telemetry/semantic-conventions/pull/1989 - - rename_attributes: - attribute_map: - feature_flag.evaluation.reason: feature_flag.result.reason - feature_flag.variant: feature_flag.result.variant - metrics: - changes: - # https://github.com/open-telemetry/semantic-conventions/pull/2042 - - rename_metrics: - otel.sdk.span.live.count: otel.sdk.span.live - otel.sdk.span.ended.count: otel.sdk.span.ended - otel.sdk.processor.span.processed.count: otel.sdk.processor.span.processed - otel.sdk.exporter.span.inflight.count: otel.sdk.exporter.span.inflight - otel.sdk.exporter.span.exported.count: otel.sdk.exporter.span.exported - 1.31.0: - all: - changes: - # https://github.com/open-telemetry/semantic-conventions/pull/1880 - - rename_attributes: - attribute_map: - android.state: android.app.state - io.state: ios.app.state - metrics: - changes: - - rename_metrics: - k8s.replication_controller.desired_pods: k8s.replicationcontroller.desired_pods - k8s.replication_controller.available_pods: k8s.replicationcontroller.available_pods - # https://github.com/open-telemetry/semantic-conventions/pull/1896 - - rename_metrics: - system.cpu.time: cpu.time - system.cpu.utilization: cpu.utilization - system.cpu.frequency: cpu.frequency - # https://github.com/open-telemetry/semantic-conventions/pull/1896 - - rename_attributes: - attribute_map: - system.cpu.logical_number: cpu.logical_number - 1.30.0: - all: - changes: - # https://github.com/open-telemetry/semantic-conventions/pull/1632 - - rename_attributes: - attribute_map: - gen_ai.openai.request.seed: gen_ai.request.seed - system.network.state: network.connection.state - # https://github.com/open-telemetry/semantic-conventions/pull/1624 - - rename_attributes: - attribute_map: - code.function: code.function.name - code.filepath: code.file.path - code.lineno: code.line.number - code.column: code.column.number - # https://github.com/open-telemetry/semantic-conventions/pull/1734 - - rename_attributes: - attribute_map: - db.system: db.system.name - db.cassandra.coordinator.dc: cassandra.coordinator.dc - db.cassandra.coordinator.id: cassandra.coordinator.id - db.cassandra.consistency_level: cassandra.consistency.level - db.cassandra.idempotence: cassandra.query.idempotent - db.cassandra.page_size: cassandra.page.size - db.cassandra.speculative_execution_count: cassandra.speculative_execution.count - db.cosmosdb.client_id: azure.client.id - db.cosmosdb.connection_mode: azure.cosmosdb.connection.mode - db.cosmosdb.consistency_level: azure.cosmosdb.consistency.level - db.cosmosdb.request_charge: azure.cosmosdb.operation.request_charge - db.cosmosdb.request_content_length: azure.cosmosdb.request.body.size - db.cosmosdb.regions_contacted: azure.cosmosdb.operation.contacted_regions - db.cosmosdb.sub_status_code: azure.cosmosdb.response.sub_status_code - db.elasticsearch.node.name: elasticsearch.node.name - # db.elasticsearch.path_parts is a template attribute, schema transformation - # does not support it, adding as a comment for consistency - # db.elasticsearch.path_parts. -> db.operation.parameter. - metrics: - changes: - - rename_metrics: - db.client.cosmosdb.operation.request_charge: azure.cosmosdb.client.operation.request_charge - db.client.cosmosdb.active_instance.count: azure.cosmosdb.client.active_instance.count - - 1.29.0: - all: - changes: - # https://github.com/open-telemetry/semantic-conventions/pull/1520 - - rename_attributes: - attribute_map: - process.executable.build_id.profiling: process.executable.build_id.htlhash - # https://github.com/open-telemetry/semantic-conventions/pull/1383 - - rename_attributes: - attribute_map: - vcs.repository.change.id: vcs.change.id - vcs.repository.change.title: vcs.change.title - vcs.repository.ref.name: vcs.ref.head.name - vcs.repository.ref.revision: vcs.ref.head.revision - vcs.repository.ref.type: vcs.ref.head.type - metrics: - changes: - # https://github.com/open-telemetry/semantic-conventions/pull/1492 - - rename_attributes: - attribute_map: - system.device: network.interface.name - apply_to_metrics: - - container.network.io - - system.network.dropped - - system.network.errors - - system.network.io - - system.network.connections - 1.28.0: - metrics: - changes: - # https://github.com/open-telemetry/semantic-conventions/pull/1422 - - rename_metrics: - messaging.client.published.messages: messaging.client.sent.messages - 1.27.0: - all: - changes: - # https://github.com/open-telemetry/semantic-conventions/pull/1216 - - rename_attributes: - attribute_map: - tls.client.server_name: server.address - # https://github.com/open-telemetry/semantic-conventions/pull/1075 - - rename_attributes: - attribute_map: - deployment.environment: deployment.environment.name - # https://github.com/open-telemetry/semantic-conventions/pull/1245 - - rename_attributes: - attribute_map: - messaging.kafka.message.offset: messaging.kafka.offset - # https://github.com/open-telemetry/semantic-conventions/pull/815 - - rename_attributes: - attribute_map: - messaging.kafka.consumer.group: messaging.consumer.group.name - messaging.rocketmq.client_group: messaging.consumer.group.name - messaging.eventhubs.consumer.group: messaging.consumer.group.name - messaging.servicebus.destination.subscription_name: messaging.destination.subscription.name - # https://github.com/open-telemetry/semantic-conventions/pull/1200 - - rename_attributes: - attribute_map: - gen_ai.usage.completion_tokens: gen_ai.usage.output_tokens - gen_ai.usage.prompt_tokens: gen_ai.usage.input_tokens - spans: - changes: - # https://github.com/open-telemetry/semantic-conventions/pull/1002 - - rename_attributes: - attribute_map: - db.elasticsearch.cluster.name: db.namespace - metrics: - changes: - # https://github.com/open-telemetry/semantic-conventions/pull/1125 - - rename_attributes: - attribute_map: - db.client.connections.state: db.client.connection.state - apply_to_metrics: - - db.client.connection.count - - rename_attributes: - attribute_map: - db.client.connections.pool.name: db.client.connection.pool.name - apply_to_metrics: - - db.client.connection.count - - db.client.connection.idle.max - - db.client.connection.idle.min - - db.client.connection.max - - db.client.connection.pending_requests - - db.client.connection.timeouts - - db.client.connection.create_time - - db.client.connection.wait_time - - db.client.connection.use_time - # https://github.com/open-telemetry/semantic-conventions/pull/1006 - - rename_metrics: - messaging.publish.messages: messaging.client.published.messages - # https://github.com/open-telemetry/semantic-conventions/pull/1026 - - rename_attributes: - attribute_map: - system.cpu.state: cpu.mode - process.cpu.state: cpu.mode - container.cpu.state: cpu.mode - apply_to_metrics: - - system.cpu.time - - system.cpu.utilization - - process.cpu.time - - process.cpu.utilization - - container.cpu.time - # https://github.com/open-telemetry/semantic-conventions/pull/1265 - - rename_metrics: - jvm.buffer.memory.usage: jvm.buffer.memory.used - 1.26.0: - metrics: - changes: - # https://github.com/open-telemetry/semantic-conventions/pull/966 - - rename_metrics: - db.client.connections.usage: db.client.connection.count - db.client.connections.idle.max: db.client.connection.idle.max - db.client.connections.idle.min: db.client.connection.idle.min - db.client.connections.max: db.client.connection.max - db.client.connections.pending_requests: db.client.connection.pending_requests - db.client.connections.timeouts: db.client.connection.timeouts - # https://github.com/open-telemetry/semantic-conventions/pull/948 - - rename_attributes: - attribute_map: - messaging.client_id: messaging.client.id - # https://github.com/open-telemetry/semantic-conventions/pull/909 - - rename_attributes: - attribute_map: - state: db.client.connections.state - apply_to_metrics: - - db.client.connections.usage - - rename_attributes: - attribute_map: - pool.name: db.client.connections.pool.name - apply_to_metrics: - - db.client.connections.usage - - db.client.connections.idle.max - - db.client.connections.idle.min - - db.client.connections.max - - db.client.connections.pending_requests - - db.client.connections.timeouts - - db.client.connections.create_time - - db.client.connections.wait_time - - db.client.connections.use_time - all: - changes: - # https://github:com/open-telemetry/semantic-conventions/pull/731/ - - rename_attributes: - attribute_map: - enduser.id: user.id - - 1.25.0: - spans: - changes: - # https://github.com/open-telemetry/semantic-conventions/pull/911 - - rename_attributes: - attribute_map: - db.name: db.namespace - # https://github.com/open-telemetry/semantic-conventions/pull/870 - - rename_attributes: - attribute_map: - db.sql.table: db.collection.name - db.mongodb.collection: db.collection.name - db.cosmosdb.container: db.collection.name - db.cassandra.table: db.collection.name - # https://github.com/open-telemetry/semantic-conventions/pull/798 - - rename_attributes: - attribute_map: - messaging.kafka.destination.partition: messaging.destination.partition.id - # https://github.com/open-telemetry/semantic-conventions/pull/875 - - rename_attributes: - attribute_map: - db.operation: db.operation.name - # https://github.com/open-telemetry/semantic-conventions/pull/913 - - rename_attributes: - attribute_map: - messaging.operation: messaging.operation.type - # https://github.com/open-telemetry/semantic-conventions/pull/866 - - rename_attributes: - attribute_map: - db.statement: db.query.text - metrics: - changes: - # https://github.com/open-telemetry/semantic-conventions/pull/484 - - rename_attributes: - attribute_map: - system.processes.status: system.process.status - apply_to_metrics: - - system.processes.count - - rename_metrics: - system.processes.count: system.process.count - system.processes.created: system.process.created - # https://github.com/open-telemetry/semantic-conventions/pull/625 - - rename_attributes: - attribute_map: - container.labels: container.label - k8s.pod.labels: k8s.pod.label - # https://github.com/open-telemetry/semantic-conventions/pull/330 - - rename_metrics: - process.threads: process.thread.count - process.open_file_descriptors: process.open_file_descriptor.count - - rename_attributes: - attribute_map: - state: process.cpu.state - apply_to_metrics: - - process.cpu.time - - process.cpu.utilization - - rename_attributes: - attribute_map: - direction: disk.io.direction - apply_to_metrics: - - process.disk.io - - rename_attributes: - attribute_map: - type: process.context_switch_type - apply_to_metrics: - - process.context_switches - - rename_attributes: - attribute_map: - direction: network.io.direction - apply_to_metrics: - - process.network.io - - rename_attributes: - attribute_map: - type: process.paging.fault_type - apply_to_metrics: - - process.paging.faults - all: - changes: - # https://github.com/open-telemetry/semantic-conventions/pull/854 - - rename_attributes: - attribute_map: - message.type: rpc.message.type - message.id: rpc.message.id - message.compressed_size: rpc.message.compressed_size - message.uncompressed_size: rpc.message.uncompressed_size - - 1.24.0: - metrics: - changes: - # https://github.com/open-telemetry/semantic-conventions/pull/536 - - rename_metrics: - jvm.memory.usage: jvm.memory.used - jvm.memory.usage_after_last_gc: jvm.memory.used_after_last_gc - # https://github.com/open-telemetry/semantic-conventions/pull/530 - - rename_attributes: - attribute_map: - system.network.io.direction: network.io.direction - system.disk.io.direction: disk.io.direction - 1.23.1: - 1.23.0: - metrics: - changes: - # https://github.com/open-telemetry/semantic-conventions/pull/20 - - rename_attributes: - attribute_map: - thread.daemon: jvm.thread.daemon - apply_to_metrics: - - jvm.thread.count - 1.22.0: - spans: - changes: - # https://github.com/open-telemetry/semantic-conventions/pull/229 - - rename_attributes: - attribute_map: - messaging.message.payload_size_bytes: messaging.message.body.size - # https://github.com/open-telemetry/opentelemetry-specification/pull/374 - - rename_attributes: - attribute_map: - http.resend_count: http.request.resend_count - metrics: - changes: - # https://github.com/open-telemetry/semantic-conventions/pull/224 - - rename_metrics: - http.client.duration: http.client.request.duration - http.server.duration: http.server.request.duration - # https://github.com/open-telemetry/semantic-conventions/pull/241 - - rename_metrics: - process.runtime.jvm.memory.usage: jvm.memory.usage - process.runtime.jvm.memory.committed: jvm.memory.committed - process.runtime.jvm.memory.limit: jvm.memory.limit - process.runtime.jvm.memory.usage_after_last_gc: jvm.memory.usage_after_last_gc - process.runtime.jvm.gc.duration: jvm.gc.duration - # also https://github.com/open-telemetry/semantic-conventions/pull/252 - process.runtime.jvm.threads.count: jvm.thread.count - # also https://github.com/open-telemetry/semantic-conventions/pull/252 - process.runtime.jvm.classes.loaded: jvm.class.loaded - # also https://github.com/open-telemetry/semantic-conventions/pull/252 - process.runtime.jvm.classes.unloaded: jvm.class.unloaded - # also https://github.com/open-telemetry/semantic-conventions/pull/252 - # and https://github.com/open-telemetry/semantic-conventions/pull/60 - process.runtime.jvm.classes.current_loaded: jvm.class.count - process.runtime.jvm.cpu.time: jvm.cpu.time - process.runtime.jvm.cpu.recent_utilization: jvm.cpu.recent_utilization - process.runtime.jvm.memory.init: jvm.memory.init - process.runtime.jvm.system.cpu.utilization: jvm.system.cpu.utilization - process.runtime.jvm.system.cpu.load_1m: jvm.system.cpu.load_1m - # https://github.com/open-telemetry/semantic-conventions/pull/253 - process.runtime.jvm.buffer.usage: jvm.buffer.memory.usage - # https://github.com/open-telemetry/semantic-conventions/pull/253 - process.runtime.jvm.buffer.limit: jvm.buffer.memory.limit - process.runtime.jvm.buffer.count: jvm.buffer.count - # https://github.com/open-telemetry/semantic-conventions/pull/20 - - rename_attributes: - attribute_map: - type: jvm.memory.type - pool: jvm.memory.pool.name - apply_to_metrics: - - jvm.memory.usage - - jvm.memory.committed - - jvm.memory.limit - - jvm.memory.usage_after_last_gc - - jvm.memory.init - - rename_attributes: - attribute_map: - name: jvm.gc.name - action: jvm.gc.action - apply_to_metrics: - - jvm.gc.duration - - rename_attributes: - attribute_map: - daemon: thread.daemon - apply_to_metrics: - - jvm.threads.count - - rename_attributes: - attribute_map: - pool: jvm.buffer.pool.name - apply_to_metrics: - - jvm.buffer.memory.usage - - jvm.buffer.memory.limit - - jvm.buffer.count - # https://github.com/open-telemetry/semantic-conventions/pull/89 - - rename_attributes: - attribute_map: - state: system.cpu.state - cpu: system.cpu.logical_number - apply_to_metrics: - - system.cpu.time - - system.cpu.utilization - - rename_attributes: - attribute_map: - state: system.memory.state - apply_to_metrics: - - system.memory.usage - - system.memory.utilization - - rename_attributes: - attribute_map: - state: system.paging.state - apply_to_metrics: - - system.paging.usage - - system.paging.utilization - - rename_attributes: - attribute_map: - type: system.paging.type - direction: system.paging.direction - apply_to_metrics: - - system.paging.faults - - system.paging.operations - - rename_attributes: - attribute_map: - device: system.device - direction: system.disk.direction - apply_to_metrics: - - system.disk.io - - system.disk.operations - - system.disk.io_time - - system.disk.operation_time - - system.disk.merged - - rename_attributes: - attribute_map: - device: system.device - state: system.filesystem.state - type: system.filesystem.type - mode: system.filesystem.mode - mountpoint: system.filesystem.mountpoint - apply_to_metrics: - - system.filesystem.usage - - system.filesystem.utilization - - rename_attributes: - attribute_map: - device: system.device - direction: system.network.direction - protocol: network.protocol - state: system.network.state - apply_to_metrics: - - system.network.dropped - - system.network.packets - - system.network.errors - - system.network.io - - system.network.connections - - rename_attributes: - attribute_map: - status: system.processes.status - apply_to_metrics: - - system.processes.count - # https://github.com/open-telemetry/semantic-conventions/pull/247 - - rename_metrics: - http.server.request.size: http.server.request.body.size - http.server.response.size: http.server.response.body.size - resources: - changes: - # https://github.com/open-telemetry/semantic-conventions/pull/178 - - rename_attributes: - attribute_map: - telemetry.auto.version: telemetry.distro.version - 1.21.0: - spans: - changes: - # https://github.com/open-telemetry/opentelemetry-specification/pull/3336 - - rename_attributes: - attribute_map: - messaging.kafka.client_id: messaging.client_id - messaging.rocketmq.client_id: messaging.client_id - # https://github.com/open-telemetry/opentelemetry-specification/pull/3402 - - rename_attributes: - attribute_map: - # net.peer.(name|port) attributes were usually populated on client side - # so they should be usually translated to server.(address|port) - # net.host.* attributes were only populated on server side - net.host.name: server.address - net.host.port: server.port - # was only populated on client side - net.sock.peer.name: server.socket.domain - # net.sock.peer.(addr|port) mapping is not possible - # since they applied to both client and server side - # were only populated on server side - net.sock.host.addr: server.socket.address - net.sock.host.port: server.socket.port - http.client_ip: client.address - # https://github.com/open-telemetry/opentelemetry-specification/pull/3426 - - rename_attributes: - attribute_map: - net.protocol.name: network.protocol.name - net.protocol.version: network.protocol.version - net.host.connection.type: network.connection.type - net.host.connection.subtype: network.connection.subtype - net.host.carrier.name: network.carrier.name - net.host.carrier.mcc: network.carrier.mcc - net.host.carrier.mnc: network.carrier.mnc - net.host.carrier.icc: network.carrier.icc - # https://github.com/open-telemetry/opentelemetry-specification/pull/3355 - - rename_attributes: - attribute_map: - http.method: http.request.method - http.status_code: http.response.status_code - http.scheme: url.scheme - http.url: url.full - http.request_content_length: http.request.body.size - http.response_content_length: http.response.body.size - metrics: - changes: - # https://github.com/open-telemetry/semantic-conventions/pull/53 - - rename_metrics: - process.runtime.jvm.cpu.utilization: process.runtime.jvm.cpu.recent_utilization - 1.20.0: - spans: - changes: - # https://github.com/open-telemetry/opentelemetry-specification/pull/3272 - - rename_attributes: - attribute_map: - net.app.protocol.name: net.protocol.name - net.app.protocol.version: net.protocol.version - 1.19.0: - spans: - changes: - # https://github.com/open-telemetry/opentelemetry-specification/pull/3209 - - rename_attributes: - attribute_map: - faas.execution: faas.invocation_id - # https://github.com/open-telemetry/opentelemetry-specification/pull/3188 - - rename_attributes: - attribute_map: - faas.id: cloud.resource_id - # https://github.com/open-telemetry/opentelemetry-specification/pull/3190 - - rename_attributes: - attribute_map: - http.user_agent: user_agent.original - resources: - changes: - # https://github.com/open-telemetry/opentelemetry-specification/pull/3190 - - rename_attributes: - attribute_map: - browser.user_agent: user_agent.original - 1.18.0: - 1.17.0: - spans: - changes: - # https://github.com/open-telemetry/opentelemetry-specification/pull/2957 - - rename_attributes: - attribute_map: - messaging.consumer_id: messaging.consumer.id - messaging.protocol: net.app.protocol.name - messaging.protocol_version: net.app.protocol.version - messaging.destination: messaging.destination.name - messaging.temp_destination: messaging.destination.temporary - messaging.destination_kind: messaging.destination.kind - messaging.message_id: messaging.message.id - messaging.conversation_id: messaging.message.conversation_id - messaging.message_payload_size_bytes: messaging.message.payload_size_bytes - messaging.message_payload_compressed_size_bytes: messaging.message.payload_compressed_size_bytes - messaging.rabbitmq.routing_key: messaging.rabbitmq.destination.routing_key - messaging.kafka.message_key: messaging.kafka.message.key - messaging.kafka.partition: messaging.kafka.destination.partition - messaging.kafka.tombstone: messaging.kafka.message.tombstone - messaging.rocketmq.message_type: messaging.rocketmq.message.type - messaging.rocketmq.message_tag: messaging.rocketmq.message.tag - messaging.rocketmq.message_keys: messaging.rocketmq.message.keys - messaging.kafka.consumer_group: messaging.kafka.consumer.group - 1.16.0: - 1.15.0: - spans: - changes: - # https://github.com/open-telemetry/opentelemetry-specification/pull/2743 - - rename_attributes: - attribute_map: - http.retry_count: http.resend_count - 1.14.0: - 1.13.0: - spans: - changes: - # https://github.com/open-telemetry/opentelemetry-specification/pull/2614 - - rename_attributes: - attribute_map: - net.peer.ip: net.sock.peer.addr - net.host.ip: net.sock.host.addr - 1.12.0: - 1.11.0: - 1.10.0: - 1.9.0: - 1.8.0: - spans: - changes: - - rename_attributes: - attribute_map: - db.cassandra.keyspace: db.name - db.hbase.namespace: db.name - 1.7.0: - 1.6.1: - 1.5.0: - 1.4.0: