From 279e5e17aa8307578794c1ded47cfcf2bf5d950a Mon Sep 17 00:00:00 2001 From: Josh Suereth Date: Fri, 12 May 2023 11:49:59 -0400 Subject: [PATCH] Remove semantic convention automation from Specification repository. (#3501) Removes semantic convention automation and programmatic pieces now that semantic conventions reside in a separate repository: https://github.com/open-telemetry/semantic-conventions Related [OTEP(s)](https://github.com/open-telemetry/oteps) [#0227](https://github.com/open-telemetry/oteps/blob/main/text/0227-separate-semantic-conventions.md) --- .github/workflows/checks.yaml | 14 - .github/workflows/publish-schemas.yml | 35 -- CONTRIBUTING.md | 5 - Makefile | 20 +- internal/tools/schema_check.sh | 66 --- semantic_conventions/README.md | 46 -- semantic_conventions/client.yaml | 38 -- semantic_conventions/deprecated/http.yaml | 41 -- semantic_conventions/deprecated/network.yaml | 101 ---- semantic_conventions/destination.yaml | 24 - semantic_conventions/exception.yaml | 33 -- semantic_conventions/http-common.yaml | 96 ---- semantic_conventions/logs/events.yaml | 32 -- semantic_conventions/logs/general.yaml | 19 - semantic_conventions/logs/log-exception.yaml | 16 - .../logs/log-feature_flag.yaml | 11 - semantic_conventions/metrics/http.yaml | 125 ----- .../metrics/process-runtime-jvm-metrics.yaml | 185 ------- semantic_conventions/resource/browser.yaml | 56 -- semantic_conventions/resource/cloud.yaml | 176 ------ .../resource/cloud_provider/aws/ecs.yaml | 42 -- .../resource/cloud_provider/aws/eks.yaml | 12 - .../resource/cloud_provider/aws/logs.yaml | 39 -- .../cloud_provider/gcp/cloud_run.yaml | 23 - .../resource/cloud_provider/heroku.yaml | 25 - semantic_conventions/resource/container.yaml | 34 -- .../resource/deployment_environment.yaml | 13 - semantic_conventions/resource/device.yaml | 41 -- semantic_conventions/resource/faas.yaml | 63 --- semantic_conventions/resource/host.yaml | 72 --- semantic_conventions/resource/k8s.yaml | 210 ------- semantic_conventions/resource/os.yaml | 65 --- semantic_conventions/resource/process.yaml | 102 ---- semantic_conventions/resource/service.yaml | 18 - .../resource/service_experimental.yaml | 42 -- semantic_conventions/resource/telemetry.yaml | 57 -- .../resource/telemetry_experimental.yaml | 12 - semantic_conventions/resource/webengine.yaml | 23 - .../scope/exporter/exporter.yaml | 30 - semantic_conventions/server.yaml | 37 -- semantic_conventions/source.yaml | 24 - semantic_conventions/trace/aws/lambda.yaml | 14 - semantic_conventions/trace/cloudevents.yaml | 36 -- semantic_conventions/trace/compatibility.yaml | 21 - semantic_conventions/trace/database.yaml | 516 ------------------ .../trace/exporter/exporter.yaml | 21 - semantic_conventions/trace/faas.yaml | 204 ------- semantic_conventions/trace/feature-flag.yaml | 34 -- semantic_conventions/trace/general.yaml | 249 --------- semantic_conventions/trace/http.yaml | 145 ----- .../trace/instrumentation/aws-sdk.yml | 516 ------------------ .../trace/instrumentation/graphql.yml | 32 -- semantic_conventions/trace/messaging.yaml | 374 ------------- semantic_conventions/trace/rpc.yaml | 263 --------- .../trace/trace-exception.yaml | 38 -- semantic_conventions/url.yaml | 39 -- semantic_conventions/user-agent.yaml | 10 - semantic_conventions/version.properties | 1 - specification/overview.md | 9 +- 59 files changed, 5 insertions(+), 4640 deletions(-) delete mode 100644 .github/workflows/publish-schemas.yml delete mode 100755 internal/tools/schema_check.sh delete mode 100644 semantic_conventions/README.md delete mode 100644 semantic_conventions/client.yaml delete mode 100644 semantic_conventions/deprecated/http.yaml delete mode 100644 semantic_conventions/deprecated/network.yaml delete mode 100644 semantic_conventions/destination.yaml delete mode 100644 semantic_conventions/exception.yaml delete mode 100644 semantic_conventions/http-common.yaml delete mode 100644 semantic_conventions/logs/events.yaml delete mode 100644 semantic_conventions/logs/general.yaml delete mode 100644 semantic_conventions/logs/log-exception.yaml delete mode 100644 semantic_conventions/logs/log-feature_flag.yaml delete mode 100644 semantic_conventions/metrics/http.yaml delete mode 100644 semantic_conventions/metrics/process-runtime-jvm-metrics.yaml delete mode 100644 semantic_conventions/resource/browser.yaml delete mode 100644 semantic_conventions/resource/cloud.yaml delete mode 100644 semantic_conventions/resource/cloud_provider/aws/ecs.yaml delete mode 100644 semantic_conventions/resource/cloud_provider/aws/eks.yaml delete mode 100644 semantic_conventions/resource/cloud_provider/aws/logs.yaml delete mode 100644 semantic_conventions/resource/cloud_provider/gcp/cloud_run.yaml delete mode 100644 semantic_conventions/resource/cloud_provider/heroku.yaml delete mode 100644 semantic_conventions/resource/container.yaml delete mode 100644 semantic_conventions/resource/deployment_environment.yaml delete mode 100644 semantic_conventions/resource/device.yaml delete mode 100644 semantic_conventions/resource/faas.yaml delete mode 100644 semantic_conventions/resource/host.yaml delete mode 100644 semantic_conventions/resource/k8s.yaml delete mode 100644 semantic_conventions/resource/os.yaml delete mode 100644 semantic_conventions/resource/process.yaml delete mode 100644 semantic_conventions/resource/service.yaml delete mode 100644 semantic_conventions/resource/service_experimental.yaml delete mode 100644 semantic_conventions/resource/telemetry.yaml delete mode 100644 semantic_conventions/resource/telemetry_experimental.yaml delete mode 100644 semantic_conventions/resource/webengine.yaml delete mode 100644 semantic_conventions/scope/exporter/exporter.yaml delete mode 100644 semantic_conventions/server.yaml delete mode 100644 semantic_conventions/source.yaml delete mode 100644 semantic_conventions/trace/aws/lambda.yaml delete mode 100644 semantic_conventions/trace/cloudevents.yaml delete mode 100644 semantic_conventions/trace/compatibility.yaml delete mode 100644 semantic_conventions/trace/database.yaml delete mode 100644 semantic_conventions/trace/exporter/exporter.yaml delete mode 100644 semantic_conventions/trace/faas.yaml delete mode 100644 semantic_conventions/trace/feature-flag.yaml delete mode 100644 semantic_conventions/trace/general.yaml delete mode 100644 semantic_conventions/trace/http.yaml delete mode 100644 semantic_conventions/trace/instrumentation/aws-sdk.yml delete mode 100644 semantic_conventions/trace/instrumentation/graphql.yml delete mode 100644 semantic_conventions/trace/messaging.yaml delete mode 100644 semantic_conventions/trace/rpc.yaml delete mode 100644 semantic_conventions/trace/trace-exception.yaml delete mode 100644 semantic_conventions/url.yaml delete mode 100644 semantic_conventions/user-agent.yaml delete mode 100644 semantic_conventions/version.properties diff --git a/.github/workflows/checks.yaml b/.github/workflows/checks.yaml index df8d7853717..1fd452699ca 100644 --- a/.github/workflows/checks.yaml +++ b/.github/workflows/checks.yaml @@ -82,17 +82,3 @@ jobs: - name: run docfx run: docfx build --dry-run - - semantic-conventions: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v1 - - name: verify semantic convention tables - run: make table-check - - schemas-check: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v1 - - name: verify schemas - run: make schema-check diff --git a/.github/workflows/publish-schemas.yml b/.github/workflows/publish-schemas.yml deleted file mode 100644 index 80bfd634bf4..00000000000 --- a/.github/workflows/publish-schemas.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: Update Schema files at OpenTelemetry Website - -on: - # triggers only on a manual dispatch - workflow_dispatch: - -jobs: - update-docs: - runs-on: ubuntu-latest - steps: - - name: checkout - uses: actions/checkout@v2.3.4 - - name: make-pr - env: - API_TOKEN_GITHUB: ${{secrets.DOC_UPDATE_TOKEN}} - # Destination repo should always be 'open-telemetry/opentelemetry.io' - DESTINATION_REPO: open-telemetry/opentelemetry.io - # Destination path should be the absolute path to directory to publish in - DESTINATION_PATH: static/schemas - # Source path should be 'schemas', all files and folders are copied from here to dest - SOURCE_PATH: schemas - run: | - TARGET_DIR=$(mktemp -d) - export GITHUB_TOKEN=$API_TOKEN_GITHUB - git config --global user.name austinlparker - git config --global user.email austin@lightstep.com - git clone "https://$API_TOKEN_GITHUB@github.com/$DESTINATION_REPO.git" "$TARGET_DIR" - rsync -av --delete "$SOURCE_PATH/" "$TARGET_DIR/$DESTINATION_PATH/" - cd "$TARGET_DIR" - git checkout -b schemas-$GITHUB_REPOSITORY-$GITHUB_SHA - git add . - git commit -m "Schemas update from $GITHUB_REPOSITORY" - git push -u origin HEAD:schemas-$GITHUB_REPOSITORY-$GITHUB_SHA - gh pr create -t "Schemas Update from $GITHUB_REPOSITORY" -b "This is an automated pull request." -B main -H schemas-$GITHUB_REPOSITORY-$GITHUB_SHA - echo "done" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 182abb69a5a..9363ef8ee72 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -90,11 +90,6 @@ See: - [Misspell Check](#misspell-check) - Markdown link checking (docs TODO) -### Semantic Conventions update - -Semantic convention is declared in YAML files and markdown tables are -generated from these files. Read about semantic convention updates [here](./semantic_conventions/README.md). - ### Autoformatting The Specification has some autogenerated components and additionally can do diff --git a/Makefile b/Makefile index 947b23f5f09..eaff5b9d8c5 100644 --- a/Makefile +++ b/Makefile @@ -12,7 +12,7 @@ SEMCONVGEN_VERSION=0.17.0 # TODO: add `yamllint` step to `all` after making sure it works on Mac. .PHONY: all -all: install-tools markdownlint markdown-link-check misspell table-check schema-check +all: install-tools markdownlint markdown-link-check misspell $(MISSPELL): cd $(TOOLS_DIR) && go build -o $(MISSPELL_BINARY) github.com/client9/misspell/cmd/misspell @@ -71,22 +71,6 @@ install-yamllint: yamllint: yamllint . -# Generate markdown tables from YAML definitions -.PHONY: table-generation -table-generation: - docker run --rm -v $(PWD)/semantic_conventions:/source -v $(PWD)/specification:/spec \ - otel/semconvgen:$(SEMCONVGEN_VERSION) -f /source markdown -md /spec - -# Check if current markdown tables differ from the ones that would be generated from YAML definitions -.PHONY: table-check -table-check: - docker run --rm -v $(PWD)/semantic_conventions:/source -v $(PWD)/specification:/spec \ - otel/semconvgen:$(SEMCONVGEN_VERSION) -f /source markdown -md /spec --md-check - -.PHONY: schema-check -schema-check: - $(TOOLS_DIR)/schema_check.sh - # Run all checks in order of speed / likely failure. .PHONY: check check: misspell markdownlint markdown-link-check @@ -94,7 +78,7 @@ check: misspell markdownlint markdown-link-check # Attempt to fix issues / regenerate tables. .PHONY: fix -fix: table-generation misspell-correction +fix: misspell-correction @echo "All autofixes complete" .PHONY: install-tools diff --git a/internal/tools/schema_check.sh b/internal/tools/schema_check.sh deleted file mode 100755 index d096d747709..00000000000 --- a/internal/tools/schema_check.sh +++ /dev/null @@ -1,66 +0,0 @@ -#!/usr/bin/env bash - -# This script does some minimal sanity checks of schema files. -# It expects to find a schema file for each version listed in CHANGELOG.md -# since 1.0.0 release. - -set -e - -BUILD_TOOL_SCHEMAS_VERSION=0.17.0 - -# List of versions that do not require or have a schema. -declare -a skip_versions=("1.0.0" "1.0.1" "1.1.0" "1.2.0" "1.3.0" "1.6.0") - -root_dir=$PWD -schemas_dir=$root_dir/schemas - -# Find all version sections in CHANGELOG that start with a number in 1..9 range. -grep -o -e '## v[1-9].*\s' $root_dir/CHANGELOG.md | grep -o '[1-9].*' | while read ver; do - if [[ " ${skip_versions[*]} " == *" $ver "* ]]; then - # Skip this version, it does not need a schema file. - continue - fi - - file="$schemas_dir/$ver" - echo -n "Ensure schema file $file exists... " - - # Check that the schema for the version exists. - if [ -f "$file" ]; then - echo "OK, exists." - else - echo "FAILED: $file does not exist. The schema file must exist because the version is declared in CHANGELOG.md." - exit 3 - fi - - curl --no-progress-meter https://opentelemetry.io/schemas/$ver > verify$ver - - diff verify$ver $file && echo "Published schema at https://opentelemetry.io/schemas/$ver is correct" \ - || (echo "Published schema at https://opentelemetry.io/schemas/$ver is incorrect!" && exit 3) - - rm verify$ver -done - -# Now check the content of all schema files in the ../shemas directory. -for file in $schemas_dir/*; do - # Filename is the version number. - ver=$(basename $file) - - echo -n "Checking schema file $file for version $ver... " - - # Check that the version is defined in the schema file. - if ! grep -q "\s$ver:" $file; then - echo "FAILED: $ver version definition is not found in $file" - exit 1 - fi - - # Check that the schema_url matches the version. - if ! grep -q "schema_url: https://opentelemetry.io/schemas/$ver" $file; then - echo "FAILED: schema_url is not found in $file" - exit 2 - fi - - docker run -v $schemas_dir:/schemas \ - otel/build-tool-schemas:$BUILD_TOOL_SCHEMAS_VERSION --file /schemas/$ver --version=$ver - - echo "OK" -done diff --git a/semantic_conventions/README.md b/semantic_conventions/README.md deleted file mode 100644 index 99688841421..00000000000 --- a/semantic_conventions/README.md +++ /dev/null @@ -1,46 +0,0 @@ -# YAML Model for Semantic Conventions - -The YAML descriptions of semantic convention contained in this directory are intended to -be used by the various OpenTelemetry language implementations to aid in automatic -generation of semantics-related code. - -⚠ If you want to read the semantic conventions and not edit them, please see -the generated markdown output under `/specification/*/semantic_conventions/`, -i.e.: - -* [Trace semantic conventions](../specification/trace/semantic_conventions/README.md) -* [Metric semantic conventions](../specification/metrics/semantic_conventions/README.md) -* [Resource semantic conventions](../specification/resource/semantic_conventions/README.md) - -## Writing semantic conventions - -Semantic conventions for the spec MUST adhere to the -[attribute naming](../specification/common/attribute-naming.md), -[attribute requirement level](../specification/common/attribute-requirement-level.md), -and [metric requirement level](../specification/metrics/metric-requirement-level.md) conventions. - -Refer to the [syntax](https://github.com/open-telemetry/build-tools/tree/v0.17.0/semantic-conventions/syntax.md) -for how to write the YAML files for semantic conventions and what the YAML properties mean. - -A schema file for VS code is configured in the `/.vscode/settings.json` of this -repository, enabling auto-completion and additional checks. Refer to -[the generator README](https://github.com/open-telemetry/build-tools/tree/v0.17.0/semantic-conventions/README.md) for what extension you need. - -## Generating markdown - -These YAML files are used by the make target `table-generation` to generate consistently -formatted Markdown tables for all semantic conventions in the specification. Run it from the root of this repository using the command - -``` -make table-generation -``` - -For more information, see the [semantic convention generator](https://github.com/open-telemetry/build-tools/tree/v0.17.0/semantic-conventions) -in the OpenTelemetry build tools repository. -Using this build tool, it is also possible to generate code for use in OpenTelemetry -language projects. - -See also: - -* [Markdown Tables](https://github.com/open-telemetry/build-tools/tree/main/semantic-conventions#markdown-tables) -* [Code Generator](https://github.com/open-telemetry/build-tools/tree/main/semantic-conventions#code-generator) diff --git a/semantic_conventions/client.yaml b/semantic_conventions/client.yaml deleted file mode 100644 index 1b54ced8cc8..00000000000 --- a/semantic_conventions/client.yaml +++ /dev/null @@ -1,38 +0,0 @@ -groups: - - id: client - prefix: client - type: attribute_group - brief: > - These attributes may be used to describe the client in a connection-based network interaction - where there is one side that initiates the connection (the client is the side that initiates the connection). - This covers all TCP network interactions since TCP is connection-based and one side initiates the - connection (an exception is made for peer-to-peer communication over TCP where the "user-facing" surface of the - protocol / API does not expose a clear notion of client and server). - This also covers UDP network interactions where one side initiates the interaction, e.g. QUIC (HTTP/3) and DNS. - attributes: - - id: address - type: string - brief: Client address - unix domain socket name, IPv4 or IPv6 address. - note: > - When observed from the server side, and when communicating through an intermediary, `client.address` SHOULD represent - client address behind any intermediaries (e.g. proxies) if it's available. - examples: ['/tmp/my.sock', '10.1.2.80'] - - id: port - type: int - brief: 'Client port number' - examples: [65123] - note: > - When observed from the server side, and when communicating through an intermediary, `client.port` SHOULD represent - client port behind any intermediaries (e.g. proxies) if it's available. - - id: socket.address - type: string - brief: Immediate client peer address - unix domain socket name, IPv4 or IPv6 address. - examples: ['/tmp/my.sock', '127.0.0.1'] - requirement_level: - recommended: If different than `client.address`. - - id: socket.port - type: int - brief: 'Immediate client peer port number' - examples: [35555] - requirement_level: - recommended: If different than `client.port`. diff --git a/semantic_conventions/deprecated/http.yaml b/semantic_conventions/deprecated/http.yaml deleted file mode 100644 index f904126c672..00000000000 --- a/semantic_conventions/deprecated/http.yaml +++ /dev/null @@ -1,41 +0,0 @@ -groups: - - id: attributes.http.deprecated - type: attribute_group - brief: "Describes deprecated HTTP attributes." - prefix: http - attributes: - - id: method - type: string - brief: 'Deprecated, use `http.request.method` instead.' - stability: deprecated - examples: ["GET", "POST", "HEAD"] - - id: status_code - type: int - brief: 'Deprecated, use `http.response.status_code` instead.' - stability: deprecated - examples: [200] - - id: scheme - type: string - brief: 'Deprecated, use `url.scheme` instead.' - stability: deprecated - examples: ['http', 'https'] - - id: url - type: string - brief: 'Deprecated, use `url.full` instead.' - stability: deprecated - examples: ['https://www.foo.bar/search?q=OpenTelemetry#SemConv'] - - id: target - type: string - brief: 'Deprecated, use `url.path` and `url.query` instead.' - stability: deprecated - examples: ['/search?q=OpenTelemetry#SemConv'] - - id: request_content_length - type: int - brief: 'Deprecated, use `http.request.body.size` instead.' - stability: deprecated - examples: 3495 - - id: response_content_length - type: int - brief: 'Deprecated, use `http.response.body.size` instead.' - stability: deprecated - examples: 3495 diff --git a/semantic_conventions/deprecated/network.yaml b/semantic_conventions/deprecated/network.yaml deleted file mode 100644 index 17b75b90e3d..00000000000 --- a/semantic_conventions/deprecated/network.yaml +++ /dev/null @@ -1,101 +0,0 @@ -groups: - - id: network-deprecated - prefix: net - type: attribute_group - brief: > - These attributes may be used for any network related operation. - attributes: - - id: sock.peer.name - type: string - stability: deprecated - brief: Deprecated, use `server.socket.domain` on client spans. - examples: ['/var/my.sock'] - - id: sock.peer.addr - type: string - stability: deprecated - brief: > - Deprecated, use `server.socket.address` on client spans and `client.socket.address` on server spans. - examples: ['192.168.0.1'] - - id: sock.peer.port - type: int - stability: deprecated - examples: [65531] - brief: Deprecated, use `server.socket.port` on client spans and `client.socket.port` on server spans. - - id: peer.name - type: string - stability: deprecated - brief: Deprecated, use `server.address` on client spans and `client.address` on server spans. - examples: ['example.com'] - - id: peer.port - type: int - stability: deprecated - brief: Deprecated, use `server.port` on client spans and `client.port` on server spans. - examples: [8080] - - id: host.name - type: string - stability: deprecated - brief: Deprecated, use `server.address`. - examples: ['example.com'] - - id: host.port - type: int - stability: deprecated - brief: Deprecated, use `server.port`. - examples: [8080] - - id: sock.host.addr - type: string - stability: deprecated - brief: Deprecated, use `server.socket.address`. - examples: ['/var/my.sock'] - - id: sock.host.port - type: int - stability: deprecated - brief: Deprecated, use `server.socket.port`. - examples: [8080] - - id: transport - type: - allow_custom_values: true - members: - - id: ip_tcp - value: "ip_tcp" - - id: ip_udp - value: "ip_udp" - - id: pipe - value: "pipe" - brief: 'Named or anonymous pipe.' - - id: inproc - value: "inproc" - brief: 'In-process communication.' - note: > - Signals that there is only in-process communication not using a "real" network protocol - in cases where network attributes would normally be expected. Usually all other network - attributes can be left out in that case. - - id: other - value: "other" - brief: 'Something else (non IP-based).' - stability: deprecated - brief: Deprecated, use `network.transport`. - - id: protocol.name - type: string - stability: deprecated - brief: Deprecated, use `network.protocol.name`. - examples: ['amqp', 'http', 'mqtt'] - - id: protocol.version - type: string - stability: deprecated - brief: Deprecated, use `network.protocol.version`. - examples: '3.1.1' - - id: sock.family - type: - allow_custom_values: true - members: - - id: inet - value: 'inet' - brief: "IPv4 address" - - id: inet6 - value: 'inet6' - brief: "IPv6 address" - - id: unix - value: 'unix' - brief: "Unix domain socket path" - stability: deprecated - brief: Deprecated, use `network.transport` and `network.type`. diff --git a/semantic_conventions/destination.yaml b/semantic_conventions/destination.yaml deleted file mode 100644 index 2df72bd9f38..00000000000 --- a/semantic_conventions/destination.yaml +++ /dev/null @@ -1,24 +0,0 @@ -groups: - - id: destination - prefix: destination - type: attribute_group - brief: These attributes may be used to describe the receiver of a network exchange/packet. These should be used - when there is no client/server relationship between the two sides, or when that relationship is unknown. - This covers low-level network interactions (e.g. packet tracing) where you don't know if - there was a connection or which side initiated it. - This also covers unidirectional UDP flows and peer-to-peer communication where the - "user-facing" surface of the protocol / API does not expose a clear notion of client and server. - attributes: - - id: domain - type: string - brief: The domain name of the destination system. - examples: ['foo.example.com'] - note: This value may be a host name, a fully qualified domain name, or another host naming format. - - id: address - type: string - brief: 'Peer address, for example IP address or UNIX socket name.' - examples: ['10.5.3.2'] - - id: port - type: int - brief: 'Peer port number' - examples: [3389, 2888] diff --git a/semantic_conventions/exception.yaml b/semantic_conventions/exception.yaml deleted file mode 100644 index 9f47fb67009..00000000000 --- a/semantic_conventions/exception.yaml +++ /dev/null @@ -1,33 +0,0 @@ -groups: - - id: exception - type: span - prefix: exception - brief: > - This document defines the shared attributes used to - report a single exception associated with a span or log. - attributes: - - id: type - type: string - brief: > - The type of the exception (its fully-qualified class name, if applicable). - The dynamic type of the exception should be preferred over the static type - in languages that support it. - examples: ["java.net.ConnectException", "OSError"] - - id: message - type: string - brief: The exception message. - examples: ["Division by zero", "Can't convert 'int' object to str implicitly"] - - id: stacktrace - type: string - brief: > - A stacktrace as a string in the natural representation for the language runtime. - The representation is to be determined and documented by each language SIG. - examples: 'Exception in thread "main" java.lang.RuntimeException: Test exception\n - at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\n - at com.example.GenerateTrace.methodA(GenerateTrace.java:9)\n - at com.example.GenerateTrace.main(GenerateTrace.java:5)' - - constraints: - - any_of: - - "exception.type" - - "exception.message" diff --git a/semantic_conventions/http-common.yaml b/semantic_conventions/http-common.yaml deleted file mode 100644 index 32957620073..00000000000 --- a/semantic_conventions/http-common.yaml +++ /dev/null @@ -1,96 +0,0 @@ -groups: - - id: attributes.http.common - type: attribute_group - brief: "Describes HTTP attributes." - prefix: http - attributes: - - id: request.method - type: string - requirement_level: required - brief: 'HTTP request method.' - examples: ["GET", "POST", "HEAD"] - - id: response.status_code - type: int - requirement_level: - conditionally_required: If and only if one was received/sent. - brief: '[HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).' - examples: [200] - - ref: network.protocol.name - examples: ['http', 'spdy'] - requirement_level: - recommended: if not default (`http`). - - ref: network.protocol.version - examples: ['1.0', '1.1', '2.0'] - - - id: attributes.http.client - prefix: http - type: attribute_group - brief: 'HTTP Client spans attributes' - attributes: - - ref: server.address - requirement_level: required - brief: > - Host identifier of the ["URI origin"](https://www.rfc-editor.org/rfc/rfc9110.html#name-uri-origin) HTTP request is sent to. - note: | - Determined by using the first of the following that applies - - - Host identifier of the [request target](https://www.rfc-editor.org/rfc/rfc9110.html#target.resource) - if it's sent in absolute-form - - Host identifier of the `Host` header - - SHOULD NOT be set if capturing it would require an extra DNS lookup. - - ref: server.port - requirement_level: - conditionally_required: If not default (`80` for `http` scheme, `443` for `https`). - brief: > - Port identifier of the ["URI origin"](https://www.rfc-editor.org/rfc/rfc9110.html#name-uri-origin) HTTP request is sent to. - note: > - When [request target](https://www.rfc-editor.org/rfc/rfc9110.html#target.resource) is absolute URI, `server.port` MUST match - URI port identifier, otherwise it MUST match `Host` header port identifier. - - - id: attributes.http.server - prefix: http - type: attribute_group - brief: 'HTTP Server spans attributes' - attributes: - - id: route - type: string - requirement_level: - conditionally_required: If and only if it's available - brief: > - The matched route (path template in the format used by the respective server framework). See note below - examples: ['/users/:userID?', '{controller}/{action}/{id?}'] - note: > - MUST NOT be populated when this is not supported by the HTTP server framework as the route attribute should have low-cardinality and the URI path can NOT substitute it. - - SHOULD include the [application root](/specification/trace/semantic_conventions/http.md#http-server-definitions) if there is one. - - ref: server.address - requirement_level: required - brief: > - Name of the local HTTP server that received the request. - note: | - Determined by using the first of the following that applies - - - The [primary server name](/specification/trace/semantic_conventions/http.md#http-server-definitions) of the matched virtual host. MUST only - include host identifier. - - Host identifier of the [request target](https://www.rfc-editor.org/rfc/rfc9110.html#target.resource) - if it's sent in absolute-form. - - Host identifier of the `Host` header - - SHOULD NOT be set if only IP address is available and capturing name would require a reverse DNS lookup. - - - ref: server.port - requirement_level: - conditionally_required: If not default (`80` for `http` scheme, `443` for `https`). - brief: > - Port of the local HTTP server that received the request. - note: | - Determined by using the first of the following that applies - - - Port identifier of the [primary server host](/specification/trace/semantic_conventions/http.md#http-server-definitions) of the matched virtual host. - - Port identifier of the [request target](https://www.rfc-editor.org/rfc/rfc9110.html#target.resource) - if it's sent in absolute-form. - - Port identifier of the `Host` header - - ref: url.scheme - requirement_level: required - examples: ["http", "https"] diff --git a/semantic_conventions/logs/events.yaml b/semantic_conventions/logs/events.yaml deleted file mode 100644 index f3398c9ac12..00000000000 --- a/semantic_conventions/logs/events.yaml +++ /dev/null @@ -1,32 +0,0 @@ -groups: - - id: event - type: attribute_group - prefix: event - brief: > - This document defines attributes for Events represented using Log Records. - attributes: - - id: name - type: string - requirement_level: required - brief: > - The name identifies the event. - examples: ['click', 'exception'] - - id: domain - brief: > - The domain identifies the business context for the events. - type: - allow_custom_values: true - members: - - id: browser - value: 'browser' - brief: 'Events from browser apps' - - id: device - value: 'device' - brief: 'Events from mobile apps' - - id: k8s - value: 'k8s' - brief: 'Events from Kubernetes' - requirement_level: required - note: | - Events across different domains may have same `event.name`, yet be - unrelated events. diff --git a/semantic_conventions/logs/general.yaml b/semantic_conventions/logs/general.yaml deleted file mode 100644 index 48da970c137..00000000000 --- a/semantic_conventions/logs/general.yaml +++ /dev/null @@ -1,19 +0,0 @@ -groups: - - id: log.record - prefix: log.record - type: attribute_group - brief: > - The attributes described in this section are rather generic. They may be used in any Log Record they apply to. - attributes: - - id: uid - type: string - requirement_level: opt_in - brief: > - A unique identifier for the Log Record. - note: > - If an id is provided, other log records with the same id will be considered duplicates and can be removed safely. - This means, that two distinguishable log records MUST have different values. - - The id MAY be an [Universally Unique Lexicographically Sortable Identifier (ULID)](https://github.com/ulid/spec), - but other identifiers (e.g. UUID) may be used as needed. - examples: ["01ARZ3NDEKTSV4RRFFQ69G5FAV"] diff --git a/semantic_conventions/logs/log-exception.yaml b/semantic_conventions/logs/log-exception.yaml deleted file mode 100644 index d0b251552aa..00000000000 --- a/semantic_conventions/logs/log-exception.yaml +++ /dev/null @@ -1,16 +0,0 @@ -groups: - - id: log-exception - type: attribute_group - prefix: exception - brief: > - This document defines attributes for exceptions represented using Log - Records. - attributes: - - ref: exception.type - - ref: exception.message - - ref: exception.stacktrace - - constraints: - - any_of: - - "exception.type" - - "exception.message" diff --git a/semantic_conventions/logs/log-feature_flag.yaml b/semantic_conventions/logs/log-feature_flag.yaml deleted file mode 100644 index 6d902423f59..00000000000 --- a/semantic_conventions/logs/log-feature_flag.yaml +++ /dev/null @@ -1,11 +0,0 @@ -groups: - - id: log-feature_flag - type: event - prefix: feature_flag - brief: > - This document defines attributes for feature flag evaluations - represented using Log Records. - attributes: - - ref: feature_flag.key - - ref: feature_flag.provider_name - - ref: feature_flag.variant diff --git a/semantic_conventions/metrics/http.yaml b/semantic_conventions/metrics/http.yaml deleted file mode 100644 index 6a5089b6de1..00000000000 --- a/semantic_conventions/metrics/http.yaml +++ /dev/null @@ -1,125 +0,0 @@ -groups: - - id: metric.http.server.duration - type: metric - metric_name: http.server.duration - brief: "Measures the duration of inbound HTTP requests." - instrument: histogram - unit: "s" - extends: attributes.http.server - attributes: - # todo (lmolkova) build tools don't populate grandparent attributes - - ref: http.request.method - - ref: http.response.status_code - - ref: network.protocol.name - - ref: network.protocol.version - - - id: metric.http.server.active_requests - type: metric - metric_name: http.server.active_requests - brief: "Measures the number of concurrent HTTP requests that are currently in-flight." - instrument: updowncounter - unit: "{request}" - attributes: - - ref: http.request.method - - ref: url.scheme - requirement_level: required - examples: ["http", "https"] - - ref: server.address - requirement_level: required - brief: > - Name of the local HTTP server that received the request. - note: | - Determined by using the first of the following that applies - - - The [primary server name](/specification/trace/semantic_conventions/http.md#http-server-definitions) of the matched virtual host. MUST only - include host identifier. - - Host identifier of the [request target](https://www.rfc-editor.org/rfc/rfc9110.html#target.resource) - if it's sent in absolute-form. - - Host identifier of the `Host` header - - SHOULD NOT be set if only IP address is available and capturing name would require a reverse DNS lookup. - - - ref: server.port - requirement_level: - conditionally_required: If not default (`80` for `http` scheme, `443` for `https`). - brief: > - Port of the local HTTP server that received the request. - note: | - Determined by using the first of the following that applies - - - Port identifier of the [primary server host](/specification/trace/semantic_conventions/http.md#http-server-definitions) of the matched virtual host. - - Port identifier of the [request target](https://www.rfc-editor.org/rfc/rfc9110.html#target.resource) - if it's sent in absolute-form. - - Port identifier of the `Host` header - - - id: metric.http.server.request.size - type: metric - metric_name: http.server.request.size - brief: "Measures the size of HTTP request messages (compressed)." - instrument: histogram - unit: "By" - extends: attributes.http.server - # TODO (trask) below attributes are identical to above in metric.http.server.duration - attributes: - # todo (lmolkova) build tools don't populate grandparent attributes - - ref: http.request.method - - ref: http.response.status_code - - ref: network.protocol.name - - ref: network.protocol.version - - - id: metric.http.server.response.size - type: metric - metric_name: http.server.response.size - brief: "Measures the size of HTTP response messages (compressed)." - instrument: histogram - unit: "By" - extends: attributes.http.server - # TODO (trask) below attributes are identical to above in metric.http.server.duration - attributes: - - ref: http.request.method - - ref: http.response.status_code - - ref: network.protocol.name - - ref: network.protocol.version - - - id: metric.http.client.duration - type: metric - metric_name: http.client.duration - brief: "Measures the duration of outbound HTTP requests." - instrument: histogram - unit: "s" - extends: attributes.http.client - attributes: - - ref: http.request.method - - ref: http.response.status_code - - ref: network.protocol.name - - ref: network.protocol.version - - ref: server.socket.address - - id: metric.http.client.request.size - type: metric - metric_name: http.client.request.size - brief: "Measures the size of HTTP request messages (compressed)." - instrument: histogram - unit: "By" - extends: attributes.http.client - # TODO (trask) below attributes are identical to above in metric.http.client.duration - attributes: - - ref: http.request.method - - ref: http.response.status_code - - ref: network.protocol.name - - ref: network.protocol.version - - ref: server.socket.address - - - id: metric.http.client.response.size - type: metric - metric_name: http.client.response.size - brief: "Measures the size of HTTP response messages (compressed)." - instrument: histogram - unit: "By" - extends: attributes.http.client - # TODO (trask) below attributes are identical to above in metric.http.client.duration - attributes: - - ref: http.request.method - - ref: http.response.status_code - - ref: network.protocol.name - - ref: network.protocol.version - - ref: server.socket.address diff --git a/semantic_conventions/metrics/process-runtime-jvm-metrics.yaml b/semantic_conventions/metrics/process-runtime-jvm-metrics.yaml deleted file mode 100644 index 7efbdb824ff..00000000000 --- a/semantic_conventions/metrics/process-runtime-jvm-metrics.yaml +++ /dev/null @@ -1,185 +0,0 @@ -groups: - - id: attributes.process.runtime.jvm.memory - type: attribute_group - brief: "Describes JVM memory metric attributes." - attributes: - - id: type - type: - allow_custom_values: false - members: - - id: heap - value: 'heap' - brief: 'Heap memory.' - - id: non_heap - value: 'non_heap' - brief: 'Non-heap memory' - requirement_level: recommended - brief: The type of memory. - examples: ["heap", "non_heap"] - - id: pool - type: string - requirement_level: recommended - brief: Name of the memory pool. - examples: ["G1 Old Gen", "G1 Eden space", "G1 Survivor Space"] - note: > - Pool names are generally obtained via - [MemoryPoolMXBean#getName()](https://docs.oracle.com/en/java/javase/11/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#getName()). - - - id: metric.process.runtime.jvm.memory.usage - type: metric - metric_name: process.runtime.jvm.memory.usage - extends: attributes.process.runtime.jvm.memory - brief: "Measure of memory used." - instrument: updowncounter - unit: "By" - - - id: metric.process.runtime.jvm.memory.init - type: metric - metric_name: process.runtime.jvm.memory.init - extends: attributes.process.runtime.jvm.memory - brief: "Measure of initial memory requested." - instrument: updowncounter - unit: "By" - - - id: metric.process.runtime.jvm.memory.committed - type: metric - metric_name: process.runtime.jvm.memory.committed - extends: attributes.process.runtime.jvm.memory - brief: "Measure of memory committed." - instrument: updowncounter - unit: "By" - - - id: metric.process.runtime.jvm.memory.limit - type: metric - metric_name: process.runtime.jvm.memory.limit - extends: attributes.process.runtime.jvm.memory - brief: "Measure of max obtainable memory." - instrument: updowncounter - unit: "By" - - - id: metric.process.runtime.jvm.memory.usage_after_last_gc - type: metric - metric_name: process.runtime.jvm.memory.usage_after_last_gc - extends: attributes.process.runtime.jvm.memory - brief: "Measure of memory used, as measured after the most recent garbage collection event on this pool." - instrument: updowncounter - unit: "By" - - - id: metric.process.runtime.jvm.gc.duration - type: metric - metric_name: process.runtime.jvm.gc.duration - brief: "Duration of JVM garbage collection actions." - instrument: histogram - unit: "s" - attributes: - - id: gc - type: string - requirement_level: recommended - brief: Name of the garbage collector. - examples: ["G1 Young Generation", "G1 Old Generation"] - note: > - Garbage collector name is generally obtained via - [GarbageCollectionNotificationInfo#getGcName()](https://docs.oracle.com/en/java/javase/11/docs/api/jdk.management/com/sun/management/GarbageCollectionNotificationInfo.html#getGcName()). - - id: action - type: string - requirement_level: recommended - brief: Name of the garbage collector action. - examples: ["end of minor GC", "end of major GC"] - note: > - Garbage collector action is generally obtained via - [GarbageCollectionNotificationInfo#getGcAction()](https://docs.oracle.com/en/java/javase/11/docs/api/jdk.management/com/sun/management/GarbageCollectionNotificationInfo.html#getGcAction()). - - - id: metric.process.runtime.jvm.threads.count - type: metric - metric_name: process.runtime.jvm.threads.count - brief: "Number of executing threads." - instrument: updowncounter - unit: "{thread}" - attributes: - - id: daemon - brief: "Whether the thread is daemon or not." - type: boolean - requirement_level: recommended - - - id: metric.process.runtime.jvm.classes.loaded - type: metric - metric_name: process.runtime.jvm.classes.loaded - brief: "Number of classes loaded since JVM start." - instrument: counter - unit: "{class}" - - - id: metric.process.runtime.jvm.classes.unloaded - type: metric - metric_name: process.runtime.jvm.classes.unloaded - brief: "Number of classes unloaded since JVM start." - instrument: counter - unit: "{class}" - - - id: metric.process.runtime.jvm.classes.current_loaded - type: metric - metric_name: process.runtime.jvm.classes.current_loaded - brief: "Number of classes currently loaded." - instrument: updowncounter - unit: "{class}" - - - id: metric.process.runtime.jvm.cpu.utilization - type: metric - metric_name: process.runtime.jvm.cpu.utilization - brief: "Recent CPU utilization for the process." - note: > - This utilization is not defined as being for the specific interval since last measurement - (unlike `system.cpu.utilization`). - instrument: gauge - unit: "1" - - - id: metric.process.runtime.jvm.system.cpu.utilization - type: metric - metric_name: process.runtime.jvm.system.cpu.utilization - brief: "Recent CPU utilization for the whole system." - note: > - This utilization is not defined as being for the specific interval since last measurement - (unlike `system.cpu.utilization`). - instrument: gauge - unit: "1" - - - id: metric.process.runtime.jvm.system.cpu.load_1m - type: metric - metric_name: process.runtime.jvm.system.cpu.load_1m - brief: "Average CPU load of the whole system for the last minute." - instrument: gauge - unit: "1" - - - id: attributes.process.runtime.jvm.buffer - type: attribute_group - brief: "Describes JVM buffer metric attributes." - attributes: - - ref: pool - brief: Name of the buffer pool. - examples: [ "mapped", "direct" ] - note: > - Pool names are generally obtained via - [BufferPoolMXBean#getName()](https://docs.oracle.com/en/java/javase/11/docs/api/java.management/java/lang/management/BufferPoolMXBean.html#getName()). - - - id: metric.process.runtime.jvm.buffer.usage - type: metric - metric_name: process.runtime.jvm.buffer.usage - extends: attributes.process.runtime.jvm.buffer - brief: "Measure of memory used by buffers." - instrument: updowncounter - unit: "By" - - - id: metric.process.runtime.jvm.buffer.limit - type: metric - metric_name: process.runtime.jvm.buffer.limit - extends: attributes.process.runtime.jvm.buffer - brief: "Measure of total memory capacity of buffers." - instrument: updowncounter - unit: "By" - - - id: metric.process.runtime.jvm.buffer.count - type: metric - metric_name: process.runtime.jvm.buffer.count - extends: attributes.process.runtime.jvm.buffer - brief: "Number of buffers in the pool." - instrument: updowncounter - unit: "{buffer}" diff --git a/semantic_conventions/resource/browser.yaml b/semantic_conventions/resource/browser.yaml deleted file mode 100644 index 56830c1ddec..00000000000 --- a/semantic_conventions/resource/browser.yaml +++ /dev/null @@ -1,56 +0,0 @@ -groups: - - id: browser - prefix: browser - type: resource - brief: > - The web browser in which the application represented by the resource is running. - The `browser.*` attributes MUST be used only for resources that represent applications - running in a web browser (regardless of whether running on a mobile or desktop device). - attributes: - - id: brands - type: string[] - brief: 'Array of brand name and version separated by a space' - note: > - This value is intended to be taken from the - [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) - (`navigator.userAgentData.brands`). - examples: [" Not A;Brand 99", "Chromium 99", "Chrome 99"] - - id: platform - type: string - brief: 'The platform on which the browser is running' - note: > - This value is intended to be taken from the - [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) - (`navigator.userAgentData.platform`). If unavailable, the legacy - `navigator.platform` API SHOULD NOT be used instead and this attribute - SHOULD be left unset in order for the values to be consistent. - - The list of possible values is defined in the - [W3C User-Agent Client Hints specification](https://wicg.github.io/ua-client-hints/#sec-ch-ua-platform). - Note that some (but not all) of these values can overlap with values - in the [`os.type` and `os.name` attributes](./os.md). - However, for consistency, the values in the `browser.platform` attribute - should capture the exact value that the user agent provides. - examples: ['Windows', 'macOS', 'Android'] - - id: mobile - type: boolean - brief: 'A boolean that is true if the browser is running on a mobile device' - note: > - This value is intended to be taken from the - [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) - (`navigator.userAgentData.mobile`). If unavailable, this attribute - SHOULD be left unset. - - id: language - type: string - brief: 'Preferred language of the user using the browser' - note: > - This value is intended to be taken from the Navigator API - `navigator.language`. - examples: ["en", "en-US", "fr", "fr-FR"] - - ref: user_agent.original - brief: 'Full user-agent string provided by the browser' - note: > - The user-agent value SHOULD be provided only from browsers that do not have a mechanism - to retrieve brands and platform individually from the User-Agent Client Hints API. - To retrieve the value, the legacy `navigator.userAgent` API can be used. - examples: ['Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36'] diff --git a/semantic_conventions/resource/cloud.yaml b/semantic_conventions/resource/cloud.yaml deleted file mode 100644 index 5ee5da61284..00000000000 --- a/semantic_conventions/resource/cloud.yaml +++ /dev/null @@ -1,176 +0,0 @@ -groups: - - id: cloud - prefix: cloud - type: resource - brief: > - A cloud environment (e.g. GCP, Azure, AWS) - attributes: - - id: provider - type: - allow_custom_values: true - members: - - id: 'alibaba_cloud' - value: 'alibaba_cloud' - brief: 'Alibaba Cloud' - - id: 'aws' - value: 'aws' - brief: 'Amazon Web Services' - - id: 'azure' - value: 'azure' - brief: 'Microsoft Azure' - - id: 'gcp' - value: 'gcp' - brief: 'Google Cloud Platform' - - id: 'heroku' - value: 'heroku' - brief: 'Heroku Platform as a Service' - - id: 'ibm_cloud' - value: 'ibm_cloud' - brief: 'IBM Cloud' - - id: 'tencent_cloud' - value: 'tencent_cloud' - brief: 'Tencent Cloud' - - brief: > - Name of the cloud provider. - - id: account.id - type: string - brief: > - The cloud account ID the resource is assigned to. - examples: ['111111111111', 'opentelemetry'] - - id: region - type: string - brief: > - The geographical region the resource is running. - note: > - Refer to your provider's docs to see the available regions, for example - [Alibaba Cloud regions](https://www.alibabacloud.com/help/doc-detail/40654.htm), - [AWS regions](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/), - [Azure regions](https://azure.microsoft.com/en-us/global-infrastructure/geographies/), - [Google Cloud regions](https://cloud.google.com/about/locations), - or [Tencent Cloud regions](https://www.tencentcloud.com/document/product/213/6091). - examples: ['us-central1', 'us-east-1'] - - id: resource_id - type: string - brief: > - Cloud provider-specific native identifier of the monitored cloud resource - (e.g. an [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) on AWS, - a [fully qualified resource ID](https://learn.microsoft.com/en-us/rest/api/resources/resources/get-by-id) on Azure, - a [full resource name](https://cloud.google.com/apis/design/resource_names#full_resource_name) on GCP) - note: | - On some cloud providers, it may not be possible to determine the full ID at startup, - so it may be necessary to set `cloud.resource_id` as a span attribute instead. - - The exact value to use for `cloud.resource_id` depends on the cloud provider. - The following well-known definitions MUST be used if you set this attribute and they apply: - - * **AWS Lambda:** The function [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html). - Take care not to use the "invoked ARN" directly but replace any - [alias suffix](https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html) - with the resolved function version, as the same runtime instance may be invokable with - multiple different aliases. - * **GCP:** The [URI of the resource](https://cloud.google.com/iam/docs/full-resource-names) - * **Azure:** The [Fully Qualified Resource ID](https://docs.microsoft.com/en-us/rest/api/resources/resources/get-by-id) of the invoked function, - *not* the function app, having the form - `/subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/`. - This means that a span attribute MUST be used, as an Azure function app can host multiple functions that would usually share - a TracerProvider. - examples: - - 'arn:aws:lambda:REGION:ACCOUNT_ID:function:my-function' - - '//run.googleapis.com/projects/PROJECT_ID/locations/LOCATION_ID/services/SERVICE_ID' - - '/subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/' - - id: availability_zone - type: string - brief: > - Cloud regions often have multiple, isolated locations known as zones - to increase availability. Availability zone represents the - zone where the resource is running. - note: > - Availability zones are called "zones" on Alibaba Cloud and Google Cloud. - examples: ['us-east-1c'] - - id: platform - type: - allow_custom_values: true - members: - - id: alibaba_cloud_ecs - value: 'alibaba_cloud_ecs' - brief: Alibaba Cloud Elastic Compute Service - - id: alibaba_cloud_fc - value: 'alibaba_cloud_fc' - brief: Alibaba Cloud Function Compute - - id: alibaba_cloud_openshift - value: 'alibaba_cloud_openshift' - brief: Red Hat OpenShift on Alibaba Cloud - - id: aws_ec2 - value: 'aws_ec2' - brief: AWS Elastic Compute Cloud - - id: aws_ecs - value: 'aws_ecs' - brief: AWS Elastic Container Service - - id: aws_eks - value: 'aws_eks' - brief: AWS Elastic Kubernetes Service - - id: aws_lambda - value: 'aws_lambda' - brief: AWS Lambda - - id: aws_elastic_beanstalk - value: 'aws_elastic_beanstalk' - brief: AWS Elastic Beanstalk - - id: aws_app_runner - value: 'aws_app_runner' - brief: AWS App Runner - - id: aws_openshift - value: 'aws_openshift' - brief: Red Hat OpenShift on AWS (ROSA) - - id: azure_vm - value: 'azure_vm' - brief: Azure Virtual Machines - - id: azure_container_instances - value: 'azure_container_instances' - brief: Azure Container Instances - - id: azure_aks - value: 'azure_aks' - brief: Azure Kubernetes Service - - id: azure_functions - value: 'azure_functions' - brief: Azure Functions - - id: azure_app_service - value: 'azure_app_service' - brief: Azure App Service - - id: azure_openshift - value: 'azure_openshift' - brief: Azure Red Hat OpenShift - - id: gcp_compute_engine - value: 'gcp_compute_engine' - brief: Google Cloud Compute Engine (GCE) - - id: gcp_cloud_run - value: 'gcp_cloud_run' - brief: Google Cloud Run - - id: gcp_kubernetes_engine - value: 'gcp_kubernetes_engine' - brief: Google Cloud Kubernetes Engine (GKE) - - id: gcp_cloud_functions - value: 'gcp_cloud_functions' - brief: Google Cloud Functions (GCF) - - id: gcp_app_engine - value: 'gcp_app_engine' - brief: Google Cloud App Engine (GAE) - - id: gcp_openshift - value: 'gcp_openshift' - brief: Red Hat OpenShift on Google Cloud - - id: ibm_cloud_openshift - value: 'ibm_cloud_openshift' - brief: Red Hat OpenShift on IBM Cloud - - id: tencent_cloud_cvm - value: 'tencent_cloud_cvm' - brief: Tencent Cloud Cloud Virtual Machine (CVM) - - id: tencent_cloud_eks - value: 'tencent_cloud_eks' - brief: Tencent Cloud Elastic Kubernetes Service (EKS) - - id: tencent_cloud_scf - value: 'tencent_cloud_scf' - brief: Tencent Cloud Serverless Cloud Function (SCF) - brief: > - The cloud platform in use. - note: > - The prefix of the service SHOULD match the one specified in `cloud.provider`. diff --git a/semantic_conventions/resource/cloud_provider/aws/ecs.yaml b/semantic_conventions/resource/cloud_provider/aws/ecs.yaml deleted file mode 100644 index 2c6b8c9ba5e..00000000000 --- a/semantic_conventions/resource/cloud_provider/aws/ecs.yaml +++ /dev/null @@ -1,42 +0,0 @@ -groups: - - id: aws.ecs - prefix: aws.ecs - type: resource - brief: > - Resources used by AWS Elastic Container Service (ECS). - attributes: - - id: container.arn - type: string - brief: > - The Amazon Resource Name (ARN) of an [ECS container instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html). - examples: ['arn:aws:ecs:us-west-1:123456789123:container/32624152-9086-4f0e-acae-1a75b14fe4d9'] - - id: cluster.arn - type: string - brief: > - The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html). - examples: ['arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster'] - - id: launchtype - type: - allow_custom_values: false - members: - - id: ec2 - value: "ec2" - - id: fargate - value: "fargate" - brief: > - The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task. - - id: task.arn - type: string - brief: > - The ARN of an [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html). - examples: ['arn:aws:ecs:us-west-1:123456789123:task/10838bed-421f-43ef-870a-f43feacbbb5b'] - - id: task.family - type: string - brief: > - The task definition family this task definition is a member of. - examples: ['opentelemetry-family'] - - id: task.revision - type: string - brief: > - The revision for this task definition. - examples: ["8", "26"] diff --git a/semantic_conventions/resource/cloud_provider/aws/eks.yaml b/semantic_conventions/resource/cloud_provider/aws/eks.yaml deleted file mode 100644 index 2c897253ee2..00000000000 --- a/semantic_conventions/resource/cloud_provider/aws/eks.yaml +++ /dev/null @@ -1,12 +0,0 @@ -groups: - - id: aws.eks - prefix: aws.eks - type: resource - brief: > - Resources used by AWS Elastic Kubernetes Service (EKS). - attributes: - - id: cluster.arn - type: string - brief: > - The ARN of an EKS cluster. - examples: ['arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster'] diff --git a/semantic_conventions/resource/cloud_provider/aws/logs.yaml b/semantic_conventions/resource/cloud_provider/aws/logs.yaml deleted file mode 100644 index 8a433629bbc..00000000000 --- a/semantic_conventions/resource/cloud_provider/aws/logs.yaml +++ /dev/null @@ -1,39 +0,0 @@ -groups: - - id: aws.log - prefix: aws.log - type: resource - brief: > - Resources specific to Amazon Web Services. - attributes: - - id: group.names - type: string[] - brief: > - The name(s) of the AWS log group(s) an application is writing to. - examples: ['/aws/lambda/my-function', 'opentelemetry-service'] - note: > - Multiple log groups must be supported for cases like multi-container applications, - where a single application has sidecar containers, and each write to their own log - group. - - id: group.arns - type: string[] - brief: > - The Amazon Resource Name(s) (ARN) of the AWS log group(s). - examples: ['arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:*'] - note: > - See the - [log group ARN format documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format). - - id: stream.names - type: string[] - brief: > - The name(s) of the AWS log stream(s) an application is writing to. - examples: ['logs/main/10838bed-421f-43ef-870a-f43feacbbb5b'] - - id: stream.arns - type: string[] - brief: > - The ARN(s) of the AWS log stream(s). - examples: ['arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:log-stream:logs/main/10838bed-421f-43ef-870a-f43feacbbb5b'] - note: > - See the - [log stream ARN format documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format). - One log group can contain several log streams, so these ARNs necessarily identify both a log - group and a log stream. diff --git a/semantic_conventions/resource/cloud_provider/gcp/cloud_run.yaml b/semantic_conventions/resource/cloud_provider/gcp/cloud_run.yaml deleted file mode 100644 index e4da8f59296..00000000000 --- a/semantic_conventions/resource/cloud_provider/gcp/cloud_run.yaml +++ /dev/null @@ -1,23 +0,0 @@ -groups: - - id: gcp.cloud_run - prefix: gcp.cloud_run - type: resource - brief: > - Resource used by Google Cloud Run. - attributes: - - id: job.execution - type: string - brief: > - The name of the Cloud Run - [execution](https://cloud.google.com/run/docs/managing/job-executions) - being run for the Job, as set by the - [`CLOUD_RUN_EXECUTION`](https://cloud.google.com/run/docs/container-contract#jobs-env-vars) - environment variable. - examples: ['job-name-xxxx', 'sample-job-mdw84'] - - id: job.task_index - type: int - brief: > - The index for a task within an execution as provided by the - [`CLOUD_RUN_TASK_INDEX`](https://cloud.google.com/run/docs/container-contract#jobs-env-vars) - environment variable. - examples: [0, 1] diff --git a/semantic_conventions/resource/cloud_provider/heroku.yaml b/semantic_conventions/resource/cloud_provider/heroku.yaml deleted file mode 100644 index e73eddc1e70..00000000000 --- a/semantic_conventions/resource/cloud_provider/heroku.yaml +++ /dev/null @@ -1,25 +0,0 @@ -groups: - - id: heroku - prefix: heroku - type: resource - brief: > - Heroku dyno metadata - attributes: - - id: release.creation_timestamp - type: string - brief: > - Time and date the release was created - examples: [ '2022-10-23T18:00:42Z' ] - requirement_level: opt_in - - id: release.commit - type: string - brief: > - Commit hash for the current release - examples: [ 'e6134959463efd8966b20e75b913cafe3f5ec' ] - requirement_level: opt_in - - id: app.id - type: string - brief: > - Unique identifier for the application - examples: [ '2daa2797-e42b-4624-9322-ec3f968df4da' ] - requirement_level: opt_in diff --git a/semantic_conventions/resource/container.yaml b/semantic_conventions/resource/container.yaml deleted file mode 100644 index 6fdb1fd42f8..00000000000 --- a/semantic_conventions/resource/container.yaml +++ /dev/null @@ -1,34 +0,0 @@ -groups: - - id: container - prefix: container - type: resource - brief: > - A container instance. - attributes: - - id: name - type: string - brief: > - Container name used by container runtime. - examples: ['opentelemetry-autoconf'] - - id: id - type: string - brief: > - Container ID. Usually a UUID, as for example used to - [identify Docker containers](https://docs.docker.com/engine/reference/run/#container-identification). - The UUID might be abbreviated. - examples: ['a3bf90e006b2'] - - id: runtime - type: string - brief: > - The container runtime managing this container. - examples: ['docker', 'containerd', 'rkt'] - - id: image.name - type: string - brief: > - Name of the image the container was built on. - examples: ['gcr.io/opentelemetry/operator'] - - id: image.tag - type: string - brief: > - Container image tag. - examples: ['0.1'] diff --git a/semantic_conventions/resource/deployment_environment.yaml b/semantic_conventions/resource/deployment_environment.yaml deleted file mode 100644 index 336cabeced8..00000000000 --- a/semantic_conventions/resource/deployment_environment.yaml +++ /dev/null @@ -1,13 +0,0 @@ -groups: - - id: deployment - prefix: deployment - type: resource - brief: > - The software deployment. - attributes: - - id: environment - type: string - brief: > - Name of the [deployment environment](https://en.wikipedia.org/wiki/Deployment_environment) - (aka deployment tier). - examples: ['staging', 'production'] diff --git a/semantic_conventions/resource/device.yaml b/semantic_conventions/resource/device.yaml deleted file mode 100644 index 3df0a4d6a88..00000000000 --- a/semantic_conventions/resource/device.yaml +++ /dev/null @@ -1,41 +0,0 @@ -groups: - - id: device - prefix: device - type: resource - brief: > - The device on which the process represented by this resource is running. - attributes: - - id: id - type: string - brief: 'A unique identifier representing the device' - note: > - The device identifier MUST only be defined using the values outlined below. This value is not an advertising - identifier and MUST NOT be used as such. - On iOS (Swift or Objective-C), this value MUST be equal to the [vendor identifier](https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor). - On Android (Java or Kotlin), this value MUST be equal to the Firebase Installation ID or a globally unique - UUID which is persisted across sessions in your application. More information can be found [here](https://developer.android.com/training/articles/user-data-ids) - on best practices and exact implementation details. - Caution should be taken when storing personal data or anything which can identify a user. GDPR and - data protection laws may apply, ensure you do your own due diligence. - examples: ['2ab2916d-a51f-4ac8-80ee-45ac31a28092'] - - id: model.identifier - type: string - brief: 'The model identifier for the device' - note: > - It's recommended this value represents a machine readable version of - the model identifier rather than the market or consumer-friendly name - of the device. - examples: ['iPhone3,4', 'SM-G920F'] - - id: model.name - type: string - brief: 'The marketing name for the device model' - note: > - It's recommended this value represents a human readable version of the - device model rather than a machine readable alternative. - examples: ['iPhone 6s Plus', 'Samsung Galaxy S6'] - - id: manufacturer - type: string - brief: 'The name of the device manufacturer' - note: > - The Android OS provides this field via [Build](https://developer.android.com/reference/android/os/Build#MANUFACTURER). iOS apps SHOULD hardcode the value `Apple`. - examples: ['Apple', 'Samsung'] diff --git a/semantic_conventions/resource/faas.yaml b/semantic_conventions/resource/faas.yaml deleted file mode 100644 index 8f808ce5712..00000000000 --- a/semantic_conventions/resource/faas.yaml +++ /dev/null @@ -1,63 +0,0 @@ -groups: - - id: faas_resource - prefix: faas - type: resource - brief: > - A serverless instance. - attributes: - - id: name - type: string - requirement_level: required - brief: > - The name of the single function that this runtime instance executes. - note: | - This is the name of the function as configured/deployed on the FaaS - platform and is usually different from the name of the callback - function (which may be stored in the - [`code.namespace`/`code.function`](../../trace/semantic_conventions/span-general.md#source-code-attributes) - span attributes). - - For some cloud providers, the above definition is ambiguous. The following - definition of function name MUST be used for this attribute - (and consequently the span name) for the listed cloud providers/products: - - * **Azure:** The full name `/`, i.e., function app name - followed by a forward slash followed by the function name (this form - can also be seen in the resource JSON for the function). - This means that a span attribute MUST be used, as an Azure function - app can host multiple functions that would usually share - a TracerProvider (see also the `cloud.resource_id` attribute). - examples: ['my-function', 'myazurefunctionapp/some-function-name'] - - id: version - type: string - brief: The immutable version of the function being executed. - note: | - Depending on the cloud provider and platform, use: - - * **AWS Lambda:** The [function version](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html) - (an integer represented as a decimal string). - * **Google Cloud Run (Services):** The [revision](https://cloud.google.com/run/docs/managing/revisions) - (i.e., the function name plus the revision suffix). - * **Google Cloud Functions:** The value of the - [`K_REVISION` environment variable](https://cloud.google.com/functions/docs/env-var#runtime_environment_variables_set_automatically). - * **Azure Functions:** Not applicable. Do not set this attribute. - examples: ['26', 'pinkfroid-00002'] - - id: instance - type: string - brief: > - The execution environment ID as a string, that will be potentially reused - for other invocations to the same function/function version. - note: > - * **AWS Lambda:** Use the (full) log stream name. - examples: ['2021/06/28/[$LATEST]2f399eb14537447da05ab2a2e39309de'] - - id: max_memory - type: int - brief: > - The amount of memory available to the serverless function converted to Bytes. - note: > - It's recommended to set this attribute since e.g. too little memory can easily - stop a Java AWS Lambda function from working correctly. - On AWS Lambda, the environment variable `AWS_LAMBDA_FUNCTION_MEMORY_SIZE` - provides this information (which must be multiplied by 1,048,576). - examples: 134217728 - - ref: cloud.resource_id diff --git a/semantic_conventions/resource/host.yaml b/semantic_conventions/resource/host.yaml deleted file mode 100644 index 457aa1c8ae3..00000000000 --- a/semantic_conventions/resource/host.yaml +++ /dev/null @@ -1,72 +0,0 @@ -groups: - - id: host - prefix: host - type: resource - brief: > - A host is defined as a computing instance. For example, physical servers, virtual machines, switches or disk array. - attributes: - - id: id - type: string - brief: > - Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider. - For non-containerized systems, this should be the `machine-id`. See the table below for - the sources to use to determine the `machine-id` based on operating system. - examples: ['fdbf79e8af94cb7f9e8df36789187052'] - - id: name - type: string - brief: > - Name of the host. On Unix systems, it may contain what the hostname - command returns, or the fully qualified hostname, or another name - specified by the user. - examples: ['opentelemetry-test'] - - id: type - type: string - brief: > - Type of host. For Cloud, this must be the machine type. - examples: ['n1-standard-1'] - - id: arch - type: - allow_custom_values: true - members: - - id: amd64 - value: 'amd64' - brief: "AMD64" - - id: arm32 - value: 'arm32' - brief: "ARM32" - - id: arm64 - value: 'arm64' - brief: "ARM64" - - id: ia64 - value: 'ia64' - brief: "Itanium" - - id: ppc32 - value: 'ppc32' - brief: "32-bit PowerPC" - - id: ppc64 - value: 'ppc64' - brief: "64-bit PowerPC" - - id: s390x - value: 's390x' - brief: "IBM z/Architecture" - - id: x86 - value: 'x86' - brief: "32-bit x86" - brief: > - The CPU architecture the host system is running on. - - id: image.name - type: string - brief: > - Name of the VM image or OS install the host was instantiated from. - examples: ['infra-ami-eks-worker-node-7d4ec78312', 'CentOS-8-x86_64-1905'] - - id: image.id - type: string - brief: > - VM image ID or host OS image ID. For Cloud, this value is from the provider. - examples: ['ami-07b06b442921831e5'] - - id: image.version - type: string - brief: > - The version string of the VM image or host OS as defined in - [Version Attributes](README.md#version-attributes). - examples: ['0.1'] diff --git a/semantic_conventions/resource/k8s.yaml b/semantic_conventions/resource/k8s.yaml deleted file mode 100644 index 32a9716dbe6..00000000000 --- a/semantic_conventions/resource/k8s.yaml +++ /dev/null @@ -1,210 +0,0 @@ -groups: - - id: k8s.cluster - prefix: k8s.cluster - type: resource - brief: > - A Kubernetes Cluster. - attributes: - - id: name - type: string - brief: > - The name of the cluster. - examples: ['opentelemetry-cluster'] - - id: uid - type: string - brief: > - A pseudo-ID for the cluster, set to the UID of the `kube-system` - namespace. - note: | - K8s does not have support for obtaining a cluster ID. If this is ever - added, we will recommend collecting the `k8s.cluster.uid` through the - official APIs. In the meantime, we are able to use the `uid` of the - `kube-system` namespace as a proxy for cluster ID. Read on for the - rationale. - - Every object created in a K8s cluster is assigned a distinct UID. The - `kube-system` namespace is used by Kubernetes itself and will exist - for the lifetime of the cluster. Using the `uid` of the `kube-system` - namespace is a reasonable proxy for the K8s ClusterID as it will only - change if the cluster is rebuilt. Furthermore, Kubernetes UIDs are - UUIDs as standardized by - [ISO/IEC 9834-8 and ITU-T X.667](https://www.itu.int/ITU-T/studygroups/com17/oid.html). - Which states: - - > If generated according to one of the mechanisms defined in Rec. - ITU-T X.667 | ISO/IEC 9834-8, a UUID is either guaranteed to be - different from all other UUIDs generated before 3603 A.D., or is - extremely likely to be different (depending on the mechanism chosen). - - Therefore, UIDs between clusters should be extremely unlikely to - conflict. - examples: ['218fc5a9-a5f1-4b54-aa05-46717d0ab26d'] - - - id: k8s.node - prefix: k8s.node - type: resource - brief: > - A Kubernetes Node object. - attributes: - - id: name - type: string - brief: > - The name of the Node. - examples: ['node-1'] - - id: uid - type: string - brief: > - The UID of the Node. - examples: ['1eb3a0c6-0477-4080-a9cb-0cb7db65c6a2'] - - - id: k8s.namespace - prefix: k8s.namespace - type: resource - brief: > - A Kubernetes Namespace. - attributes: - - id: name - type: string - brief: > - The name of the namespace that the pod is running in. - examples: ['default'] - - - id: k8s.pod - prefix: k8s.pod - type: resource - brief: > - A Kubernetes Pod object. - attributes: - - id: uid - type: string - brief: > - The UID of the Pod. - examples: ['275ecb36-5aa8-4c2a-9c47-d8bb681b9aff'] - - id: name - type: string - brief: > - The name of the Pod. - examples: ['opentelemetry-pod-autoconf'] - - - id: k8s.container - prefix: k8s.container - type: resource - brief: > - A container in a [PodTemplate](https://kubernetes.io/docs/concepts/workloads/pods/#pod-templates). - attributes: - - id: name - type: string - brief: > - The name of the Container from Pod specification, must be unique - within a Pod. Container runtime usually uses different globally unique - name (`container.name`). - examples: ['redis'] - - id: restart_count - type: int - brief: > - Number of times the container was restarted. This attribute can be - used to identify a particular container (running or stopped) within a - container spec. - examples: [0, 2] - - - id: k8s.replicaset - prefix: k8s.replicaset - type: resource - brief: > - A Kubernetes ReplicaSet object. - attributes: - - id: uid - type: string - brief: > - The UID of the ReplicaSet. - examples: ['275ecb36-5aa8-4c2a-9c47-d8bb681b9aff'] - - id: name - type: string - brief: > - The name of the ReplicaSet. - examples: ['opentelemetry'] - - - id: k8s.deployment - prefix: k8s.deployment - type: resource - brief: > - A Kubernetes Deployment object. - attributes: - - id: uid - type: string - brief: > - The UID of the Deployment. - examples: ['275ecb36-5aa8-4c2a-9c47-d8bb681b9aff'] - - id: name - type: string - brief: > - The name of the Deployment. - examples: ['opentelemetry'] - - - id: k8s.statefulset - prefix: k8s.statefulset - type: resource - brief: > - A Kubernetes StatefulSet object. - attributes: - - id: uid - type: string - brief: > - The UID of the StatefulSet. - examples: ['275ecb36-5aa8-4c2a-9c47-d8bb681b9aff'] - - id: name - type: string - brief: > - The name of the StatefulSet. - examples: ['opentelemetry'] - - - id: k8s.daemonset - prefix: k8s.daemonset - type: resource - brief: > - A Kubernetes DaemonSet object. - attributes: - - id: uid - type: string - brief: > - The UID of the DaemonSet. - examples: ['275ecb36-5aa8-4c2a-9c47-d8bb681b9aff'] - - id: name - type: string - brief: > - The name of the DaemonSet. - examples: ['opentelemetry'] - - - id: k8s.job - prefix: k8s.job - type: resource - brief: > - A Kubernetes Job object. - attributes: - - id: uid - type: string - brief: > - The UID of the Job. - examples: ['275ecb36-5aa8-4c2a-9c47-d8bb681b9aff'] - - id: name - type: string - brief: > - The name of the Job. - examples: ['opentelemetry'] - - - id: k8s.cronjob - prefix: k8s.cronjob - type: resource - brief: > - A Kubernetes CronJob object. - attributes: - - id: uid - type: string - brief: > - The UID of the CronJob. - examples: ['275ecb36-5aa8-4c2a-9c47-d8bb681b9aff'] - - id: name - type: string - brief: > - The name of the CronJob. - examples: ['opentelemetry'] diff --git a/semantic_conventions/resource/os.yaml b/semantic_conventions/resource/os.yaml deleted file mode 100644 index ffccef32817..00000000000 --- a/semantic_conventions/resource/os.yaml +++ /dev/null @@ -1,65 +0,0 @@ -groups: - - id: os - prefix: os - type: resource - brief: > - The operating system (OS) on which the process represented by this resource is running. - note: > - In case of virtualized environments, this is the operating system as it is observed by - the process, i.e., the virtualized guest rather than the underlying host. - attributes: - - id: type - type: - allow_custom_values: true - members: - - id: windows - value: 'windows' - brief: "Microsoft Windows" - - id: linux - value: 'linux' - brief: "Linux" - - id: darwin - value: 'darwin' - brief: "Apple Darwin" - - id: freebsd - value: 'freebsd' - brief: "FreeBSD" - - id: netbsd - value: 'netbsd' - brief: "NetBSD" - - id: openbsd - value: 'openbsd' - brief: "OpenBSD" - - id: dragonflybsd - value: 'dragonflybsd' - brief: "DragonFly BSD" - - id: hpux - value: 'hpux' - brief: "HP-UX (Hewlett Packard Unix)" - - id: aix - value: 'aix' - brief: "AIX (Advanced Interactive eXecutive)" - - id: solaris - value: 'solaris' - brief: "SunOS, Oracle Solaris" - - id: z_os - value: 'z_os' - brief: "IBM z/OS" - requirement_level: required - brief: 'The operating system type.' - - id: description - type: string - brief: > - Human readable (not intended to be parsed) OS version information, - like e.g. reported by `ver` or `lsb_release -a` commands. - examples: ['Microsoft Windows [Version 10.0.18363.778]', 'Ubuntu 18.04.1 LTS'] - - id: name - type: string - brief: 'Human readable operating system name.' - examples: ['iOS', 'Android', 'Ubuntu'] - - id: version - type: string - brief: > - The version string of the operating system as defined in - [Version Attributes](../../resource/semantic_conventions/README.md#version-attributes). - examples: ['14.2.1', '18.04.1'] diff --git a/semantic_conventions/resource/process.yaml b/semantic_conventions/resource/process.yaml deleted file mode 100644 index d7d3b25b564..00000000000 --- a/semantic_conventions/resource/process.yaml +++ /dev/null @@ -1,102 +0,0 @@ -groups: - - id: process - prefix: process - type: resource - brief: > - An operating system process. - attributes: - - id: pid - type: int - brief: > - Process identifier (PID). - examples: [1234] - - id: parent_pid - type: int - brief: > - Parent Process identifier (PID). - examples: [111] - - id: executable.name - type: string - requirement_level: - conditionally_required: See alternative attributes below. - brief: > - The name of the process executable. On Linux based systems, can be set - to the `Name` in `proc/[pid]/status`. On Windows, can be set to the - base name of `GetProcessImageFileNameW`. - examples: ['otelcol'] - - id: executable.path - type: string - requirement_level: - conditionally_required: See alternative attributes below. - brief: > - The full path to the process executable. On Linux based systems, can - be set to the target of `proc/[pid]/exe`. On Windows, can be set to the - result of `GetProcessImageFileNameW`. - examples: ['/usr/bin/cmd/otelcol'] - - id: command - type: string - requirement_level: - conditionally_required: See alternative attributes below. - brief: > - The command used to launch the process (i.e. the command name). On Linux - based systems, can be set to the zeroth string in `proc/[pid]/cmdline`. - On Windows, can be set to the first parameter extracted from `GetCommandLineW`. - examples: ['cmd/otelcol'] - - id: command_line - type: string - requirement_level: - conditionally_required: See alternative attributes below. - brief: > - The full command used to launch the process as a single string representing - the full command. On Windows, can be set to the result of `GetCommandLineW`. - Do not set this if you have to assemble it just for monitoring; use - `process.command_args` instead. - examples: ['C:\cmd\otecol --config="my directory\config.yaml"'] - - id: command_args - type: string[] - requirement_level: - conditionally_required: See alternative attributes below. - brief: > - All the command arguments (including the command/executable itself) as - received by the process. On Linux-based systems (and some other Unixoid - systems supporting procfs), can be set according to the list of - null-delimited strings extracted from `proc/[pid]/cmdline`. For libc-based - executables, this would be the full argv vector passed to `main`. - examples: ['cmd/otecol', '--config=config.yaml'] - - id: owner - type: string - brief: > - The username of the user that owns the process. - examples: 'root' - constraints: - - any_of: - - process.executable.name - - process.executable.path - - process.command - - process.command_line - - process.command_args - - - id: process.runtime - prefix: process.runtime - type: resource - brief: > - The single (language) runtime instance which is monitored. - attributes: - - id: name - type: string - brief: > - The name of the runtime of this process. For compiled native binaries, - this SHOULD be the name of the compiler. - examples: ['OpenJDK Runtime Environment'] - - id: version - type: string - brief: > - The version of the runtime of this process, as returned by the runtime - without modification. - examples: '14.0.2' - - id: description - type: string - brief: > - An additional description about the runtime of the process, for example - a specific vendor customization of the runtime environment. - examples: 'Eclipse OpenJ9 Eclipse OpenJ9 VM openj9-0.21.0' diff --git a/semantic_conventions/resource/service.yaml b/semantic_conventions/resource/service.yaml deleted file mode 100644 index 3765345bac1..00000000000 --- a/semantic_conventions/resource/service.yaml +++ /dev/null @@ -1,18 +0,0 @@ -groups: - - id: service - prefix: service - type: resource - brief: > - A service instance. - attributes: - - id: name - type: string - requirement_level: required - brief: > - Logical name of the service. - note: > - MUST be the same for all instances of horizontally scaled services. - If the value was not specified, SDKs MUST fallback to `unknown_service:` concatenated - with [`process.executable.name`](process.md#process), e.g. `unknown_service:bash`. - If `process.executable.name` is not available, the value MUST be set to `unknown_service`. - examples: ["shoppingcart"] diff --git a/semantic_conventions/resource/service_experimental.yaml b/semantic_conventions/resource/service_experimental.yaml deleted file mode 100644 index 4ad790d16ab..00000000000 --- a/semantic_conventions/resource/service_experimental.yaml +++ /dev/null @@ -1,42 +0,0 @@ -groups: - - id: service_experimental - prefix: service - type: resource - brief: > - A service instance. - attributes: - - id: namespace - type: string - brief: > - A namespace for `service.name`. - note: > - A string value having a meaning that helps to distinguish a group of services, - for example the team name that owns a group of services. - `service.name` is expected to be unique within the same namespace. - If `service.namespace` is not specified in the Resource then `service.name` - is expected to be unique for all services that have no explicit namespace defined - (so the empty/unspecified namespace is simply one more valid namespace). - Zero-length namespace string is assumed equal to unspecified namespace. - examples: ["Shop"] - - id: instance.id - type: string - brief: > - The string ID of the service instance. - note: > - MUST be unique for each instance of the same `service.namespace,service.name` pair - (in other words `service.namespace,service.name,service.instance.id` triplet MUST be globally unique). - The ID helps to distinguish instances of the same service that exist at the same time - (e.g. instances of a horizontally scaled service). It is preferable for the ID to be persistent - and stay the same for the lifetime of the service instance, however it is acceptable that - the ID is ephemeral and changes during important lifetime events for the service - (e.g. service restarts). - If the service has no inherent unique ID that can be used as the value of this attribute - it is recommended to generate a random Version 1 or Version 4 RFC 4122 UUID - (services aiming for reproducible UUIDs may also use Version 5, see RFC 4122 - for more recommendations). - examples: ["my-k8s-pod-deployment-1", "627cc493-f310-47de-96bd-71410b7dec09"] - - id: version - type: string - brief: > - The version string of the service API or implementation. - examples: ["2.0.0"] diff --git a/semantic_conventions/resource/telemetry.yaml b/semantic_conventions/resource/telemetry.yaml deleted file mode 100644 index 6966b4a853a..00000000000 --- a/semantic_conventions/resource/telemetry.yaml +++ /dev/null @@ -1,57 +0,0 @@ -groups: - - id: telemetry - prefix: telemetry - type: resource - brief: > - The telemetry SDK used to capture data recorded by the instrumentation libraries. - attributes: - - id: sdk.name - type: string - requirement_level: required - brief: > - The name of the telemetry SDK as defined above. - note: | - The OpenTelemetry SDK MUST set the `telemetry.sdk.name` attribute to `opentelemetry`. - If another SDK, like a fork or a vendor-provided implementation, is used, this SDK MUST set the - `telemetry.sdk.name` attribute to the fully-qualified class or module name of this SDK's main entry point - or another suitable identifier depending on the language. - The identifier `opentelemetry` is reserved and MUST NOT be used in this case. - All custom identifiers SHOULD be stable across different versions of an implementation. - examples: ["opentelemetry"] - - id: sdk.language - type: - allow_custom_values: true - members: - - id: cpp - value: "cpp" - - id: dotnet - value: "dotnet" - - id: erlang - value: "erlang" - - id: go - value: "go" - - id: java - value: "java" - - id: nodejs - value: "nodejs" - - id: php - value: "php" - - id: python - value: "python" - - id: ruby - value: "ruby" - - id: rust - value: "rust" - - id: swift - value: "swift" - - id: webjs - value: "webjs" - requirement_level: required - brief: > - The language of the telemetry SDK. - - id: sdk.version - type: string - requirement_level: required - brief: > - The version string of the telemetry SDK. - examples: ["1.2.3"] diff --git a/semantic_conventions/resource/telemetry_experimental.yaml b/semantic_conventions/resource/telemetry_experimental.yaml deleted file mode 100644 index 63137055173..00000000000 --- a/semantic_conventions/resource/telemetry_experimental.yaml +++ /dev/null @@ -1,12 +0,0 @@ -groups: - - id: telemetry_experimental - prefix: telemetry - type: resource - brief: > - The telemetry SDK used to capture data recorded by the instrumentation libraries. - attributes: - - id: auto.version - type: string - brief: > - The version string of the auto instrumentation agent, if used. - examples: ["1.2.3"] diff --git a/semantic_conventions/resource/webengine.yaml b/semantic_conventions/resource/webengine.yaml deleted file mode 100644 index 5e0cdf8fab7..00000000000 --- a/semantic_conventions/resource/webengine.yaml +++ /dev/null @@ -1,23 +0,0 @@ -groups: - - id: webengine_resource - prefix: webengine - type: resource - brief: > - Resource describing the packaged software running the application code. Web engines are typically executed using process.runtime. - attributes: - - id: name - type: string - requirement_level: required - brief: > - The name of the web engine. - examples: ['WildFly'] - - id: version - type: string - brief: > - The version of the web engine. - examples: ['21.0.0'] - - id: description - type: string - brief: > - Additional description of the web engine (e.g. detailed version and edition information). - examples: ['WildFly Full 21.0.0.Final (WildFly Core 13.0.1.Final) - 2.2.2.Final'] diff --git a/semantic_conventions/scope/exporter/exporter.yaml b/semantic_conventions/scope/exporter/exporter.yaml deleted file mode 100644 index 3bbf3fe0735..00000000000 --- a/semantic_conventions/scope/exporter/exporter.yaml +++ /dev/null @@ -1,30 +0,0 @@ -groups: - - id: otel.scope - prefix: otel.scope - type: resource - brief: Attributes used by non-OTLP exporters to represent OpenTelemetry Scope's concepts. - attributes: - - id: name - type: string - brief: The name of the instrumentation scope - (`InstrumentationScope.Name` in OTLP). - examples: ['io.opentelemetry.contrib.mongodb'] - - id: version - type: string - brief: The version of the instrumentation scope - (`InstrumentationScope.Version` in OTLP). - examples: ['1.0.0'] - - id: otel.library - prefix: otel.library - type: resource - brief: > - Span attributes used by non-OTLP exporters to represent OpenTelemetry Scope's concepts. - attributes: - - id: name - type: string - stability: "deprecated" - brief: Deprecated, use the `otel.scope.name` attribute. - examples: ['io.opentelemetry.contrib.mongodb'] - - id: version - type: string - stability: "deprecated" - brief: Deprecated, use the `otel.scope.version` attribute. - examples: ['1.0.0'] diff --git a/semantic_conventions/server.yaml b/semantic_conventions/server.yaml deleted file mode 100644 index 8eaacbd9bba..00000000000 --- a/semantic_conventions/server.yaml +++ /dev/null @@ -1,37 +0,0 @@ -groups: - - id: server - prefix: server - type: attribute_group - brief: > - These attributes may be used to describe the server in a connection-based network interaction - where there is one side that initiates the connection (the client is the side that initiates the connection). - This covers all TCP network interactions since TCP is connection-based and one side initiates the - connection (an exception is made for peer-to-peer communication over TCP where the "user-facing" surface of the - protocol / API does not expose a clear notion of client and server). - This also covers UDP network interactions where one side initiates the interaction, e.g. QUIC (HTTP/3) and DNS. - attributes: - - id: address - type: string - brief: 'Logical server hostname, matches server FQDN if available, and IP or socket address if FQDN is not known.' - examples: ['example.com'] - - id: port - type: int - brief: 'Logical server port number' - examples: [80, 8080, 443] - - id: socket.domain - type: string - brief: The domain name of an immediate peer. - examples: ['proxy.example.com'] - note: Typically observed from the client side, and represents a proxy or other intermediary domain name. - - id: socket.address - type: string - brief: Physical server IP address or Unix socket address. - examples: ['10.5.3.2'] - requirement_level: - recommended: If different than `server.address`. - - id: socket.port - type: int - brief: Physical server port. - examples: [16456] - requirement_level: - recommended: If different than `server.port`. diff --git a/semantic_conventions/source.yaml b/semantic_conventions/source.yaml deleted file mode 100644 index 63fc1bd4b6a..00000000000 --- a/semantic_conventions/source.yaml +++ /dev/null @@ -1,24 +0,0 @@ -groups: - - id: source - prefix: source - type: attribute_group - brief: These attributes may be used to describe the sender of a network exchange/packet. These should be used - when there is no client/server relationship between the two sides, or when that relationship is unknown. - This covers low-level network interactions (e.g. packet tracing) where you don't know if - there was a connection or which side initiated it. - This also covers unidirectional UDP flows and peer-to-peer communication where the - "user-facing" surface of the protocol / API does not expose a clear notion of client and server. - attributes: - - id: domain - type: string - brief: The domain name of the source system. - examples: ['foo.example.com'] - note: This value may be a host name, a fully qualified domain name, or another host naming format. - - id: address - type: string - brief: 'Source address, for example IP address or Unix socket name.' - examples: ['10.5.3.2'] - - id: port - type: int - brief: 'Source port number' - examples: [3389, 2888] diff --git a/semantic_conventions/trace/aws/lambda.yaml b/semantic_conventions/trace/aws/lambda.yaml deleted file mode 100644 index 73e77ea747d..00000000000 --- a/semantic_conventions/trace/aws/lambda.yaml +++ /dev/null @@ -1,14 +0,0 @@ -groups: - - id: aws.lambda - prefix: aws.lambda - type: span - brief: > - Span attributes used by AWS Lambda (in addition to general `faas` attributes). - attributes: - - id: invoked_arn - type: string - brief: > - The full invoked ARN as provided on the `Context` passed to the function - (`Lambda-Runtime-Invoked-Function-Arn` header on the `/runtime/invocation/next` applicable). - note: This may be different from `cloud.resource_id` if an alias is involved. - examples: ['arn:aws:lambda:us-east-1:123456:function:myfunction:myalias'] diff --git a/semantic_conventions/trace/cloudevents.yaml b/semantic_conventions/trace/cloudevents.yaml deleted file mode 100644 index 6fcf7ae268a..00000000000 --- a/semantic_conventions/trace/cloudevents.yaml +++ /dev/null @@ -1,36 +0,0 @@ -groups: - - id: cloudevents - prefix: cloudevents - type: span - brief: > - This document defines attributes for CloudEvents. - CloudEvents is a specification on how to define event data in a standard way. - These attributes can be attached to spans when performing operations with CloudEvents, regardless of the protocol being used. - attributes: - - id: event_id - type: string - requirement_level: required - brief: > - The [event_id](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#id) uniquely identifies the event. - examples: ['123e4567-e89b-12d3-a456-426614174000', '0001'] - - id: event_source - type: string - requirement_level: required - brief: > - The [source](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#source-1) identifies the context in which an event happened. - examples: ['https://github.com/cloudevents', '/cloudevents/spec/pull/123', 'my-service' ] - - id: event_spec_version - type: string - brief: > - The [version of the CloudEvents specification](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#specversion) which the event uses. - examples: '1.0' - - id: event_type - type: string - brief: > - The [event_type](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#type) contains a value describing the type of event related to the originating occurrence. - examples: ['com.github.pull_request.opened', 'com.example.object.deleted.v2'] - - id: event_subject - type: string - brief: > - The [subject](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#subject) of the event in the context of the event producer (identified by source). - examples: 'mynewfile.jpg' diff --git a/semantic_conventions/trace/compatibility.yaml b/semantic_conventions/trace/compatibility.yaml deleted file mode 100644 index 62f85e5c08f..00000000000 --- a/semantic_conventions/trace/compatibility.yaml +++ /dev/null @@ -1,21 +0,0 @@ -groups: - - id: opentracing - prefix: opentracing - type: span - brief: 'This document defines semantic conventions for the OpenTracing Shim' - note: > - These conventions are used by the OpenTracing Shim layer. - attributes: - - id: ref_type - brief: 'Parent-child Reference type' - note: > - The causal relationship between a child Span and a parent Span. - type: - allow_custom_values: false - members: - - id: child_of - value: 'child_of' - brief: 'The parent Span depends on the child Span in some capacity' - - id: follows_from - value: 'follows_from' - brief: 'The parent Span does not depend in any way on the result of the child Span' diff --git a/semantic_conventions/trace/database.yaml b/semantic_conventions/trace/database.yaml deleted file mode 100644 index 7a28fe8c119..00000000000 --- a/semantic_conventions/trace/database.yaml +++ /dev/null @@ -1,516 +0,0 @@ -groups: - - id: db - prefix: db - type: span - brief: > - This document defines the attributes used to perform database client calls. - span_kind: client - attributes: - - id: system - tag: connection-level - brief: An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers. - requirement_level: required - type: - allow_custom_values: true - members: - - id: other_sql - value: 'other_sql' - brief: 'Some other SQL database. Fallback only. See notes.' - - id: mssql - value: 'mssql' - brief: 'Microsoft SQL Server' - - id: mssqlcompact - value: 'mssqlcompact' - brief: 'Microsoft SQL Server Compact' - - id: mysql - value: 'mysql' - brief: 'MySQL' - - id: oracle - value: 'oracle' - brief: 'Oracle Database' - - id: db2 - value: 'db2' - brief: 'IBM Db2' - - id: postgresql - value: 'postgresql' - brief: 'PostgreSQL' - - id: redshift - value: 'redshift' - brief: 'Amazon Redshift' - - id: hive - value: 'hive' - brief: 'Apache Hive' - - id: cloudscape - value: 'cloudscape' - brief: 'Cloudscape' - - id: hsqldb - value: 'hsqldb' - brief: 'HyperSQL DataBase' - - id: progress - value: 'progress' - brief: 'Progress Database' - - id: maxdb - value: 'maxdb' - brief: 'SAP MaxDB' - - id: hanadb - value: 'hanadb' - brief: 'SAP HANA' - - id: ingres - value: 'ingres' - brief: 'Ingres' - - id: firstsql - value: 'firstsql' - brief: 'FirstSQL' - - id: edb - value: 'edb' - brief: 'EnterpriseDB' - - id: cache - value: 'cache' - brief: 'InterSystems Caché' - - id: adabas - value: 'adabas' - brief: 'Adabas (Adaptable Database System)' - - id: firebird - value: 'firebird' - brief: 'Firebird' - - id: derby - value: 'derby' - brief: 'Apache Derby' - - id: filemaker - value: 'filemaker' - brief: 'FileMaker' - - id: informix - value: 'informix' - brief: 'Informix' - - id: instantdb - value: 'instantdb' - brief: 'InstantDB' - - id: interbase - value: 'interbase' - brief: 'InterBase' - - id: mariadb - value: 'mariadb' - brief: 'MariaDB' - - id: netezza - value: 'netezza' - brief: 'Netezza' - - id: pervasive - value: 'pervasive' - brief: 'Pervasive PSQL' - - id: pointbase - value: 'pointbase' - brief: 'PointBase' - - id: sqlite - value: 'sqlite' - brief: 'SQLite' - - id: sybase - value: 'sybase' - brief: 'Sybase' - - id: teradata - value: 'teradata' - brief: 'Teradata' - - id: vertica - value: 'vertica' - brief: 'Vertica' - - id: h2 - value: 'h2' - brief: 'H2' - - id: coldfusion - value: 'coldfusion' - brief: 'ColdFusion IMQ' - - id: cassandra - value: 'cassandra' - brief: 'Apache Cassandra' - - id: hbase - value: 'hbase' - brief: 'Apache HBase' - - id: mongodb - value: 'mongodb' - brief: 'MongoDB' - - id: redis - value: 'redis' - brief: 'Redis' - - id: couchbase - value: 'couchbase' - brief: 'Couchbase' - - id: couchdb - value: 'couchdb' - brief: 'CouchDB' - - id: cosmosdb - value: 'cosmosdb' - brief: 'Microsoft Azure Cosmos DB' - - id: dynamodb - value: 'dynamodb' - brief: 'Amazon DynamoDB' - - id: neo4j - value: 'neo4j' - brief: 'Neo4j' - - id: geode - value: 'geode' - brief: 'Apache Geode' - - id: elasticsearch - value: 'elasticsearch' - brief: 'Elasticsearch' - - id: memcached - value: 'memcached' - brief: 'Memcached' - - id: cockroachdb - value: 'cockroachdb' - brief: 'CockroachDB' - - id: opensearch - value: 'opensearch' - brief: 'OpenSearch' - - id: clickhouse - value: 'clickhouse' - brief: 'ClickHouse' - - id: spanner - value: 'spanner' - brief: 'Cloud Spanner' - - id: trino - value: 'trino' - brief: 'Trino' - - id: connection_string - tag: connection-level - type: string - brief: > - The connection string used to connect to the database. - It is recommended to remove embedded credentials. - examples: 'Server=(localdb)\v11.0;Integrated Security=true;' - - id: user - tag: connection-level - type: string - brief: > - Username for accessing the database. - examples: ['readonly_user', 'reporting_user'] - - id: jdbc.driver_classname - tag: connection-level-tech-specific - type: string - brief: > - The fully-qualified class name of the [Java Database Connectivity (JDBC)](https://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/) driver used to connect. - examples: ['org.postgresql.Driver', 'com.microsoft.sqlserver.jdbc.SQLServerDriver'] - - id: name - tag: call-level - type: string - requirement_level: - conditionally_required: If applicable. - brief: > - This attribute is used to report the name of the database being accessed. - For commands that switch the database, this should be set to the target database - (even if the command fails). - note: > - In some SQL databases, the database name to be used is called "schema name". - In case there are multiple layers that could be considered for database name - (e.g. Oracle instance name and schema name), - the database name to be used is the more specific layer (e.g. Oracle schema name). - examples: [ 'customers', 'main' ] - - id: statement - tag: call-level - type: string - requirement_level: - recommended: > - Should be collected by default only if there is sanitization that excludes sensitive information. - brief: > - The database statement being executed. - examples: ['SELECT * FROM wuser_table', 'SET mykey "WuValue"'] - - id: operation - tag: call-level - type: string - requirement_level: - conditionally_required: If `db.statement` is not applicable. - brief: > - The name of the operation being executed, e.g. the [MongoDB command name](https://docs.mongodb.com/manual/reference/command/#database-operations) - such as `findAndModify`, or the SQL keyword. - note: > - When setting this to an SQL keyword, it is not recommended to - attempt any client-side parsing of `db.statement` just to get this - property, but it should be set if the operation name is provided by - the library being instrumented. - If the SQL statement has an ambiguous operation, or performs more - than one operation, this value may be omitted. - examples: ['findAndModify', 'HMSET', 'SELECT'] - - ref: server.address - tag: connection-level - requirement_level: - conditionally_required: See alternative attributes below. - brief: > - Name of the database host. - - ref: server.port - tag: connection-level - requirement_level: - conditionally_required: If using a port other than the default port for this DBMS and if `server.address` is set. - - ref: server.socket.address - tag: connection-level - - ref: server.socket.port - tag: connection-level - - ref: network.transport - tag: connection-level - - ref: network.type - tag: connection-level - - ref: server.socket.domain - requirement_level: - recommended: If different than `server.address` and if `server.socket.address` is set. - constraints: - - any_of: - - 'server.address' - - 'server.socket.address' - - - id: db.mssql - prefix: db.mssql - type: span - extends: db - brief: > - Connection-level attributes for Microsoft SQL Server - attributes: - - id: instance_name - tag: connection-level-tech-specific - type: string - note: > - If setting a `db.mssql.instance_name`, `server.port` is no longer - required (but still recommended if non-standard). - brief: > - The Microsoft SQL Server [instance name](https://docs.microsoft.com/en-us/sql/connect/jdbc/building-the-connection-url?view=sql-server-ver15) - connecting to. This name is used to determine the port of a named instance. - examples: 'MSSQLSERVER' - - - id: db.cassandra - prefix: db.cassandra - type: span - extends: db - brief: > - Call-level attributes for Cassandra - attributes: - - id: page_size - type: int - tag: call-level-tech-specific-cassandra - brief: > - The fetch size used for paging, i.e. how many rows will be returned at once. - examples: [5000] - - id: consistency_level - tag: call-level-tech-specific-cassandra - brief: > - The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html). - type: - members: - - id: all - value: 'all' - - id: each_quorum - value: 'each_quorum' - - id: quorum - value: 'quorum' - - id: local_quorum - value: 'local_quorum' - - id: one - value: 'one' - - id: two - value: 'two' - - id: three - value: 'three' - - id: local_one - value: 'local_one' - - id: any - value: 'any' - - id: serial - value: 'serial' - - id: local_serial - value: 'local_serial' - - id: table - type: string - tag: call-level-tech-specific-cassandra - requirement_level: recommended - brief: The name of the primary table that the operation is acting upon, including the keyspace name (if applicable). - note: > - This mirrors the db.sql.table attribute but references cassandra rather than sql. - It is not recommended to attempt any client-side parsing of - `db.statement` just to get this property, but it should be set if - it is provided by the library being instrumented. - If the operation is acting upon an anonymous table, or more than one table, this - value MUST NOT be set. - examples: 'mytable' - - id: idempotence - type: boolean - tag: call-level-tech-specific-cassandra - brief: > - Whether or not the query is idempotent. - - id: speculative_execution_count - type: int - tag: call-level-tech-specific-cassandra - brief: > - The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively. - examples: [0, 2] - - id: coordinator.id - type: string - tag: call-level-tech-specific-cassandra - brief: > - The ID of the coordinating node for a query. - examples: 'be13faa2-8574-4d71-926d-27f16cf8a7af' - - id: coordinator.dc - type: string - tag: call-level-tech-specific-cassandra - brief: > - The data center of the coordinating node for a query. - examples: 'us-west-2' - - - id: db.redis - prefix: db.redis - type: span - extends: db - brief: > - Call-level attributes for Redis - attributes: - - id: database_index - type: int - requirement_level: - conditionally_required: If other than the default database (`0`). - tag: call-level-tech-specific - brief: > - The index of the database being accessed as used in the [`SELECT` command](https://redis.io/commands/select), provided as an integer. - To be used instead of the generic `db.name` attribute. - examples: [0, 1, 15] - - - id: db.mongodb - prefix: db.mongodb - type: span - extends: db - brief: > - Call-level attributes for MongoDB - attributes: - - id: collection - type: string - requirement_level: required - tag: call-level-tech-specific - brief: > - The collection being accessed within the database stated in `db.name`. - examples: [ 'customers', 'products' ] - - - id: db.sql - prefix: 'db.sql' - type: span - extends: 'db' - brief: > - Call-level attributes for SQL databases - attributes: - - id: table - tag: call-level-tech-specific - type: string - requirement_level: recommended - brief: The name of the primary table that the operation is acting upon, including the database name (if applicable). - note: > - It is not recommended to attempt any client-side parsing of - `db.statement` just to get this property, but it should be set if - it is provided by the library being instrumented. - If the operation is acting upon an anonymous table, or more than one table, this - value MUST NOT be set. - examples: ['public.users', 'customers'] - - - id: db.cosmosdb - type: span - extends: db - prefix: db.cosmosdb - brief: > - Call-level attributes for Cosmos DB. - attributes: - - id: client_id - type: string - brief: Unique Cosmos client instance id. - examples: '3ba4827d-4422-483f-b59f-85b74211c11d' - - id: operation_type - type: - allow_custom_values: true - members: - - id: invalid - value: 'Invalid' - - id: create - value: 'Create' - - id: patch - value: 'Patch' - - id: read - value: 'Read' - - id: read_feed - value: 'ReadFeed' - - id: delete - value: 'Delete' - - id: replace - value: 'Replace' - - id: execute - value: 'Execute' - - id: query - value: 'Query' - - id: head - value: 'Head' - - id: head_feed - value: 'HeadFeed' - - id: upsert - value: 'Upsert' - - id: batch - value: 'Batch' - - id: query_plan - value: 'QueryPlan' - - id: execute_javascript - value: 'ExecuteJavaScript' - brief: CosmosDB Operation Type. - requirement_level: - conditionally_required: when performing one of the operations in this list - - ref: user_agent.original - brief: 'Full user-agent string is generated by Cosmos DB SDK' - note: > - The user-agent value is generated by SDK which is a combination of
- `sdk_version` : Current version of SDK. e.g. 'cosmos-netstandard-sdk/3.23.0'
- `direct_pkg_version` : Direct package version used by Cosmos DB SDK. e.g. '3.23.1'
- `number_of_client_instances` : Number of cosmos client instances created by the application. e.g. '1'
- `type_of_machine_architecture` : Machine architecture. e.g. 'X64'
- `operating_system` : Operating System. e.g. 'Linux 5.4.0-1098-azure 104 18'
- `runtime_framework` : Runtime Framework. e.g. '.NET Core 3.1.32'
- `failover_information` : Generated key to determine if region failover enabled. - Format Reg-{D (Disabled discovery)}-S(application region)|L(List of preferred regions)|N(None, user did not configure it). - Default value is "NS". - examples: ['cosmos-netstandard-sdk/3.23.0\|3.23.1\|1\|X64\|Linux 5.4.0-1098-azure 104 18\|.NET Core 3.1.32\|S\|'] - - id: connection_mode - type: - allow_custom_values: false - members: - - id: gateway - value: 'gateway' - brief: Gateway (HTTP) connections mode - - id: direct - value: 'direct' - brief: Direct connection. - brief: Cosmos client connection mode. - requirement_level: - conditionally_required: if not `direct` (or pick gw as default) - - id: container - type: string - brief: Cosmos DB container name. - requirement_level: - conditionally_required: if available - examples: 'anystring' - - id: request_content_length - type: int - brief: Request payload size in bytes - - id: status_code - type: int - brief: Cosmos DB status code. - examples: [200, 201] - requirement_level: - conditionally_required: if response was received - - id: sub_status_code - type: int - brief: Cosmos DB sub status code. - examples: [1000, 1002] - requirement_level: - conditionally_required: when response was received and contained sub-code. - - id: request_charge - type: double - brief: RU consumed for that operation - examples: [46.18, 1.0] - requirement_level: - conditionally_required: when available - - - id: db.tech - type: span - brief: "Semantic convention group for specific technologies" - constraints: - - include: 'db.cassandra' - - include: 'db.redis' - - include: 'db.mongodb' - - include: 'db.sql' - - include: 'db.cosmosdb' diff --git a/semantic_conventions/trace/exporter/exporter.yaml b/semantic_conventions/trace/exporter/exporter.yaml deleted file mode 100644 index bba71aac9b2..00000000000 --- a/semantic_conventions/trace/exporter/exporter.yaml +++ /dev/null @@ -1,21 +0,0 @@ -groups: - - id: otel_span - prefix: otel - type: span - brief: Span attributes used by non-OTLP exporters to represent OpenTelemetry Span's concepts. - attributes: - - id: status_code - type: - allow_custom_values: false - members: - - id: ok - value: OK - brief: 'The operation has been validated by an Application developer or Operator to have completed successfully.' - - id: error - value: ERROR - brief: 'The operation contains an error.' - brief: Name of the code, either "OK" or "ERROR". MUST NOT be set if the status code is UNSET. - - id: status_description - type: string - brief: Description of the Status if it has a value, otherwise not set. - examples: ['resource not found'] diff --git a/semantic_conventions/trace/faas.yaml b/semantic_conventions/trace/faas.yaml deleted file mode 100644 index d30d41920a9..00000000000 --- a/semantic_conventions/trace/faas.yaml +++ /dev/null @@ -1,204 +0,0 @@ -groups: - - id: faas_span - prefix: faas - type: span - brief: > - This semantic convention describes an instance of a function that - runs without provisioning or managing of servers (also known as - serverless functions or Function as a Service (FaaS)) with spans. - attributes: - - id: trigger - brief: 'Type of the trigger which caused this function invocation.' - note: | - For the server/consumer span on the incoming side, - `faas.trigger` MUST be set. - - Clients invoking FaaS instances usually cannot set `faas.trigger`, - since they would typically need to look in the payload to determine - the event type. If clients set it, it should be the same as the - trigger that corresponding incoming would have (i.e., this has - nothing to do with the underlying transport used to make the API - call to invoke the lambda, which is often HTTP). - type: - allow_custom_values: false - members: - - id: datasource - value: 'datasource' - brief: 'A response to some data source operation such as a database or filesystem read/write.' - - id: http - value: 'http' - brief: 'To provide an answer to an inbound HTTP request' - - id: pubsub - value: 'pubsub' - brief: 'A function is set to be executed when messages are sent to a messaging system.' - - id: timer - value: 'timer' - brief: 'A function is scheduled to be executed regularly.' - - id: other - value: 'other' - brief: 'If none of the others apply' - - id: invocation_id - type: string - brief: 'The invocation ID of the current function invocation.' - examples: 'af9d5aa4-a685-4c5f-a22b-444f80b3cc28' - - ref: cloud.resource_id - - id: faas_span.datasource - prefix: faas.document - type: span - extends: faas_span - brief: > - Semantic Convention for FaaS triggered as a response to some data - source operation such as a database or filesystem read/write. - attributes: - - id: collection - type: string - requirement_level: required - brief: > - The name of the source on which the triggering operation was performed. - For example, in Cloud Storage or S3 corresponds to the bucket name, - and in Cosmos DB to the database name. - examples: ['myBucketName', 'myDbName'] - - id: operation - requirement_level: required - type: - allow_custom_values: true - members: - - id: insert - value: 'insert' - brief: 'When a new object is created.' - - id: edit - value: 'edit' - brief: 'When an object is modified.' - - id: delete - value: 'delete' - brief: 'When an object is deleted.' - brief: 'Describes the type of the operation that was performed on the data.' - - id: time - type: string - brief: > - A string containing the time when the data was accessed in the - [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) - format expressed in [UTC](https://www.w3.org/TR/NOTE-datetime). - examples: "2020-01-23T13:47:06Z" - - id: name - type: string - brief: > - The document name/table subjected to the operation. - For example, in Cloud Storage or S3 is the name of - the file, and in Cosmos DB the table name. - examples: ["myFile.txt", "myTableName"] - - - id: faas_span.http - type: span - extends: faas_span - brief: > - Semantic Convention for FaaS triggered as a response to some data - source operation such as a database or filesystem read/write. - constraints: - - include: trace.http.server - - - id: faas_span.pubsub - type: span - extends: faas_span - brief: > - Semantic Convention for FaaS set to be executed when messages are - sent to a messaging system. - constraints: - - include: messaging - - - id: faas_span.timer - extends: faas_span - prefix: faas - type: span - brief: > - Semantic Convention for FaaS scheduled to be executed regularly. - attributes: - - id: time - type: string - brief: > - A string containing the function invocation time in the - [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) - format expressed in [UTC](https://www.w3.org/TR/NOTE-datetime). - examples: "2020-01-23T13:47:06Z" - - id: cron - type: string - brief: > - A string containing the schedule period as - [Cron Expression](https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm). - examples: "0/5 * * * ? *" - - - id: faas_span.in - extends: faas_span - span_kind: server - prefix: faas - type: span - brief: > - Contains additional attributes for incoming FaaS spans. - attributes: - - id: coldstart - type: boolean - brief: > - A boolean that is true if the serverless function is executed for the - first time (aka cold-start). - - ref: faas.trigger - requirement_level: required - - - id: faas_span.out - extends: faas_span - span_kind: client - prefix: faas - type: span - brief: > - Contains additional attributes for outgoing FaaS spans. - attributes: - - id: invoked_name - type: string - requirement_level: required - brief: > - The name of the invoked function. - note: > - SHOULD be equal to the `faas.name` resource attribute of the - invoked function. - examples: 'my-function' - - id: invoked_provider - type: - allow_custom_values: true - members: - - id: 'alibaba_cloud' - value: 'alibaba_cloud' - brief: 'Alibaba Cloud' - - id: 'aws' - value: 'aws' - brief: 'Amazon Web Services' - - id: 'azure' - value: 'azure' - brief: 'Microsoft Azure' - - id: 'gcp' - value: 'gcp' - brief: 'Google Cloud Platform' - - id: 'tencent_cloud' - value: 'tencent_cloud' - brief: 'Tencent Cloud' - requirement_level: required - brief: > - The cloud provider of the invoked function. - note: > - SHOULD be equal to the `cloud.provider` resource attribute of the - invoked function. - - id: invoked_region - type: string - requirement_level: - conditionally_required: > - For some cloud providers, like AWS or GCP, the region in which a - function is hosted is essential to uniquely identify the function - and also part of its endpoint. Since it's part of the endpoint - being called, the region is always known to clients. In these cases, - `faas.invoked_region` MUST be set accordingly. If the region is - unknown to the client or not required for identifying the invoked - function, setting `faas.invoked_region` is optional. - brief: > - The cloud region of the invoked function. - note: > - SHOULD be equal to the `cloud.region` resource attribute of the - invoked function. - examples: 'eu-central-1' diff --git a/semantic_conventions/trace/feature-flag.yaml b/semantic_conventions/trace/feature-flag.yaml deleted file mode 100644 index 50706ba2d7b..00000000000 --- a/semantic_conventions/trace/feature-flag.yaml +++ /dev/null @@ -1,34 +0,0 @@ -groups: - - id: feature_flag - prefix: feature_flag - type: event - brief: > - This semantic convention defines the attributes used to represent a - feature flag evaluation as an event. - attributes: - - id: key - type: string - requirement_level: required - brief: The unique identifier of the feature flag. - examples: ["logo-color"] - - id: provider_name - type: string - requirement_level: recommended - brief: The name of the service provider that performs the flag evaluation. - examples: ["Flag Manager"] - - id: variant - type: string - requirement_level: recommended - examples: ["red", "true", "on"] - brief: > - SHOULD be a semantic identifier for a value. If one is unavailable, a - stringified version of the value can be used. - note: |- - A semantic identifier, commonly referred to as a variant, provides a means - for referring to a value without including the value itself. This can - provide additional context for understanding the meaning behind a value. - For example, the variant `red` maybe be used for the value `#c05543`. - - A stringified version of the value can be used in situations where a - semantic identifier is unavailable. String representation of the value - should be determined by the implementer. diff --git a/semantic_conventions/trace/general.yaml b/semantic_conventions/trace/general.yaml deleted file mode 100644 index 5baf1001dd5..00000000000 --- a/semantic_conventions/trace/general.yaml +++ /dev/null @@ -1,249 +0,0 @@ -groups: - - id: network-core - prefix: network - type: attribute_group - brief: > - These attributes may be used for any network related operation. - attributes: - - id: transport - type: - allow_custom_values: true - members: - - id: tcp - value: 'tcp' - brief: "TCP" - - id: udp - value: 'udp' - brief: "UDP" - - id: pipe - value: "pipe" - brief: 'Named or anonymous pipe. See note below.' - - id: unix - value: 'unix' - brief: "Unix domain socket" - brief: > - [OSI Transport Layer](https://osi-model.com/transport-layer/) or - [Inter-process Communication method](https://en.wikipedia.org/wiki/Inter-process_communication). - The value SHOULD be normalized to lowercase. - examples: ['tcp', 'udp'] - - id: type - type: - allow_custom_values: true - members: - - id: ipv4 - value: 'ipv4' - brief: "IPv4" - - id: ipv6 - value: 'ipv6' - brief: "IPv6" - brief: > - [OSI Network Layer](https://osi-model.com/network-layer/) or non-OSI equivalent. - The value SHOULD be normalized to lowercase. - examples: ['ipv4', 'ipv6'] - - id: protocol.name - type: string - brief: > - [OSI Application Layer](https://osi-model.com/application-layer/) or non-OSI equivalent. - The value SHOULD be normalized to lowercase. - examples: ['amqp', 'http', 'mqtt'] - - id: protocol.version - type: string - brief: 'Version of the application layer protocol used. See note below.' - examples: '3.1.1' - note: > - `network.protocol.version` refers to the version of the protocol used and might be - different from the protocol client's version. If the HTTP client used has a version - of `0.27.2`, but sends HTTP version `1.1`, this attribute should be set to `1.1`. - - - id: network-connection-and-carrier - prefix: network - type: attribute_group - brief: > - These attributes may be used for any network related operation. - attributes: - - id: connection.type - type: - allow_custom_values: true - members: - - id: wifi - value: "wifi" - - id: wired - value: "wired" - - id: cell - value: "cell" - - id: unavailable - value: "unavailable" - - id: unknown - value: "unknown" - brief: 'The internet connection type.' - examples: 'wifi' - - id: connection.subtype - type: - allow_custom_values: true - members: - - id: gprs - brief: GPRS - value: "gprs" - - id: edge - brief: EDGE - value: "edge" - - id: umts - brief: UMTS - value: "umts" - - id: cdma - brief: CDMA - value: "cdma" - - id: evdo_0 - brief: EVDO Rel. 0 - value: "evdo_0" - - id: evdo_a - brief: "EVDO Rev. A" - value: "evdo_a" - - id: cdma2000_1xrtt - brief: CDMA2000 1XRTT - value: "cdma2000_1xrtt" - - id: hsdpa - brief: HSDPA - value: "hsdpa" - - id: hsupa - brief: HSUPA - value: "hsupa" - - id: hspa - brief: HSPA - value: "hspa" - - id: iden - brief: IDEN - value: "iden" - - id: evdo_b - brief: "EVDO Rev. B" - value: "evdo_b" - - id: lte - brief: LTE - value: "lte" - - id: ehrpd - brief: EHRPD - value: "ehrpd" - - id: hspap - brief: HSPAP - value: "hspap" - - id: gsm - brief: GSM - value: "gsm" - - id: td_scdma - brief: TD-SCDMA - value: "td_scdma" - - id: iwlan - brief: IWLAN - value: "iwlan" - - id: nr - brief: "5G NR (New Radio)" - value: "nr" - - id: nrnsa - brief: "5G NRNSA (New Radio Non-Standalone)" - value: "nrnsa" - - id: lte_ca - brief: LTE CA - value: "lte_ca" - brief: 'This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.' - examples: 'LTE' - - id: carrier.name - type: string - brief: "The name of the mobile carrier." - examples: "sprint" - - id: carrier.mcc - type: string - brief: "The mobile carrier country code." - examples: "310" - - id: carrier.mnc - type: string - brief: "The mobile carrier network code." - examples: "001" - - id: carrier.icc - type: string - brief: "The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network." - examples: "DE" - - id: peer - prefix: peer - type: span - brief: "Operations that access some remote service." - attributes: - - id: service - type: string - brief: > - The [`service.name`](../../resource/semantic_conventions/README.md#service) - of the remote service. SHOULD be equal to the actual `service.name` - resource attribute of the remote service if any. - examples: "AuthTokenCache" - - id: identity - prefix: enduser - type: span - brief: > - These attributes may be used for any operation with an authenticated and/or authorized enduser. - attributes: - - id: id - type: string - brief: > - Username or client_id extracted from the access token or - [Authorization](https://tools.ietf.org/html/rfc7235#section-4.2) - header in the inbound request from outside the system. - examples: 'username' - - id: role - type: string - brief: 'Actual/assumed role the client is making the request under extracted from token or application security context.' - examples: 'admin' - - id: scope - type: string - brief: > - Scopes or granted authorities the client currently possesses extracted from token - or application security context. The value would come from the scope associated - with an [OAuth 2.0 Access Token](https://tools.ietf.org/html/rfc6749#section-3.3) - or an attribute value in a [SAML 2.0 Assertion](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html). - examples: 'read:message, write:files' - - id: thread - prefix: thread - type: span - brief: > - These attributes may be used for any operation to store information about a thread that started a span. - attributes: - - id: id - type: int - brief: > - Current "managed" thread ID (as opposed to OS thread ID). - examples: 42 - - id: name - type: string - brief: > - Current thread name. - examples: main - - id: code - prefix: code - type: span - brief: > - These attributes allow to report this unit of code and therefore to provide more context about the span. - attributes: - - id: function - type: string - brief: > - The method or function name, or equivalent (usually rightmost part of the code unit's name). - examples: serveRequest - - id: namespace - type: string - brief: > - The "namespace" within which `code.function` is defined. Usually the qualified class or module name, - such that `code.namespace` + some separator + `code.function` form a unique identifier for the code unit. - examples: com.example.MyHttpService - - id: filepath - type: string - brief: > - The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path). - examples: /usr/local/MyApplication/content_root/app/index.php - - id: lineno - type: int - brief: > - The line number in `code.filepath` best representing the operation. It SHOULD point within the code unit named in `code.function`. - examples: 42 - - id: column - type: int - brief: > - The column number in `code.filepath` best representing the operation. It SHOULD point within the code unit named in `code.function`. - examples: 16 diff --git a/semantic_conventions/trace/http.yaml b/semantic_conventions/trace/http.yaml deleted file mode 100644 index 2b5ac998679..00000000000 --- a/semantic_conventions/trace/http.yaml +++ /dev/null @@ -1,145 +0,0 @@ -groups: - - id: trace.http.common - prefix: http - extends: attributes.http.common - type: attribute_group - brief: 'This document defines semantic conventions for HTTP client and server Spans.' - note: > - These conventions can be used for http and https schemes - and various HTTP versions like 1.1, 2 and SPDY. - attributes: - - id: request.body.size - type: int - brief: > - The size of the request payload body in bytes. This is the number of bytes transferred excluding headers and - is often, but not always, present as the [Content-Length](https://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) - header. For requests using transport encoding, this should be the compressed size. - examples: 3495 - - id: response.body.size - type: int - brief: > - The size of the response payload body in bytes. This is the number of bytes transferred excluding headers and - is often, but not always, present as the [Content-Length](https://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) - header. For requests using transport encoding, this should be the compressed size. - examples: 3495 - - ref: http.request.method - sampling_relevant: true - - ref: network.transport - requirement_level: - conditionally_required: If not default (`tcp` for `HTTP/1.1` and `HTTP/2`, `udp` for `HTTP/3`). - - ref: network.type - - ref: user_agent.original - - - id: trace.http.client - prefix: http - type: span - extends: attributes.http.client - span_kind: client - brief: 'Semantic Convention for HTTP Client' - attributes: - - id: resend_count - type: int - brief: > - The ordinal number of request resending attempt (for any reason, including redirects). - note: > - The resend count SHOULD be updated each time an HTTP request gets resent by the client, regardless of what - was the cause of the resending (e.g. redirection, authorization failure, 503 Server Unavailable, network issues, - or any other). - requirement_level: - recommended: if and only if request was retried. - examples: 3 - - ref: server.address - sampling_relevant: true - requirement_level: required - brief: > - Host identifier of the ["URI origin"](https://www.rfc-editor.org/rfc/rfc9110.html#name-uri-origin) HTTP request is sent to. - note: | - Determined by using the first of the following that applies - - - Host identifier of the [request target](https://www.rfc-editor.org/rfc/rfc9110.html#target.resource) - if it's sent in absolute-form - - Host identifier of the `Host` header - - If an HTTP client request is explicitly made to an IP address, e.g. `http://x.x.x.x:8080`, then - `server.address` SHOULD be the IP address `x.x.x.x`. A DNS lookup SHOULD NOT be used. - - ref: server.port - sampling_relevant: true - requirement_level: - conditionally_required: If not default (`80` for `http` scheme, `443` for `https`). - brief: > - Port identifier of the ["URI origin"](https://www.rfc-editor.org/rfc/rfc9110.html#name-uri-origin) HTTP request is sent to. - note: > - When [request target](https://www.rfc-editor.org/rfc/rfc9110.html#target.resource) is absolute URI, `server.port` MUST match - URI port identifier, otherwise it MUST match `Host` header port identifier. - - ref: server.socket.domain - - ref: server.socket.address - - ref: server.socket.port - - ref: url.full - sampling_relevant: true - requirement_level: required - - - - id: trace.http.server - prefix: http - type: span - extends: attributes.http.server - span_kind: server - brief: 'Semantic Convention for HTTP Server' - attributes: - - ref: server.address - requirement_level: required - sampling_relevant: true - brief: > - Name of the local HTTP server that received the request. - note: | - Determined by using the first of the following that applies - - - The [primary server name](/specification/trace/semantic_conventions/http.md#http-server-definitions) of the matched virtual host. MUST only - include host identifier. - - Host identifier of the [request target](https://www.rfc-editor.org/rfc/rfc9110.html#target.resource) - if it's sent in absolute-form. - - Host identifier of the `Host` header - - SHOULD NOT be set if only IP address is available and capturing name would require a reverse DNS lookup. - - ref: server.port - sampling_relevant: true - requirement_level: - conditionally_required: If not default (`80` for `http` scheme, `443` for `https`). - brief: > - Port of the local HTTP server that received the request. - note: | - Determined by using the first of the following that applies - - - Port identifier of the [primary server host](/specification/trace/semantic_conventions/http.md#http-server-definitions) of the matched virtual host. - - Port identifier of the [request target](https://www.rfc-editor.org/rfc/rfc9110.html#target.resource) - if it's sent in absolute-form. - - Port identifier of the `Host` header - - ref: server.socket.address - requirement_level: opt_in - brief: Local socket address. Useful in case of a multi-IP host. - - ref: server.socket.port - requirement_level: opt_in - brief: Local socket port. Useful in case of a multi-port host. - - ref: client.address - note: > - The IP address of the original client behind all proxies, if - known (e.g. from [Forwarded](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Forwarded), - [X-Forwarded-For](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For), or a similar header). - Otherwise, the immediate client peer address. - examples: ['83.164.160.102'] - - ref: client.port - brief: > - The port of the original client behind all proxies, if - known (e.g. from [Forwarded](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Forwarded) or a similar header). - Otherwise, the immediate client peer port. - - ref: client.socket.address - - ref: client.socket.port - - ref: url.path - requirement_level: required - sampling_relevant: true - - ref: url.query - sampling_relevant: true - - ref: url.scheme - sampling_relevant: true - requirement_level: required - examples: ["http", "https"] diff --git a/semantic_conventions/trace/instrumentation/aws-sdk.yml b/semantic_conventions/trace/instrumentation/aws-sdk.yml deleted file mode 100644 index 90b6d1c9671..00000000000 --- a/semantic_conventions/trace/instrumentation/aws-sdk.yml +++ /dev/null @@ -1,516 +0,0 @@ -groups: - - id: aws - prefix: aws - type: span - brief: > - The `aws` conventions apply to operations using the AWS SDK. They map request or response parameters - in AWS SDK API calls to attributes on a Span. The conventions have been collected over time based - on feedback from AWS users of tracing and will continue to evolve as new interesting conventions - are found. - - Some descriptions are also provided for populating general OpenTelemetry semantic conventions based on - these APIs. - attributes: - - ref: rpc.system - brief: "The value `aws-api`." - requirement_level: required - examples: - - aws-api - - ref: rpc.service - brief: "The name of the service to which a request is made, as returned by the AWS SDK." - examples: - - DynamoDB - - S3 - - ref: rpc.method - brief: "The name of the operation corresponding to the request, as returned by the AWS SDK" - examples: - - GetItem - - PutItem - - id: request_id - type: string - brief: "The AWS request ID as returned in the response headers `x-amz-request-id` or `x-amz-requestid`." - examples: - - 79b9da39-b7ae-508a-a6bc-864b2829c622 - - C9ER4AJX75574TDJ - - - id: dynamodb.all - type: span - brief: "Attributes always filled for all DynamoDB request types." - attributes: - - ref: db.system - brief: "The value `dynamodb`." - requirement_level: required - examples: - - dynamodb - - - id: dynamodb.shared - extends: aws - prefix: aws.dynamodb - type: span - brief: "Attributes that exist for multiple DynamoDB request types." - attributes: - - ref: db.operation - brief: "The same value as `rpc.method`." - examples: - - GetItem - - PutItem - - id: table_names - type: string[] - brief: The keys in the `RequestItems` object field. - examples: - - Users - - Cats - - id: consumed_capacity - type: string[] - brief: "The JSON-serialized value of each item in the `ConsumedCapacity` response field." - examples: - - '{ - "CapacityUnits": number, - "GlobalSecondaryIndexes": { - "string" : { - "CapacityUnits": number, - "ReadCapacityUnits": number, - "WriteCapacityUnits": number - } - }, - "LocalSecondaryIndexes": { - "string" : { - "CapacityUnits": number, - "ReadCapacityUnits": number, - "WriteCapacityUnits": number - } - }, - "ReadCapacityUnits": number, - "Table": { - "CapacityUnits": number, - "ReadCapacityUnits": number, - "WriteCapacityUnits": number - }, - "TableName": "string", - "WriteCapacityUnits": number - }' - - id: item_collection_metrics - type: string - brief: "The JSON-serialized value of the `ItemCollectionMetrics` response field." - examples: - - '{ - "string" : [ - { - "ItemCollectionKey": { - "string" : { - "B": blob, - "BOOL": boolean, - "BS": [ blob ], - "L": [ - "AttributeValue" - ], - "M": { - "string" : "AttributeValue" - }, - "N": "string", - "NS": [ "string" ], - "NULL": boolean, - "S": "string", - "SS": [ "string" ] - } - }, - "SizeEstimateRangeGB": [ number ] - } - ] - }' - - id: provisioned_read_capacity - type: double - brief: "The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter." - examples: - - 1.0 - - 2.0 - - id: provisioned_write_capacity - type: double - brief: "The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter." - examples: - - 1.0 - - 2.0 - - id: consistent_read - type: boolean - brief: "The value of the `ConsistentRead` request parameter." - - id: projection - type: string - brief: "The value of the `ProjectionExpression` request parameter." - examples: - - Title - - Title, Price, Color - - Title, Description, RelatedItems, ProductReviews - - id: limit - type: int - brief: "The value of the `Limit` request parameter." - examples: - - 10 - - id: attributes_to_get - type: string[] - brief: "The value of the `AttributesToGet` request parameter." - examples: - - lives - - id - - id: index_name - type: string - brief: "The value of the `IndexName` request parameter." - examples: - - name_to_group - - id: select - type: string - brief: "The value of the `Select` request parameter." - examples: - - ALL_ATTRIBUTES - - COUNT - - - id: dynamodb.batchgetitem - brief: DynamoDB.BatchGetItem - extends: aws - prefix: aws.dynamodb - type: span - attributes: - - ref: aws.dynamodb.table_names - - ref: aws.dynamodb.consumed_capacity - - - id: dynamodb.batchwriteitem - brief: DynamoDB.BatchWriteItem - extends: aws - prefix: aws.dynamodb - type: span - attributes: - - ref: aws.dynamodb.table_names - - ref: aws.dynamodb.consumed_capacity - - ref: aws.dynamodb.item_collection_metrics - - - id: dynamodb.createtable - brief: DynamoDB.CreateTable - extends: aws - prefix: aws.dynamodb - type: span - attributes: - - id: global_secondary_indexes - type: string[] - brief: "The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field" - examples: - - '{ - "IndexName": "string", - "KeySchema": [ - { - "AttributeName": "string", - "KeyType": "string" - } - ], - "Projection": { - "NonKeyAttributes": [ "string" ], - "ProjectionType": "string" - }, - "ProvisionedThroughput": { - "ReadCapacityUnits": number, - "WriteCapacityUnits": number - } - }' - - id: local_secondary_indexes - type: string[] - brief: "The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field." - examples: - - '{ - "IndexArn": "string", - "IndexName": "string", - "IndexSizeBytes": number, - "ItemCount": number, - "KeySchema": [ - { - "AttributeName": "string", - "KeyType": "string" - } - ], - "Projection": { - "NonKeyAttributes": [ "string" ], - "ProjectionType": "string" - } - }' - - ref: aws.dynamodb.table_names - brief: "A single-element array with the value of the TableName request parameter." - examples: - - Users - - ref: aws.dynamodb.consumed_capacity - - ref: aws.dynamodb.item_collection_metrics - - ref: aws.dynamodb.provisioned_read_capacity - - ref: aws.dynamodb.provisioned_write_capacity - - - id: dynamodb.deleteitem - brief: DynamoDB.DeleteItem - extends: aws - prefix: aws.dynamodb - type: span - attributes: - - ref: aws.dynamodb.table_names - brief: "A single-element array with the value of the TableName request parameter." - examples: - - Users - - ref: aws.dynamodb.consumed_capacity - - ref: aws.dynamodb.item_collection_metrics - - - id: dynamodb.deletetable - brief: DynamoDB.DeleteTable - extends: aws - prefix: aws.dynamodb - type: span - attributes: - - ref: aws.dynamodb.table_names - brief: "A single-element array with the value of the TableName request parameter." - examples: - - Users - - - id: dynamodb.describetable - brief: DynamoDB.DescribeTable - extends: aws - prefix: aws.dynamodb - type: span - attributes: - - ref: aws.dynamodb.table_names - brief: "A single-element array with the value of the TableName request parameter." - examples: - - Users - - - id: dynamodb.getitem - brief: DynamoDB.GetItem - extends: aws - prefix: aws.dynamodb - type: span - attributes: - - ref: aws.dynamodb.table_names - brief: "A single-element array with the value of the TableName request parameter." - examples: - - Users - - ref: aws.dynamodb.consumed_capacity - - ref: aws.dynamodb.consistent_read - - ref: aws.dynamodb.projection - - - id: dynamodb.listtables - brief: DynamoDB.ListTables - extends: aws - prefix: aws.dynamodb - type: span - attributes: - - id: exclusive_start_table - type: string - brief: "The value of the `ExclusiveStartTableName` request parameter." - examples: - - Users - - CatsTable - - id: table_count - type: int - brief: "The the number of items in the `TableNames` response parameter." - examples: - - 20 - - ref: aws.dynamodb.limit - - - id: dynamodb.putitem - brief: DynamoDB.PutItem - extends: aws - prefix: aws.dynamodb - type: span - attributes: - - ref: aws.dynamodb.table_names - - ref: aws.dynamodb.consumed_capacity - - ref: aws.dynamodb.item_collection_metrics - - - id: dynamodb.query - brief: DynamoDB.Query - extends: aws - prefix: aws.dynamodb - type: span - attributes: - - id: scan_forward - type: boolean - brief: "The value of the `ScanIndexForward` request parameter." - - ref: aws.dynamodb.table_names - brief: "A single-element array with the value of the TableName request parameter." - examples: - - Users - - ref: aws.dynamodb.consumed_capacity - - ref: aws.dynamodb.consistent_read - - ref: aws.dynamodb.limit - - ref: aws.dynamodb.projection - - ref: aws.dynamodb.attributes_to_get - - ref: aws.dynamodb.index_name - - ref: aws.dynamodb.select - - - id: dynamodb.scan - brief: DynamoDB.Scan - extends: aws - prefix: aws.dynamodb - type: span - attributes: - - id: segment - type: int - brief: "The value of the `Segment` request parameter." - examples: - - 10 - - id: total_segments - type: int - brief: "The value of the `TotalSegments` request parameter." - examples: - - 100 - - id: count - type: int - brief: "The value of the `Count` response parameter." - examples: - - 10 - - id: scanned_count - type: int - brief: "The value of the `ScannedCount` response parameter." - examples: - - 50 - - ref: aws.dynamodb.table_names - brief: "A single-element array with the value of the TableName request parameter." - examples: - - Users - - ref: aws.dynamodb.consumed_capacity - - ref: aws.dynamodb.consistent_read - - ref: aws.dynamodb.limit - - ref: aws.dynamodb.projection - - ref: aws.dynamodb.attributes_to_get - - ref: aws.dynamodb.index_name - - ref: aws.dynamodb.select - - - id: dynamodb.updateitem - brief: DynamoDB.UpdateItem - extends: aws - prefix: aws.dynamodb - type: span - attributes: - - ref: aws.dynamodb.table_names - brief: "A single-element array with the value of the TableName request parameter." - examples: - - Users - - ref: aws.dynamodb.consumed_capacity - - ref: aws.dynamodb.item_collection_metrics - - - id: dynamodb.updatetable - brief: DynamoDB.UpdateTable - extends: aws - prefix: aws.dynamodb - type: span - attributes: - - id: attribute_definitions - type: string[] - brief: "The JSON-serialized value of each item in the `AttributeDefinitions` request field." - examples: - - '{ - "AttributeName": "string", - "AttributeType": "string" - }' - - id: global_secondary_index_updates - type: string[] - brief: "The JSON-serialized value of each item in the the `GlobalSecondaryIndexUpdates` request field." - examples: - - '{ - "Create": { - "IndexName": "string", - "KeySchema": [ - { - "AttributeName": "string", - "KeyType": "string" - } - ], - "Projection": { - "NonKeyAttributes": [ "string" ], - "ProjectionType": "string" - }, - "ProvisionedThroughput": { - "ReadCapacityUnits": number, - "WriteCapacityUnits": number - } - }' - - ref: aws.dynamodb.table_names - brief: "A single-element array with the value of the TableName request parameter." - examples: - - Users - - ref: aws.dynamodb.consumed_capacity - - ref: aws.dynamodb.provisioned_read_capacity - - ref: aws.dynamodb.provisioned_write_capacity - - - id: aws.s3 - extends: aws - prefix: aws.s3 - type: span - brief: "Attributes that exist for S3 request types." - attributes: - - id: bucket - type: string - brief: "The S3 bucket name the request refers to. Corresponds to the `--bucket` parameter of the [S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) operations." - examples: - - some-bucket-name - note: | - The `bucket` attribute is applicable to all S3 operations that reference a bucket, i.e. that require the bucket name as a mandatory parameter. - This applies to almost all S3 operations except `list-buckets`. - - id: key - type: string - brief: "The S3 object key the request refers to. Corresponds to the `--key` parameter of the [S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) operations." - examples: - - someFile.yml - note: | - The `key` attribute is applicable to all object-related S3 operations, i.e. that require the object key as a mandatory parameter. - This applies in particular to the following operations: - - - [copy-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html) - - [delete-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html) - - [get-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/get-object.html) - - [head-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/head-object.html) - - [put-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/put-object.html) - - [restore-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/restore-object.html) - - [select-object-content](https://docs.aws.amazon.com/cli/latest/reference/s3api/select-object-content.html) - - [abort-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/abort-multipart-upload.html) - - [complete-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/complete-multipart-upload.html) - - [create-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/create-multipart-upload.html) - - [list-parts](https://docs.aws.amazon.com/cli/latest/reference/s3api/list-parts.html) - - [upload-part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html) - - [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html) - - id: copy_source - type: string - brief: "The source object (in the form `bucket`/`key`) for the copy operation." - examples: - - someFile.yml - note: | - The `copy_source` attribute applies to S3 copy operations and corresponds to the `--copy-source` parameter - of the [copy-object operation within the S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html). - This applies in particular to the following operations: - - - [copy-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html) - - [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html) - - id: upload_id - type: string - brief: "Upload ID that identifies the multipart upload." - examples: - - 'dfRtDYWFbkRONycy.Yxwh66Yjlx.cph0gtNBtJ' - note: | - The `upload_id` attribute applies to S3 multipart-upload operations and corresponds to the `--upload-id` parameter - of the [S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) multipart operations. - This applies in particular to the following operations: - - - [abort-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/abort-multipart-upload.html) - - [complete-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/complete-multipart-upload.html) - - [list-parts](https://docs.aws.amazon.com/cli/latest/reference/s3api/list-parts.html) - - [upload-part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html) - - [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html) - - id: delete - type: string - brief: "The delete request container that specifies the objects to be deleted." - examples: - - 'Objects=[{Key=string,VersionId=string},{Key=string,VersionId=string}],Quiet=boolean' - note: | - The `delete` attribute is only applicable to the [delete-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html) operation. - The `delete` attribute corresponds to the `--delete` parameter of the - [delete-objects operation within the S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-objects.html). - - id: part_number - type: int - brief: "The part number of the part being uploaded in a multipart-upload operation. This is a positive integer between 1 and 10,000." - examples: - - 3456 - note: | - The `part_number` attribute is only applicable to the [upload-part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html) - and [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html) operations. - The `part_number` attribute corresponds to the `--part-number` parameter of the - [upload-part operation within the S3 API](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html). diff --git a/semantic_conventions/trace/instrumentation/graphql.yml b/semantic_conventions/trace/instrumentation/graphql.yml deleted file mode 100644 index 88af65e98e8..00000000000 --- a/semantic_conventions/trace/instrumentation/graphql.yml +++ /dev/null @@ -1,32 +0,0 @@ -groups: - - id: graphql - prefix: graphql - type: span - brief: > - This document defines semantic conventions to apply when instrumenting the GraphQL implementation. They map - GraphQL operations to attributes on a Span. - attributes: - - id: operation.name - brief: "The name of the operation being executed." - type: string - examples: 'findBookById' - - id: operation.type - brief: "The type of the operation being executed." - type: - allow_custom_values: false - members: - - id: query - value: "query" - brief: "GraphQL query" - - id: mutation - value: "mutation" - brief: "GraphQL mutation" - - id: subscription - value: "subscription" - brief: "GraphQL subscription" - examples: ['query', 'mutation', 'subscription'] - - id: document - brief: "The GraphQL document being executed." - type: string - note: The value may be sanitized to exclude sensitive information. - examples: 'query findBookById { bookById(id: ?) { name } }' diff --git a/semantic_conventions/trace/messaging.yaml b/semantic_conventions/trace/messaging.yaml deleted file mode 100644 index 12aa0d8118e..00000000000 --- a/semantic_conventions/trace/messaging.yaml +++ /dev/null @@ -1,374 +0,0 @@ -groups: - - id: messaging.message - prefix: messaging - type: attribute_group - brief: 'Semantic convention describing per-message attributes populated on messaging spans or links.' - attributes: - - ref: messaging.destination.name - - ref: messaging.source.name - - id: message.id - type: string - brief: 'A value used by the messaging system as an identifier for the message, represented as a string.' - examples: '452a7c7c7c7048c2f887f61572b18fc2' - - id: message.conversation_id - type: string - brief: > - The [conversation ID](#conversations) identifying the conversation to which the message belongs, - represented as a string. Sometimes called "Correlation ID". - examples: 'MyConversationId' - - id: message.payload_size_bytes - type: int - brief: > - The (uncompressed) size of the message payload in bytes. - Also use this attribute if it is unknown whether the compressed or uncompressed payload size is reported. - examples: 2738 - - id: message.payload_compressed_size_bytes - type: int - brief: 'The compressed size of the message payload in bytes.' - examples: 2048 - - - id: messaging.destination - prefix: messaging.destination - type: attribute_group - brief: 'Semantic convention for attributes that describe messaging destination on broker' - attributes: - - id: name - type: string - brief: 'The message destination name' - note: | - Destination name SHOULD uniquely identify a specific queue, topic or other entity within the broker. If - the broker does not have such notion, the destination name SHOULD uniquely identify the broker. - examples: ['MyQueue', 'MyTopic'] - - id: template - type: string - brief: Low cardinality representation of the messaging destination name - note: > - Destination names could be constructed from templates. - An example would be a destination name involving a user name or product id. - Although the destination name in this case is of high cardinality, - the underlying template is of low cardinality and can be effectively - used for grouping and aggregation. - examples: ['/customers/{customerId}'] - - id: temporary - type: boolean - brief: 'A boolean that is true if the message destination is temporary and might not exist anymore after messages are processed.' - - id: anonymous - type: boolean - brief: 'A boolean that is true if the message destination is anonymous (could be unnamed or have auto-generated name).' - - - id: messaging.source - prefix: messaging.source - type: attribute_group - brief: 'Semantic convention for attributes that describe messaging source on broker' - attributes: - - id: name - type: string - brief: 'The message source name' - note: | - Source name SHOULD uniquely identify a specific queue, topic, or other entity within the broker. If - the broker does not have such notion, the source name SHOULD uniquely identify the broker. - examples: ['MyQueue', 'MyTopic'] - - id: template - type: string - brief: 'Low cardinality representation of the messaging source name' - examples: ['/customers/{customerId}'] - note: > - Source names could be constructed from templates. - An example would be a source name involving a user name or product id. - Although the source name in this case is of high cardinality, - the underlying template is of low cardinality and can be effectively - used for grouping and aggregation. - - id: temporary - type: boolean - brief: 'A boolean that is true if the message source is temporary and might not exist anymore after messages are processed.' - - id: anonymous - type: boolean - brief: 'A boolean that is true if the message source is anonymous (could be unnamed or have auto-generated name).' - - - id: messaging - prefix: messaging - type: span - brief: > - This document defines general attributes used in - messaging systems. - attributes: - - id: system - type: string - requirement_level: required - brief: 'A string identifying the messaging system.' - examples: ['kafka', 'rabbitmq', 'rocketmq', 'activemq', 'AmazonSQS'] - - id: operation - type: - allow_custom_values: true - members: - - id: publish - value: "publish" - - id: receive - value: "receive" - - id: process - value: "process" - requirement_level: required - brief: > - A string identifying the kind of messaging operation as defined in the - [Operation names](#operation-names) section above. - note: If a custom value is used, it MUST be of low cardinality. - - id: batch.message_count - type: int - brief: The number of messages sent, received, or processed in the scope of the batching operation. - requirement_level: - conditionally_required: If the span describes an operation on a batch of messages. - note: > - Instrumentations SHOULD NOT set `messaging.batch.message_count` on spans that operate with a single message. - When a messaging client library supports both batch and single-message API for the same operation, instrumentations SHOULD - use `messaging.batch.message_count` for batching APIs and SHOULD NOT use it for single-message APIs. - examples: [0, 1, 2] - - id: client_id - type: string - requirement_level: - recommended: If a client id is available - brief: > - A unique identifier for the client that consumes or produces a message. - examples: ['client-5', 'myhost@8742@s8083jm'] - - ref: messaging.message.id - requirement_level: - recommended: Only for spans that represent an operation on a single message. - - ref: messaging.message.conversation_id - requirement_level: - recommended: Only if span represents operation on a single message. - - ref: messaging.message.payload_size_bytes - requirement_level: - recommended: Only if span represents operation on a single message. - - ref: messaging.message.payload_compressed_size_bytes - requirement_level: - recommended: Only if span represents operation on a single message. - - ref: server.address - note: > - This should be the IP/hostname of the broker (or other network-level peer) this specific message is sent to/received from. - requirement_level: - conditionally_required: If available. - - ref: server.socket.address - tag: connection-level - - ref: server.socket.port - tag: connection-level - - ref: network.transport - tag: connection-level - - ref: network.type - tag: connection-level - - ref: server.socket.domain - tag: connection-level - requirement_level: - recommended: If different than `server.address` and if `server.socket.address` is set. - - ref: network.protocol.name - examples: ['amqp', 'mqtt'] - - ref: network.protocol.version - - - id: messaging.producer - prefix: messaging - type: span - extends: messaging - span_kind: producer - brief: 'Semantic convention for producers of messages sent to a messaging systems.' - attributes: - - ref: messaging.destination.name - requirement_level: - conditionally_required: If one message is being published or if the value applies to all messages in the batch. - - ref: messaging.destination.template - requirement_level: - conditionally_required: > - If available. Instrumentations MUST NOT use `messaging.destination.name` as template - unless low-cardinality of destination name is guaranteed. - - ref: messaging.destination.temporary - requirement_level: - conditionally_required: If value is `true`. When missing, the value is assumed to be `false`. - - ref: messaging.destination.anonymous - requirement_level: - conditionally_required: If value is `true`. When missing, the value is assumed to be `false`. - - - id: messaging.producer.synchronous - prefix: messaging - type: span - extends: messaging - span_kind: client - brief: > - Semantic convention for clients of messaging systems that produce messages - and synchronously wait for responses. - - - id: messaging.consumer - prefix: messaging - type: span - extends: messaging - span_kind: consumer - brief: 'Semantic convention for a consumer of messages received from a messaging system' - attributes: - - ref: messaging.source.name - requirement_level: - conditionally_required: If the value applies to all messages in the batch. - - ref: messaging.source.template - requirement_level: - conditionally_required: > - If available. Instrumentations MUST NOT use `messaging.source.name` as template - unless low-cardinality of source name is guaranteed. - - ref: messaging.source.temporary - requirement_level: - recommended: When supported by messaging system and only if the source is temporary. When missing, the value is assumed to be `false`. - - ref: messaging.source.anonymous - requirement_level: - recommended: When supported by messaging system and only if the source is anonymous. When missing, the value is assumed to be `false`. - - ref: messaging.destination.name - requirement_level: - recommended: If known on consumer - - ref: messaging.destination.temporary - requirement_level: - recommended: If known on consumer - - ref: messaging.destination.anonymous - requirement_level: - recommended: If known on consumer - - - id: messaging.consumer.synchronous - prefix: messaging - type: span - extends: messaging.consumer - span_kind: server - brief: > - Semantic convention for servers that consume messages received from messaging systems - and always send back replies directed to the producers of these messages. - - - id: messaging.rabbitmq - prefix: messaging.rabbitmq - type: attribute_group - extends: messaging - brief: > - Attributes for RabbitMQ - attributes: - - id: destination.routing_key - type: string - requirement_level: - conditionally_required: If not empty. - brief: > - RabbitMQ message routing key. - examples: 'myKey' - - - id: messaging.kafka - prefix: messaging.kafka - type: attribute_group - extends: messaging - brief: > - Attributes for Apache Kafka - attributes: - - id: message.key - type: string - brief: > - Message keys in Kafka are used for grouping alike messages to ensure they're processed on the same partition. - They differ from `messaging.message.id` in that they're not unique. - If the key is `null`, the attribute MUST NOT be set. - note: > - If the key type is not string, it's string representation has to be supplied for the attribute. - If the key has no unambiguous, canonical string form, don't include its value. - examples: 'myKey' - - id: consumer.group - type: string - brief: > - Name of the Kafka Consumer Group that is handling the message. - Only applies to consumers, not producers. - examples: 'my-group' - - id: destination.partition - type: int - brief: > - Partition the message is sent to. - examples: 2 - - id: source.partition - type: int - brief: > - Partition the message is received from. - examples: 2 - - id: message.offset - type: int - brief: > - The offset of a record in the corresponding Kafka partition. - examples: 42 - - id: message.tombstone - type: boolean - requirement_level: - conditionally_required: If value is `true`. When missing, the value is assumed to be `false`. - brief: 'A boolean that is true if the message is a tombstone.' - - - id: messaging.rocketmq - prefix: messaging.rocketmq - type: attribute_group - extends: messaging - brief: > - Attributes for Apache RocketMQ - attributes: - - id: namespace - type: string - requirement_level: required - brief: > - Namespace of RocketMQ resources, resources in different namespaces are individual. - examples: 'myNamespace' - - id: client_group - type: string - requirement_level: required - brief: > - Name of the RocketMQ producer/consumer group that is handling the message. The client type is identified by the SpanKind. - examples: 'myConsumerGroup' - - id: message.delivery_timestamp - type: int - requirement_level: - conditionally_required: If the message type is delay and delay time level is not specified. - brief: > - The timestamp in milliseconds that the delay message is expected to be delivered to consumer. - examples: 1665987217045 - - id: message.delay_time_level - type: int - requirement_level: - conditionally_required: If the message type is delay and delivery timestamp is not specified. - brief: > - The delay time level for delay message, which determines the message delay time. - examples: 3 - - id: message.group - type: string - requirement_level: - conditionally_required: If the message type is FIFO. - brief: > - It is essential for FIFO message. Messages that belong to the same message group are always processed one by one within the same consumer group. - examples: 'myMessageGroup' - - id: message.type - type: - allow_custom_values: false - members: - - id: normal - value: 'normal' - brief: "Normal message" - - id: fifo - value: 'fifo' - brief: 'FIFO message' - - id: delay - value: 'delay' - brief: 'Delay message' - - id: transaction - value: 'transaction' - brief: 'Transaction message' - brief: > - Type of message. - - id: message.tag - type: string - brief: > - The secondary classifier of message besides topic. - examples: tagA - - id: message.keys - type: string[] - brief: > - Key(s) of message, another way to mark message besides message id. - examples: ['keyA', 'keyB'] - - id: consumption_model - type: - allow_custom_values: false - members: - - id: clustering - value: 'clustering' - brief: 'Clustering consumption model' - - id: broadcasting - value: 'broadcasting' - brief: 'Broadcasting consumption model' - brief: > - Model of message consumption. This only applies to consumer spans. diff --git a/semantic_conventions/trace/rpc.yaml b/semantic_conventions/trace/rpc.yaml deleted file mode 100644 index d2aab9a5edb..00000000000 --- a/semantic_conventions/trace/rpc.yaml +++ /dev/null @@ -1,263 +0,0 @@ -groups: - - id: rpc - prefix: rpc - type: span - brief: 'This document defines semantic conventions for remote procedure calls.' - events: [rpc.message] - attributes: - - id: system - requirement_level: required - brief: 'A string identifying the remoting system. See below for a list of well-known identifiers.' - type: - allow_custom_values: true - members: - - id: grpc - value: 'grpc' - brief: 'gRPC' - - id: java_rmi - value: 'java_rmi' - brief: 'Java RMI' - - id: dotnet_wcf - value: 'dotnet_wcf' - brief: '.NET WCF' - - id: apache_dubbo - value: 'apache_dubbo' - brief: 'Apache Dubbo' - - id: connect_rpc - value: 'connect_rpc' - brief: 'Connect RPC' - - id: service - type: string - requirement_level: recommended - brief: 'The full (logical) name of the service being called, including its package name, if applicable.' - note: > - This is the logical name of the service from the RPC interface perspective, - which can be different from the name of any implementing class. - The `code.namespace` attribute may be used to store the latter - (despite the attribute name, it may include a class name; - e.g., class with method actually executing the call on the server side, - RPC client stub class on the client side). - examples: "myservice.EchoService" - - id: method - type: string - requirement_level: recommended - brief: 'The name of the (logical) method being called, must be equal to the $method part in the span name.' - note: > - This is the logical name of the method from the RPC interface perspective, - which can be different from the name of any implementing method/function. - The `code.function` attribute may be used to store the latter - (e.g., method actually executing the call on the server side, - RPC client stub method on the client side). - examples: "exampleMethod" - - ref: server.socket.address - - ref: server.socket.port - requirement_level: - recommended: If different than `server.port` and if `server.socket.address` is set. - - ref: network.transport - - ref: network.type - - ref: server.address - requirement_level: required - brief: > - RPC server [host name](https://grpc.github.io/grpc/core/md_doc_naming.html). - note: > - May contain server IP address, DNS name, or local socket name. When host component is an IP address, - instrumentations SHOULD NOT do a reverse proxy lookup to obtain DNS name and SHOULD set - `server.address` to the IP address provided in the host component. - - ref: server.port - requirement_level: - conditionally_required: See below - constraints: - - any_of: - - server.socket.address - - server.address - - - id: rpc.client - type: span - brief: 'This document defines semantic conventions for remote procedure call client spans.' - extends: rpc - attributes: - - ref: server.socket.domain - requirement_level: - recommended: If different than `server.address` and if `server.socket.address` is set. - - - id: rpc.server - prefix: rpc - type: span - extends: rpc - span_kind: server - brief: 'Semantic Convention for RPC server spans' - attributes: - - ref: client.address - - ref: client.port - - ref: client.socket.address - - ref: client.socket.port - - ref: network.transport - - ref: network.type - - - id: rpc.grpc - prefix: rpc.grpc - type: span - extends: rpc - brief: 'Tech-specific attributes for gRPC.' - attributes: - - id: status_code - type: - members: - - id: ok - brief: OK - value: 0 - - id: cancelled - brief: CANCELLED - value: 1 - - id: unknown - brief: UNKNOWN - value: 2 - - id: invalid_argument - brief: INVALID_ARGUMENT - value: 3 - - id: deadline_exceeded - brief: DEADLINE_EXCEEDED - value: 4 - - id: not_found - brief: NOT_FOUND - value: 5 - - id: already_exists - brief: ALREADY_EXISTS - value: 6 - - id: permission_denied - brief: PERMISSION_DENIED - value: 7 - - id: resource_exhausted - brief: RESOURCE_EXHAUSTED - value: 8 - - id: failed_precondition - brief: FAILED_PRECONDITION - value: 9 - - id: aborted - brief: ABORTED - value: 10 - - id: out_of_range - brief: OUT_OF_RANGE - value: 11 - - id: unimplemented - brief: UNIMPLEMENTED - value: 12 - - id: internal - brief: INTERNAL - value: 13 - - id: unavailable - brief: UNAVAILABLE - value: 14 - - id: data_loss - brief: DATA_LOSS - value: 15 - - id: unauthenticated - brief: UNAUTHENTICATED - value: 16 - requirement_level: required - brief: "The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request." - - - id: rpc.jsonrpc - prefix: rpc.jsonrpc - type: span - extends: rpc - brief: 'Tech-specific attributes for [JSON RPC](https://www.jsonrpc.org/).' - attributes: - - id: version - type: string - requirement_level: - conditionally_required: If other than the default version (`1.0`) - brief: "Protocol version as in `jsonrpc` property of request/response. Since JSON-RPC 1.0 does not specify this, the value can be omitted." - examples: ['2.0', '1.0'] - - id: request_id - type: string - brief: > - `id` property of request or response. - Since protocol allows id to be int, string, `null` or missing (for notifications), - value is expected to be cast to string for simplicity. - Use empty string in case of `null` value. Omit entirely if this is a notification. - examples: ['10', 'request-7', ''] - - id: error_code - type: int - requirement_level: - conditionally_required: If response is not successful. - brief: "`error.code` property of response if it is an error response." - examples: [-32700, 100] - - id: error_message - type: string - brief: "`error.message` property of response if it is an error response." - examples: ['Parse error', 'User already exists'] - - ref: rpc.method - requirement_level: required - note: > - This is always required for jsonrpc. See the note in the general - RPC conventions for more information. - - - id: rpc.message - prefix: "message" # TODO: Change the prefix to rpc.message? - type: event - brief: "RPC received/sent message." - attributes: - - id: type - type: - members: - - id: sent - value: "SENT" - - id: received - value: "RECEIVED" - brief: "Whether this is a received or sent message." - - id: id - type: int - brief: "MUST be calculated as two different counters starting from `1` one for sent messages and one for received message." - note: "This way we guarantee that the values will be consistent between different implementations." - - id: compressed_size - type: int - brief: "Compressed size of the message in bytes." - - id: uncompressed_size - type: int - brief: "Uncompressed size of the message in bytes." - - - id: rpc.connect_rpc - prefix: rpc.connect_rpc - type: span - extends: rpc - brief: 'Tech-specific attributes for Connect RPC.' - attributes: - - id: error_code - type: - members: - - id: cancelled - value: cancelled - - id: unknown - value: unknown - - id: invalid_argument - value: invalid_argument - - id: deadline_exceeded - value: deadline_exceeded - - id: not_found - value: not_found - - id: already_exists - value: already_exists - - id: permission_denied - value: permission_denied - - id: resource_exhausted - value: resource_exhausted - - id: failed_precondition - value: failed_precondition - - id: aborted - value: aborted - - id: out_of_range - value: out_of_range - - id: unimplemented - value: unimplemented - - id: internal - value: internal - - id: unavailable - value: unavailable - - id: data_loss - value: data_loss - - id: unauthenticated - value: unauthenticated - requirement_level: - conditionally_required: If response is not successful and if error code available. - brief: "The [error codes](https://connect.build/docs/protocol/#error-codes) of the Connect request. Error codes are always string values." diff --git a/semantic_conventions/trace/trace-exception.yaml b/semantic_conventions/trace/trace-exception.yaml deleted file mode 100644 index a11082ebd95..00000000000 --- a/semantic_conventions/trace/trace-exception.yaml +++ /dev/null @@ -1,38 +0,0 @@ -groups: - - id: trace-exception - prefix: exception - type: event - brief: > - This document defines the attributes used to - report a single exception associated with a span. - attributes: - - ref: exception.type - - ref: exception.message - - ref: exception.stacktrace - - id: escaped - type: boolean - brief: > - SHOULD be set to true if the exception event is recorded at a point where - it is known that the exception is escaping the scope of the span. - note: |- - An exception is considered to have escaped (or left) the scope of a span, - if that span is ended while the exception is still logically "in flight". - This may be actually "in flight" in some languages (e.g. if the exception - is passed to a Context manager's `__exit__` method in Python) but will - usually be caught at the point of recording the exception in most languages. - - It is usually not possible to determine at the point where an exception is thrown - whether it will escape the scope of a span. - However, it is trivial to know that an exception - will escape, if one checks for an active exception just before ending the span, - as done in the [example above](#recording-an-exception). - - It follows that an exception may still escape the scope of the span - even if the `exception.escaped` attribute was not set or set to false, - since the event might have been recorded at a time where it was not - clear whether the exception will escape. - - constraints: - - any_of: - - "exception.type" - - "exception.message" diff --git a/semantic_conventions/url.yaml b/semantic_conventions/url.yaml deleted file mode 100644 index 6e839fc3940..00000000000 --- a/semantic_conventions/url.yaml +++ /dev/null @@ -1,39 +0,0 @@ -groups: - - id: url - brief: Attributes describing URL. - type: attribute_group - prefix: url - attributes: - - id: scheme - type: string - brief: 'The [URI scheme](https://www.rfc-editor.org/rfc/rfc3986#section-3.1) component identifying the used protocol.' - examples: ["https", "ftp", "telnet"] - - id: full - type: string - brief: Absolute URL describing a network resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986) - note: > - For network calls, URL usually has `scheme://host[:port][path][?query][#fragment]` format, where the fragment - is not transmitted over HTTP, but if it is known, it should be included nevertheless. - - `url.full` MUST NOT contain credentials passed via URL in form of `https://username:password@www.example.com/`. - In such case username and password should be redacted and attribute's value should be `https://REDACTED:REDACTED@www.example.com/`. - - `url.full` SHOULD capture the absolute URL when it is available (or can be reconstructed) - and SHOULD NOT be validated or modified except for sanitizing purposes. - examples: ['https://www.foo.bar/search?q=OpenTelemetry#SemConv', '//localhost'] - tag: sensitive-information - - id: path - type: string - brief: 'The [URI path](https://www.rfc-editor.org/rfc/rfc3986#section-3.3) component' - examples: ['/search'] - note: When missing, the value is assumed to be `/` - - id: query - type: string - brief: 'The [URI query](https://www.rfc-editor.org/rfc/rfc3986#section-3.4) component' - examples: ["q=OpenTelemetry"] - note: Sensitive content provided in query string SHOULD be scrubbed when instrumentations can identify it. - tag: sensitive-information - - id: fragment - type: string - brief: 'The [URI fragment](https://www.rfc-editor.org/rfc/rfc3986#section-3.5) component' - examples: ["SemConv"] diff --git a/semantic_conventions/user-agent.yaml b/semantic_conventions/user-agent.yaml deleted file mode 100644 index 2f43b1af3e6..00000000000 --- a/semantic_conventions/user-agent.yaml +++ /dev/null @@ -1,10 +0,0 @@ -groups: - - id: attributes.user_agent - type: attribute_group - brief: "Describes user-agent attributes." - prefix: user_agent - attributes: - - id: original - type: string - brief: 'Value of the [HTTP User-Agent](https://www.rfc-editor.org/rfc/rfc9110.html#field.user-agent) header sent by the client.' - examples: ['CERN-LineMode/2.15 libwww/2.17b3'] diff --git a/semantic_conventions/version.properties b/semantic_conventions/version.properties deleted file mode 100644 index 03770cf2807..00000000000 --- a/semantic_conventions/version.properties +++ /dev/null @@ -1 +0,0 @@ -version=1 diff --git a/specification/overview.md b/specification/overview.md index 3b77204d9c5..31de4d233f0 100644 --- a/specification/overview.md +++ b/specification/overview.md @@ -72,17 +72,14 @@ Application owners use the SDK constructors; [plugin authors](glossary.md#plugin The **Semantic Conventions** define the keys and values which describe commonly observed concepts, protocols, and operations used by applications. -**Note: Semantic conventions will be moving to a new repository.** - -* [Resource Conventions](resource/semantic_conventions/README.md) -* [Span Conventions](trace/semantic_conventions/README.md) -* [Metrics Conventions](metrics/semantic_conventions/README.md) +Semantic Conventions are now located in their own repository: +[https://github.com/open-telemetry/semantic-conventions](https://github.com/open-telemetry/semantic-conventions) Both the collector and the client libraries SHOULD autogenerate semantic convention keys and enum values into constants (or language idiomatic equivalent). Generated values shouldn't be distributed in stable packages until semantic conventions are stable. -The [YAML](../semantic_conventions/README.md) files MUST be used as the +The [YAML](https://github.com/open-telemetry/semantic-conventions/tree/main/semantic_conventions) files MUST be used as the source of truth for generation. Each language implementation SHOULD provide language-specific support to the [code generator](https://github.com/open-telemetry/build-tools/tree/main/semantic-conventions#code-generator).