From e769e5fd09f8766ca03cacf95264c55b8c98a657 Mon Sep 17 00:00:00 2001 From: marcsanmi Date: Thu, 18 May 2023 12:33:35 +0200 Subject: [PATCH 1/9] Add container semantic conventions resource --- semantic_conventions/resource/container.yaml | 22 +++++++++++++++++++ .../semantic_conventions/container.md | 4 ++++ 2 files changed, 26 insertions(+) diff --git a/semantic_conventions/resource/container.yaml b/semantic_conventions/resource/container.yaml index 6fdb1fd42f..c3a339e24d 100644 --- a/semantic_conventions/resource/container.yaml +++ b/semantic_conventions/resource/container.yaml @@ -32,3 +32,25 @@ groups: brief: > Container image tag. examples: ['0.1'] + - id: image.id + type: string + brief: > + The ID of the container image. Usually a hash algorithm followed by a UUID. The UUID might be abbreviated. + examples: ['sha256:f90d814248a0'] + - id: command + type: string + brief: > + The command used to run the container (i.e. the command name). + examples: [ 'otelcontribcol' ] + - id: command_line + type: string + brief: > + The full command run by the container as a single string representing the full command. + It is recommended to remove embedded credentials or sensitive data to prevent potential leakage. + examples: [ 'otelcontribcol --config config.yaml' ] + - id: command_args + type: string[] + brief: > + All the command arguments (including the command/executable itself) run by the container. + It is recommended to remove embedded credentials or sensitive data to prevent potential leakage. + examples: [ 'otelcontribcol, --config, config.yaml' ] diff --git a/specification/resource/semantic_conventions/container.md b/specification/resource/semantic_conventions/container.md index da54233049..c44a0e6ba7 100644 --- a/specification/resource/semantic_conventions/container.md +++ b/specification/resource/semantic_conventions/container.md @@ -14,6 +14,10 @@ | `container.runtime` | string | The container runtime managing this container. | `docker`; `containerd`; `rkt` | Recommended | | `container.image.name` | string | Name of the image the container was built on. | `gcr.io/opentelemetry/operator` | Recommended | | `container.image.tag` | string | Container image tag. | `0.1` | Recommended | +| `container.image.id` | string | The ID of the container image. Usually a hash algorithm followed by a UUID. The UUID might be abbreviated. | `sha256:f90d814248a0` | Recommended | +| `container.command` | string | The command used to run the container (i.e. the command name). | `otelcontribcol` | Recommended | +| `container.command_line` | string | The full command run by the container as a single string representing the full command. It is recommended to remove embedded credentials or sensitive data to prevent potential leakage. | `otelcontribcol --config config.yaml` | Recommended | +| `container.command_args` | string[] | All the command arguments (including the command/executable itself) run by the container. It is recommended to remove embedded credentials or sensitive data to prevent potential leakage. | `[otelcontribcol, --config, config.yaml]` | Recommended | [DocumentStatus]: https://github.com/open-telemetry/opentelemetry-specification/blob/v1.21.0/specification/document-status.md From 5270563725561ddf6df921e6a406af33fb9a1810 Mon Sep 17 00:00:00 2001 From: marcsanmi Date: Fri, 26 May 2023 09:58:34 +0200 Subject: [PATCH 2/9] Set command attributes as conditionally required --- semantic_conventions/resource/container.yaml | 10 +++++++--- .../resource/semantic_conventions/container.md | 14 +++++++------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/semantic_conventions/resource/container.yaml b/semantic_conventions/resource/container.yaml index c3a339e24d..93a4a40838 100644 --- a/semantic_conventions/resource/container.yaml +++ b/semantic_conventions/resource/container.yaml @@ -36,21 +36,25 @@ groups: type: string brief: > The ID of the container image. Usually a hash algorithm followed by a UUID. The UUID might be abbreviated. - examples: ['sha256:f90d814248a0'] + examples: ['sha256:19c92d0a00d1b66d897bceaa7319bee0dd38a10a851c60bcec9474aa3f01e50f'] - id: command type: string + requirement_level: + conditionally_required: If using embedded credentials or sensitive data, it is recommended to remove them to prevent potential leakage. brief: > The command used to run the container (i.e. the command name). examples: [ 'otelcontribcol' ] - id: command_line type: string + requirement_level: + conditionally_required: [1] brief: > The full command run by the container as a single string representing the full command. - It is recommended to remove embedded credentials or sensitive data to prevent potential leakage. examples: [ 'otelcontribcol --config config.yaml' ] - id: command_args type: string[] + requirement_level: + conditionally_required: [1] brief: > All the command arguments (including the command/executable itself) run by the container. - It is recommended to remove embedded credentials or sensitive data to prevent potential leakage. examples: [ 'otelcontribcol, --config, config.yaml' ] diff --git a/specification/resource/semantic_conventions/container.md b/specification/resource/semantic_conventions/container.md index c44a0e6ba7..bd49639fe7 100644 --- a/specification/resource/semantic_conventions/container.md +++ b/specification/resource/semantic_conventions/container.md @@ -1,6 +1,6 @@ # Container -**Status**: [Experimental][DocumentStatus] +**Status**: [Experimental](../../document-status.md) **type:** `container` @@ -14,10 +14,10 @@ | `container.runtime` | string | The container runtime managing this container. | `docker`; `containerd`; `rkt` | Recommended | | `container.image.name` | string | Name of the image the container was built on. | `gcr.io/opentelemetry/operator` | Recommended | | `container.image.tag` | string | Container image tag. | `0.1` | Recommended | -| `container.image.id` | string | The ID of the container image. Usually a hash algorithm followed by a UUID. The UUID might be abbreviated. | `sha256:f90d814248a0` | Recommended | -| `container.command` | string | The command used to run the container (i.e. the command name). | `otelcontribcol` | Recommended | -| `container.command_line` | string | The full command run by the container as a single string representing the full command. It is recommended to remove embedded credentials or sensitive data to prevent potential leakage. | `otelcontribcol --config config.yaml` | Recommended | -| `container.command_args` | string[] | All the command arguments (including the command/executable itself) run by the container. It is recommended to remove embedded credentials or sensitive data to prevent potential leakage. | `[otelcontribcol, --config, config.yaml]` | Recommended | - +| `container.image.id` | string | The ID of the container image. Usually a hash algorithm followed by a UUID. The UUID might be abbreviated. | `sha256:19c92d0a00d1b66d897bceaa7319bee0dd38a10a851c60bcec9474aa3f01e50f` | Recommended | +| `container.command` | string | The command used to run the container (i.e. the command name). | `otelcontribcol` | Conditionally Required: [1] | +| `container.command_line` | string | The full command run by the container as a single string representing the full command. | `otelcontribcol --config config.yaml` | Conditionally Required: [1] | +| `container.command_args` | string[] | All the command arguments (including the command/executable itself) run by the container. | `[otelcontribcol, --config, config.yaml]` | Conditionally Required: [1] | -[DocumentStatus]: https://github.com/open-telemetry/opentelemetry-specification/blob/v1.21.0/specification/document-status.md +**[1]:** If using embedded credentials or sensitive data, it is recommended to remove them to prevent potential leakage. + From 7afcfc2bceadc6cbc7808f2173c27e9339129187 Mon Sep 17 00:00:00 2001 From: marcsanmi Date: Fri, 9 Jun 2023 14:35:19 +0200 Subject: [PATCH 3/9] Improve documentation regarding docker image id --- semantic_conventions/resource/container.yaml | 8 +++++--- .../resource/semantic_conventions/container.md | 12 +++++++----- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/semantic_conventions/resource/container.yaml b/semantic_conventions/resource/container.yaml index 93a4a40838..ecfe83cc78 100644 --- a/semantic_conventions/resource/container.yaml +++ b/semantic_conventions/resource/container.yaml @@ -35,7 +35,9 @@ groups: - id: image.id type: string brief: > - The ID of the container image. Usually a hash algorithm followed by a UUID. The UUID might be abbreviated. + Runtime specific image identifier. Usually a hash algorithm followed by a UUID. + note: + On docker, `image.id` corresponds to the `Image` field from the Docker container inspect [API](https://docs.docker.com/engine/api/v1.43/#tag/Container/operation/ContainerInspect) endpoint. examples: ['sha256:19c92d0a00d1b66d897bceaa7319bee0dd38a10a851c60bcec9474aa3f01e50f'] - id: command type: string @@ -47,14 +49,14 @@ groups: - id: command_line type: string requirement_level: - conditionally_required: [1] + conditionally_required: [2] brief: > The full command run by the container as a single string representing the full command. examples: [ 'otelcontribcol --config config.yaml' ] - id: command_args type: string[] requirement_level: - conditionally_required: [1] + conditionally_required: [2] brief: > All the command arguments (including the command/executable itself) run by the container. examples: [ 'otelcontribcol, --config, config.yaml' ] diff --git a/specification/resource/semantic_conventions/container.md b/specification/resource/semantic_conventions/container.md index bd49639fe7..f51576c57c 100644 --- a/specification/resource/semantic_conventions/container.md +++ b/specification/resource/semantic_conventions/container.md @@ -14,10 +14,12 @@ | `container.runtime` | string | The container runtime managing this container. | `docker`; `containerd`; `rkt` | Recommended | | `container.image.name` | string | Name of the image the container was built on. | `gcr.io/opentelemetry/operator` | Recommended | | `container.image.tag` | string | Container image tag. | `0.1` | Recommended | -| `container.image.id` | string | The ID of the container image. Usually a hash algorithm followed by a UUID. The UUID might be abbreviated. | `sha256:19c92d0a00d1b66d897bceaa7319bee0dd38a10a851c60bcec9474aa3f01e50f` | Recommended | -| `container.command` | string | The command used to run the container (i.e. the command name). | `otelcontribcol` | Conditionally Required: [1] | -| `container.command_line` | string | The full command run by the container as a single string representing the full command. | `otelcontribcol --config config.yaml` | Conditionally Required: [1] | -| `container.command_args` | string[] | All the command arguments (including the command/executable itself) run by the container. | `[otelcontribcol, --config, config.yaml]` | Conditionally Required: [1] | +| `container.image.id` | string | Runtime specific image identifier. Usually a hash algorithm followed by a UUID. [1] | `sha256:19c92d0a00d1b66d897bceaa7319bee0dd38a10a851c60bcec9474aa3f01e50f` | Recommended | +| `container.command` | string | The command used to run the container (i.e. the command name). | `otelcontribcol` | Conditionally Required: [2] | +| `container.command_line` | string | The full command run by the container as a single string representing the full command. | `otelcontribcol --config config.yaml` | Conditionally Required: [2] | +| `container.command_args` | string[] | All the command arguments (including the command/executable itself) run by the container. | `[otelcontribcol, --config, config.yaml]` | Conditionally Required: [2] | -**[1]:** If using embedded credentials or sensitive data, it is recommended to remove them to prevent potential leakage. +**[1]:** On docker, `image.id` corresponds to the `Image` field from the Docker container inspect [API](https://docs.docker.com/engine/api/v1.43/#tag/Container/operation/ContainerInspect) endpoint. + +**[2]:** If using embedded credentials or sensitive data, it is recommended to remove them to prevent potential leakage. From 4649220f2cc251394bf0357bd97d185d0e5a5a26 Mon Sep 17 00:00:00 2001 From: marcsanmi Date: Fri, 16 Jun 2023 10:29:31 +0200 Subject: [PATCH 4/9] Apply suggestion --- semantic_conventions/resource/container.yaml | 2 +- specification/resource/semantic_conventions/container.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/semantic_conventions/resource/container.yaml b/semantic_conventions/resource/container.yaml index ecfe83cc78..fe07abdb95 100644 --- a/semantic_conventions/resource/container.yaml +++ b/semantic_conventions/resource/container.yaml @@ -37,7 +37,7 @@ groups: brief: > Runtime specific image identifier. Usually a hash algorithm followed by a UUID. note: - On docker, `image.id` corresponds to the `Image` field from the Docker container inspect [API](https://docs.docker.com/engine/api/v1.43/#tag/Container/operation/ContainerInspect) endpoint. + On docker, `container.image.id` corresponds to the `Image` field from the Docker container inspect [API](https://docs.docker.com/engine/api/v1.43/#tag/Container/operation/ContainerInspect) endpoint. examples: ['sha256:19c92d0a00d1b66d897bceaa7319bee0dd38a10a851c60bcec9474aa3f01e50f'] - id: command type: string diff --git a/specification/resource/semantic_conventions/container.md b/specification/resource/semantic_conventions/container.md index f51576c57c..eaaaa8555f 100644 --- a/specification/resource/semantic_conventions/container.md +++ b/specification/resource/semantic_conventions/container.md @@ -19,7 +19,7 @@ | `container.command_line` | string | The full command run by the container as a single string representing the full command. | `otelcontribcol --config config.yaml` | Conditionally Required: [2] | | `container.command_args` | string[] | All the command arguments (including the command/executable itself) run by the container. | `[otelcontribcol, --config, config.yaml]` | Conditionally Required: [2] | -**[1]:** On docker, `image.id` corresponds to the `Image` field from the Docker container inspect [API](https://docs.docker.com/engine/api/v1.43/#tag/Container/operation/ContainerInspect) endpoint. +**[1]:** On docker, `container.image.id` corresponds to the `Image` field from the Docker container inspect [API](https://docs.docker.com/engine/api/v1.43/#tag/Container/operation/ContainerInspect) endpoint. **[2]:** If using embedded credentials or sensitive data, it is recommended to remove them to prevent potential leakage. From 4ce7c8b6c23520e9818d224b165e4c4fdd3158b0 Mon Sep 17 00:00:00 2001 From: marcsanmi Date: Mon, 19 Jun 2023 15:41:54 +0200 Subject: [PATCH 5/9] Address suggestions --- semantic_conventions/resource/container.yaml | 11 +++++++++-- .../resource/semantic_conventions/container.md | 8 ++++++-- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/semantic_conventions/resource/container.yaml b/semantic_conventions/resource/container.yaml index fe07abdb95..91536d167f 100644 --- a/semantic_conventions/resource/container.yaml +++ b/semantic_conventions/resource/container.yaml @@ -36,8 +36,15 @@ groups: type: string brief: > Runtime specific image identifier. Usually a hash algorithm followed by a UUID. - note: - On docker, `container.image.id` corresponds to the `Image` field from the Docker container inspect [API](https://docs.docker.com/engine/api/v1.43/#tag/Container/operation/ContainerInspect) endpoint. + note: > + Docker defines a sha256 of the image id; `container.image.id` corresponds to the `Image` field from the Docker + container inspect [API](https://docs.docker.com/engine/api/v1.43/#tag/Container/operation/ContainerInspect) + endpoint. + + K8s defines a link to the container registry repository with digest `"imageID": "registry.azurecr.io + /namespace/service/dockerfile@sha256:bdeabd40c3a8a492eaf9e8e44d0ebbb84bac7ee25ac0cf8a7159d25f62555625"`. + + OCI defines a digest of manifest. examples: ['sha256:19c92d0a00d1b66d897bceaa7319bee0dd38a10a851c60bcec9474aa3f01e50f'] - id: command type: string diff --git a/specification/resource/semantic_conventions/container.md b/specification/resource/semantic_conventions/container.md index eaaaa8555f..b67e2c92e0 100644 --- a/specification/resource/semantic_conventions/container.md +++ b/specification/resource/semantic_conventions/container.md @@ -1,6 +1,6 @@ # Container -**Status**: [Experimental](../../document-status.md) +**Status**: [Experimental][DocumentStatus] **type:** `container` @@ -19,7 +19,11 @@ | `container.command_line` | string | The full command run by the container as a single string representing the full command. | `otelcontribcol --config config.yaml` | Conditionally Required: [2] | | `container.command_args` | string[] | All the command arguments (including the command/executable itself) run by the container. | `[otelcontribcol, --config, config.yaml]` | Conditionally Required: [2] | -**[1]:** On docker, `container.image.id` corresponds to the `Image` field from the Docker container inspect [API](https://docs.docker.com/engine/api/v1.43/#tag/Container/operation/ContainerInspect) endpoint. +**[1]:** Docker defines a sha256 of the image id; `container.image.id` corresponds to the `Image` field from the Docker container inspect [API](https://docs.docker.com/engine/api/v1.43/#tag/Container/operation/ContainerInspect) endpoint. +K8s defines a link to the container registry repository with digest `"imageID": "registry.azurecr.io /namespace/service/dockerfile@sha256:bdeabd40c3a8a492eaf9e8e44d0ebbb84bac7ee25ac0cf8a7159d25f62555625"`. +OCI defines a digest of manifest. **[2]:** If using embedded credentials or sensitive data, it is recommended to remove them to prevent potential leakage. + +[DocumentStatus]: https://github.com/open-telemetry/opentelemetry-specification/blob/v1.21.0/specification/document-status.md From 71670b0a5d6645104a1093085243a8ff1c49626e Mon Sep 17 00:00:00 2001 From: marcsanmi Date: Tue, 20 Jun 2023 15:33:59 +0200 Subject: [PATCH 6/9] Update CHANGELOG.md --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2dd794b70b..3c3377133c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -96,6 +96,8 @@ Note: This is the first release of Semantic Conventions separate from the Specif ([#106](https://github.com/open-telemetry/semantic-conventions/pull/106)) - Mark initial set of HTTP semantic conventions as frozen ([#105](https://github.com/open-telemetry/semantic-conventions/pull/105)) +- Add container `image.id`, `command`, `command_line` and `command_args` resource attributes. + ([#39](https://github.com/open-telemetry/semantic-conventions/pull/39)) ## v1.20.0 (2023-04-07) From 0a56cde31dbd6cfc25fba9f403b49df1fbcb2230 Mon Sep 17 00:00:00 2001 From: marcsanmi Date: Fri, 23 Jun 2023 15:12:05 +0200 Subject: [PATCH 7/9] update command attributes to be opt-in --- semantic_conventions/resource/container.yaml | 15 +++++++-------- .../resource/semantic_conventions/container.md | 6 +++--- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/semantic_conventions/resource/container.yaml b/semantic_conventions/resource/container.yaml index 91536d167f..f3f52c7cfa 100644 --- a/semantic_conventions/resource/container.yaml +++ b/semantic_conventions/resource/container.yaml @@ -48,22 +48,21 @@ groups: examples: ['sha256:19c92d0a00d1b66d897bceaa7319bee0dd38a10a851c60bcec9474aa3f01e50f'] - id: command type: string - requirement_level: - conditionally_required: If using embedded credentials or sensitive data, it is recommended to remove them to prevent potential leakage. + requirement_level: opt_in + note: > + If using embedded credentials or sensitive data, it is recommended to remove them to prevent potential leakage. brief: > The command used to run the container (i.e. the command name). examples: [ 'otelcontribcol' ] - id: command_line type: string - requirement_level: - conditionally_required: [2] + requirement_level: opt_in brief: > - The full command run by the container as a single string representing the full command. + The full command run by the container as a single string representing the full command. [2] examples: [ 'otelcontribcol --config config.yaml' ] - id: command_args type: string[] - requirement_level: - conditionally_required: [2] + requirement_level: opt_in brief: > - All the command arguments (including the command/executable itself) run by the container. + All the command arguments (including the command/executable itself) run by the container. [2] examples: [ 'otelcontribcol, --config, config.yaml' ] diff --git a/specification/resource/semantic_conventions/container.md b/specification/resource/semantic_conventions/container.md index b67e2c92e0..d7889e5f6b 100644 --- a/specification/resource/semantic_conventions/container.md +++ b/specification/resource/semantic_conventions/container.md @@ -15,9 +15,9 @@ | `container.image.name` | string | Name of the image the container was built on. | `gcr.io/opentelemetry/operator` | Recommended | | `container.image.tag` | string | Container image tag. | `0.1` | Recommended | | `container.image.id` | string | Runtime specific image identifier. Usually a hash algorithm followed by a UUID. [1] | `sha256:19c92d0a00d1b66d897bceaa7319bee0dd38a10a851c60bcec9474aa3f01e50f` | Recommended | -| `container.command` | string | The command used to run the container (i.e. the command name). | `otelcontribcol` | Conditionally Required: [2] | -| `container.command_line` | string | The full command run by the container as a single string representing the full command. | `otelcontribcol --config config.yaml` | Conditionally Required: [2] | -| `container.command_args` | string[] | All the command arguments (including the command/executable itself) run by the container. | `[otelcontribcol, --config, config.yaml]` | Conditionally Required: [2] | +| `container.command` | string | The command used to run the container (i.e. the command name). [2] | `otelcontribcol` | Opt-In | +| `container.command_line` | string | The full command run by the container as a single string representing the full command. [2] | `otelcontribcol --config config.yaml` | Opt-In | +| `container.command_args` | string[] | All the command arguments (including the command/executable itself) run by the container. [2] | `[otelcontribcol, --config, config.yaml]` | Opt-In | **[1]:** Docker defines a sha256 of the image id; `container.image.id` corresponds to the `Image` field from the Docker container inspect [API](https://docs.docker.com/engine/api/v1.43/#tag/Container/operation/ContainerInspect) endpoint. K8s defines a link to the container registry repository with digest `"imageID": "registry.azurecr.io /namespace/service/dockerfile@sha256:bdeabd40c3a8a492eaf9e8e44d0ebbb84bac7ee25ac0cf8a7159d25f62555625"`. From ea1626134f5534fd09dcb1b7974a0091918bec29 Mon Sep 17 00:00:00 2001 From: marcsanmi Date: Mon, 26 Jun 2023 09:05:29 +0200 Subject: [PATCH 8/9] Update CHANGELOG.md and container.md --- CHANGELOG.md | 2 ++ specification/resource/semantic_conventions/container.md | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3c3377133c..f3952259df 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -98,6 +98,8 @@ Note: This is the first release of Semantic Conventions separate from the Specif ([#105](https://github.com/open-telemetry/semantic-conventions/pull/105)) - Add container `image.id`, `command`, `command_line` and `command_args` resource attributes. ([#39](https://github.com/open-telemetry/semantic-conventions/pull/39)) +- Add container `image.id`, `command`, `command_line` and `command_args` resource attributes. + ([#39](https://github.com/open-telemetry/semantic-conventions/pull/39)) ## v1.20.0 (2023-04-07) diff --git a/specification/resource/semantic_conventions/container.md b/specification/resource/semantic_conventions/container.md index d7889e5f6b..a9496cd89c 100644 --- a/specification/resource/semantic_conventions/container.md +++ b/specification/resource/semantic_conventions/container.md @@ -19,11 +19,11 @@ | `container.command_line` | string | The full command run by the container as a single string representing the full command. [2] | `otelcontribcol --config config.yaml` | Opt-In | | `container.command_args` | string[] | All the command arguments (including the command/executable itself) run by the container. [2] | `[otelcontribcol, --config, config.yaml]` | Opt-In | -**[1]:** Docker defines a sha256 of the image id; `container.image.id` corresponds to the `Image` field from the Docker container inspect [API](https://docs.docker.com/engine/api/v1.43/#tag/Container/operation/ContainerInspect) endpoint. +**[1]:** Docker defines a sha256 of the image id; `container.image.id` corresponds to the `Image` field from the Docker container inspect [API](https://docs.docker.com/engine/api/v1.43/#tag/Container/operation/ContainerInspect) endpoint. K8s defines a link to the container registry repository with digest `"imageID": "registry.azurecr.io /namespace/service/dockerfile@sha256:bdeabd40c3a8a492eaf9e8e44d0ebbb84bac7ee25ac0cf8a7159d25f62555625"`. OCI defines a digest of manifest. **[2]:** If using embedded credentials or sensitive data, it is recommended to remove them to prevent potential leakage. -[DocumentStatus]: https://github.com/open-telemetry/opentelemetry-specification/blob/v1.21.0/specification/document-status.md +[DocumentStatus]: https://github.com/open-telemetry/opentelemetry-specification/blob/v1.21.0/specification/document-status.md \ No newline at end of file From 97e7bcd782de89e2ca59de6b1414d67cf50fb137 Mon Sep 17 00:00:00 2001 From: marcsanmi Date: Tue, 27 Jun 2023 16:45:15 +0200 Subject: [PATCH 9/9] Add missing newline --- specification/resource/semantic_conventions/container.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/specification/resource/semantic_conventions/container.md b/specification/resource/semantic_conventions/container.md index a9496cd89c..a4e169eef5 100644 --- a/specification/resource/semantic_conventions/container.md +++ b/specification/resource/semantic_conventions/container.md @@ -26,4 +26,4 @@ OCI defines a digest of manifest. **[2]:** If using embedded credentials or sensitive data, it is recommended to remove them to prevent potential leakage. -[DocumentStatus]: https://github.com/open-telemetry/opentelemetry-specification/blob/v1.21.0/specification/document-status.md \ No newline at end of file +[DocumentStatus]: https://github.com/open-telemetry/opentelemetry-specification/blob/v1.21.0/specification/document-status.md