From c2f983d19973dda873b712f55a78e4d4e70f5f17 Mon Sep 17 00:00:00 2001 From: Liudmila Molkova Date: Tue, 3 Dec 2024 08:38:37 -0800 Subject: [PATCH 1/3] Update approvers (#1643) Co-authored-by: Joao Grassi <5938087+joaopgrassi@users.noreply.github.com> Co-authored-by: Armin Ruech <7052238+arminru@users.noreply.github.com> --- README.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 8fbcb03ac5..ddba49fe5f 100644 --- a/README.md +++ b/README.md @@ -19,10 +19,7 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) Approvers ([@open-telemetry/specs-semconv-approvers](https://github.com/orgs/open-telemetry/teams/specs-semconv-approvers)): - [Alexandra Konrad](https://github.com/trisch-me), Elastic -- [Christian Neumüller](https://github.com/Oberon00), Dynatrace - [Daniel Dyla](https://github.com/dyladan), Dynatrace -- [James Moessis](https://github.com/jamesmoessis), Atlassian -- [Sean Marciniak](https://github.com/MovieStoreGuy), Atlassian - [Ted Young](https://github.com/tedsuo), Lightstep _Find more about the approver role in [community repository](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#approver)._ @@ -37,6 +34,12 @@ Maintainers ([@open-telemetry/specs-semconv-maintainers](https://github.com/orgs - [Liudmila Molkova](https://github.com/lmolkova), Microsoft - [Trask Stalnaker](https://github.com/trask), Microsoft +Emeritus Approvers: + +- [Christian Neumüller](https://github.com/Oberon00) +- [James Moessis](https://github.com/jamesmoessis) +- [Sean Marciniak](https://github.com/MovieStoreGuy) + Emeritus Maintainers: - [Reiley Yang](https://github.com/reyang) From c8024bf2429cc0f40097e44556b3f2e5668f7cb8 Mon Sep 17 00:00:00 2001 From: Adriel Perkins Date: Tue, 3 Dec 2024 13:46:56 -0500 Subject: [PATCH 2/3] [vcs] Adds `vcs.repository.name` attribute and updates `vcs.repository.url.full` to be represented consistently. (#1608) Co-authored-by: Liudmila Molkova Co-authored-by: Trask Stalnaker --- .chloggen/vcs-1254.yaml | 25 +++++++++++ docs/attributes-registry/vcs.md | 10 ++++- docs/cicd/cicd-metrics.md | 80 +++++++++++++++++++++++++++++---- model/vcs/metrics.yaml | 16 +++++++ model/vcs/registry.yaml | 25 +++++++++-- 5 files changed, 144 insertions(+), 12 deletions(-) create mode 100755 .chloggen/vcs-1254.yaml diff --git a/.chloggen/vcs-1254.yaml b/.chloggen/vcs-1254.yaml new file mode 100755 index 0000000000..bbb88ac423 --- /dev/null +++ b/.chloggen/vcs-1254.yaml @@ -0,0 +1,25 @@ +# Use this changelog template to create an entry for release notes. +# +# If your change doesn't affect end users you should instead start +# your pull request title with [chore] or use the "Skip Changelog" label. + +# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' +change_type: enhancement + +# The name of the area of concern in the attributes-registry, (e.g. http, cloud, db) +component: vcs + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: | + Adds `vcs.repository.name` attribute to registry and update + `vcs.repository.url.full` description for consistent representation. Updates + the VCS metrics to include `vcs.repository.name` as a recommended attribute. + +# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists. +# The values here must be integers. +issues: [1254, 1453] + +# (Optional) One or more lines of additional information to render under the primary note. +# These lines will be padded with 2 spaces and then inserted directly into the document. +# Use pipe (|) for multiline entries. +subtext: diff --git a/docs/attributes-registry/vcs.md b/docs/attributes-registry/vcs.md index b418b16e83..b17426a93c 100644 --- a/docs/attributes-registry/vcs.md +++ b/docs/attributes-registry/vcs.md @@ -26,7 +26,8 @@ This group defines the attributes for [Version Control Systems (VCS)](https://wi | `vcs.ref.head.revision` | string | The revision, literally [revised version](https://www.merriam-webster.com/dictionary/revision), The revision most often refers to a commit object in Git, or a revision number in SVN. [2] | `9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc`; `main`; `123`; `HEAD` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `vcs.ref.head.type` | string | The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository. | `branch`; `tag` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `vcs.ref.type` | string | The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository. | `branch`; `tag` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `vcs.repository.url.full` | string | The [URL](https://wikipedia.org/wiki/URL) of the repository providing the complete address in order to locate and identify the repository. | `https://github.com/opentelemetry/open-telemetry-collector-contrib`; `https://gitlab.com/my-org/my-project/my-projects-project/repo` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `vcs.repository.name` | string | The human readable name of the repository. It SHOULD NOT include any additional identifier like Group/SubGroup in GitLab or organization in GitHub. [3] | `semantic-conventions`; `my-cool-repo` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `vcs.repository.url.full` | string | The [canonical URL](https://support.google.com/webmasters/answer/10347851?hl=en#:~:text=A%20canonical%20URL%20is%20the,Google%20chooses%20one%20as%20canonical.) of the repository providing the complete HTTP(S) address in order to locate and identify the repository through a browser. [4] | `https://github.com/opentelemetry/open-telemetry-collector-contrib`; `https://gitlab.com/my-org/my-project/my-projects-project/repo` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `vcs.revision_delta.direction` | string | The type of revision comparison. | `ahead`; `behind` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | **[1] `vcs.ref.base.revision`:** The revision can be a full [hash value (see glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf), @@ -49,6 +50,13 @@ it is identical to the `ref.head.name`, it SHOULD still be included. It is up to the implementer to decide which value to set as the revision based on the VCS system and situational context. +**[3] `vcs.repository.name`:** Due to it only being the name, it can clash with forks of the same +repository if collecting telemetry across multiple orgs or groups in +the same backends. + +**[4] `vcs.repository.url.full`:** In Git Version Control Systems, the canonical URL SHOULD NOT include +the `.git` extension. + --- `vcs.change.state` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. diff --git a/docs/cicd/cicd-metrics.md b/docs/cicd/cicd-metrics.md index 621ba0bbc8..687eb76e43 100644 --- a/docs/cicd/cicd-metrics.md +++ b/docs/cicd/cicd-metrics.md @@ -48,7 +48,15 @@ This metric is [recommended][MetricRecommended]. | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| | [`vcs.change.state`](/docs/attributes-registry/vcs.md) | string | The state of the change (pull request/merge request/changelist). | `open`; `closed`; `merged` | `Required` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| [`vcs.repository.url.full`](/docs/attributes-registry/vcs.md) | string | The [URL](https://wikipedia.org/wiki/URL) of the repository providing the complete address in order to locate and identify the repository. | `https://github.com/opentelemetry/open-telemetry-collector-contrib`; `https://gitlab.com/my-org/my-project/my-projects-project/repo` | `Required` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`vcs.repository.url.full`](/docs/attributes-registry/vcs.md) | string | The [canonical URL](https://support.google.com/webmasters/answer/10347851?hl=en#:~:text=A%20canonical%20URL%20is%20the,Google%20chooses%20one%20as%20canonical.) of the repository providing the complete HTTP(S) address in order to locate and identify the repository through a browser. [1] | `https://github.com/opentelemetry/open-telemetry-collector-contrib`; `https://gitlab.com/my-org/my-project/my-projects-project/repo` | `Required` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`vcs.repository.name`](/docs/attributes-registry/vcs.md) | string | The human readable name of the repository. It SHOULD NOT include any additional identifier like Group/SubGroup in GitLab or organization in GitHub. [2] | `semantic-conventions`; `my-cool-repo` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | + +**[1] `vcs.repository.url.full`:** In Git Version Control Systems, the canonical URL SHOULD NOT include +the `.git` extension. + +**[2] `vcs.repository.name`:** Due to it only being the name, it can clash with forks of the same +repository if collecting telemetry across multiple orgs or groups in +the same backends. --- @@ -85,7 +93,15 @@ This metric is [recommended][MetricRecommended]. |---|---|---|---|---|---| | [`vcs.change.state`](/docs/attributes-registry/vcs.md) | string | The state of the change (pull request/merge request/changelist). | `open`; `closed`; `merged` | `Required` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | [`vcs.ref.head.name`](/docs/attributes-registry/vcs.md) | string | The name of the [reference](https://git-scm.com/docs/gitglossary#def_ref) such as **branch** or **tag** in the repository. | `my-feature-branch`; `tag-1-test` | `Required` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| [`vcs.repository.url.full`](/docs/attributes-registry/vcs.md) | string | The [URL](https://wikipedia.org/wiki/URL) of the repository providing the complete address in order to locate and identify the repository. | `https://github.com/opentelemetry/open-telemetry-collector-contrib`; `https://gitlab.com/my-org/my-project/my-projects-project/repo` | `Required` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`vcs.repository.url.full`](/docs/attributes-registry/vcs.md) | string | The [canonical URL](https://support.google.com/webmasters/answer/10347851?hl=en#:~:text=A%20canonical%20URL%20is%20the,Google%20chooses%20one%20as%20canonical.) of the repository providing the complete HTTP(S) address in order to locate and identify the repository through a browser. [1] | `https://github.com/opentelemetry/open-telemetry-collector-contrib`; `https://gitlab.com/my-org/my-project/my-projects-project/repo` | `Required` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`vcs.repository.name`](/docs/attributes-registry/vcs.md) | string | The human readable name of the repository. It SHOULD NOT include any additional identifier like Group/SubGroup in GitLab or organization in GitHub. [2] | `semantic-conventions`; `my-cool-repo` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | + +**[1] `vcs.repository.url.full`:** In Git Version Control Systems, the canonical URL SHOULD NOT include +the `.git` extension. + +**[2] `vcs.repository.name`:** Due to it only being the name, it can clash with forks of the same +repository if collecting telemetry across multiple orgs or groups in +the same backends. --- @@ -121,7 +137,15 @@ This metric is [recommended][MetricRecommended]. | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| | [`vcs.ref.head.name`](/docs/attributes-registry/vcs.md) | string | The name of the [reference](https://git-scm.com/docs/gitglossary#def_ref) such as **branch** or **tag** in the repository. | `my-feature-branch`; `tag-1-test` | `Required` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| [`vcs.repository.url.full`](/docs/attributes-registry/vcs.md) | string | The [URL](https://wikipedia.org/wiki/URL) of the repository providing the complete address in order to locate and identify the repository. | `https://github.com/opentelemetry/open-telemetry-collector-contrib`; `https://gitlab.com/my-org/my-project/my-projects-project/repo` | `Required` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`vcs.repository.url.full`](/docs/attributes-registry/vcs.md) | string | The [canonical URL](https://support.google.com/webmasters/answer/10347851?hl=en#:~:text=A%20canonical%20URL%20is%20the,Google%20chooses%20one%20as%20canonical.) of the repository providing the complete HTTP(S) address in order to locate and identify the repository through a browser. [1] | `https://github.com/opentelemetry/open-telemetry-collector-contrib`; `https://gitlab.com/my-org/my-project/my-projects-project/repo` | `Required` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`vcs.repository.name`](/docs/attributes-registry/vcs.md) | string | The human readable name of the repository. It SHOULD NOT include any additional identifier like Group/SubGroup in GitLab or organization in GitHub. [2] | `semantic-conventions`; `my-cool-repo` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | + +**[1] `vcs.repository.url.full`:** In Git Version Control Systems, the canonical URL SHOULD NOT include +the `.git` extension. + +**[2] `vcs.repository.name`:** Due to it only being the name, it can clash with forks of the same +repository if collecting telemetry across multiple orgs or groups in +the same backends. @@ -166,7 +190,15 @@ This metric is [recommended][MetricRecommended]. | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| | [`vcs.ref.type`](/docs/attributes-registry/vcs.md) | string | The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository. | `branch`; `tag` | `Required` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| [`vcs.repository.url.full`](/docs/attributes-registry/vcs.md) | string | The [URL](https://wikipedia.org/wiki/URL) of the repository providing the complete address in order to locate and identify the repository. | `https://github.com/opentelemetry/open-telemetry-collector-contrib`; `https://gitlab.com/my-org/my-project/my-projects-project/repo` | `Required` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`vcs.repository.url.full`](/docs/attributes-registry/vcs.md) | string | The [canonical URL](https://support.google.com/webmasters/answer/10347851?hl=en#:~:text=A%20canonical%20URL%20is%20the,Google%20chooses%20one%20as%20canonical.) of the repository providing the complete HTTP(S) address in order to locate and identify the repository through a browser. [1] | `https://github.com/opentelemetry/open-telemetry-collector-contrib`; `https://gitlab.com/my-org/my-project/my-projects-project/repo` | `Required` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`vcs.repository.name`](/docs/attributes-registry/vcs.md) | string | The human readable name of the repository. It SHOULD NOT include any additional identifier like Group/SubGroup in GitLab or organization in GitHub. [2] | `semantic-conventions`; `my-cool-repo` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | + +**[1] `vcs.repository.url.full`:** In Git Version Control Systems, the canonical URL SHOULD NOT include +the `.git` extension. + +**[2] `vcs.repository.name`:** Due to it only being the name, it can clash with forks of the same +repository if collecting telemetry across multiple orgs or groups in +the same backends. --- @@ -208,8 +240,16 @@ If number of lines added/removed should be calculated from the start of time, th | [`vcs.ref.base.type`](/docs/attributes-registry/vcs.md) | string | The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository. | `branch`; `tag` | `Required` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | [`vcs.ref.head.name`](/docs/attributes-registry/vcs.md) | string | The name of the [reference](https://git-scm.com/docs/gitglossary#def_ref) such as **branch** or **tag** in the repository. | `my-feature-branch`; `tag-1-test` | `Required` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | [`vcs.ref.head.type`](/docs/attributes-registry/vcs.md) | string | The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository. | `branch`; `tag` | `Required` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| [`vcs.repository.url.full`](/docs/attributes-registry/vcs.md) | string | The [URL](https://wikipedia.org/wiki/URL) of the repository providing the complete address in order to locate and identify the repository. | `https://github.com/opentelemetry/open-telemetry-collector-contrib`; `https://gitlab.com/my-org/my-project/my-projects-project/repo` | `Required` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`vcs.repository.url.full`](/docs/attributes-registry/vcs.md) | string | The [canonical URL](https://support.google.com/webmasters/answer/10347851?hl=en#:~:text=A%20canonical%20URL%20is%20the,Google%20chooses%20one%20as%20canonical.) of the repository providing the complete HTTP(S) address in order to locate and identify the repository through a browser. [1] | `https://github.com/opentelemetry/open-telemetry-collector-contrib`; `https://gitlab.com/my-org/my-project/my-projects-project/repo` | `Required` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | [`vcs.change.id`](/docs/attributes-registry/vcs.md) | string | The ID of the change (pull request/merge request/changelist) if applicable. This is usually a unique (within repository) identifier generated by the VCS system. | `123` | `Conditionally Required` if a change is associate with the ref. | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`vcs.repository.name`](/docs/attributes-registry/vcs.md) | string | The human readable name of the repository. It SHOULD NOT include any additional identifier like Group/SubGroup in GitLab or organization in GitHub. [2] | `semantic-conventions`; `my-cool-repo` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | + +**[1] `vcs.repository.url.full`:** In Git Version Control Systems, the canonical URL SHOULD NOT include +the `.git` extension. + +**[2] `vcs.repository.name`:** Due to it only being the name, it can clash with forks of the same +repository if collecting telemetry across multiple orgs or groups in +the same backends. --- @@ -267,9 +307,17 @@ instrumentation SHOULD report two measurements: 3 and 2 (both positive numbers) | [`vcs.ref.base.type`](/docs/attributes-registry/vcs.md) | string | The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository. | `branch`; `tag` | `Required` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | [`vcs.ref.head.name`](/docs/attributes-registry/vcs.md) | string | The name of the [reference](https://git-scm.com/docs/gitglossary#def_ref) such as **branch** or **tag** in the repository. | `my-feature-branch`; `tag-1-test` | `Required` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | [`vcs.ref.head.type`](/docs/attributes-registry/vcs.md) | string | The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository. | `branch`; `tag` | `Required` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| [`vcs.repository.url.full`](/docs/attributes-registry/vcs.md) | string | The [URL](https://wikipedia.org/wiki/URL) of the repository providing the complete address in order to locate and identify the repository. | `https://github.com/opentelemetry/open-telemetry-collector-contrib`; `https://gitlab.com/my-org/my-project/my-projects-project/repo` | `Required` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`vcs.repository.url.full`](/docs/attributes-registry/vcs.md) | string | The [canonical URL](https://support.google.com/webmasters/answer/10347851?hl=en#:~:text=A%20canonical%20URL%20is%20the,Google%20chooses%20one%20as%20canonical.) of the repository providing the complete HTTP(S) address in order to locate and identify the repository through a browser. [1] | `https://github.com/opentelemetry/open-telemetry-collector-contrib`; `https://gitlab.com/my-org/my-project/my-projects-project/repo` | `Required` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | [`vcs.revision_delta.direction`](/docs/attributes-registry/vcs.md) | string | The type of revision comparison. | `ahead`; `behind` | `Required` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | [`vcs.change.id`](/docs/attributes-registry/vcs.md) | string | The ID of the change (pull request/merge request/changelist) if applicable. This is usually a unique (within repository) identifier generated by the VCS system. | `123` | `Conditionally Required` if a change is associate with the ref. | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`vcs.repository.name`](/docs/attributes-registry/vcs.md) | string | The human readable name of the repository. It SHOULD NOT include any additional identifier like Group/SubGroup in GitLab or organization in GitHub. [2] | `semantic-conventions`; `my-cool-repo` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | + +**[1] `vcs.repository.url.full`:** In Git Version Control Systems, the canonical URL SHOULD NOT include +the `.git` extension. + +**[2] `vcs.repository.name`:** Due to it only being the name, it can clash with forks of the same +repository if collecting telemetry across multiple orgs or groups in +the same backends. --- @@ -322,7 +370,15 @@ This metric is [recommended][MetricRecommended]. |---|---|---|---|---|---| | [`vcs.ref.head.name`](/docs/attributes-registry/vcs.md) | string | The name of the [reference](https://git-scm.com/docs/gitglossary#def_ref) such as **branch** or **tag** in the repository. | `my-feature-branch`; `tag-1-test` | `Required` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | [`vcs.ref.head.type`](/docs/attributes-registry/vcs.md) | string | The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository. | `branch`; `tag` | `Required` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| [`vcs.repository.url.full`](/docs/attributes-registry/vcs.md) | string | The [URL](https://wikipedia.org/wiki/URL) of the repository providing the complete address in order to locate and identify the repository. | `https://github.com/opentelemetry/open-telemetry-collector-contrib`; `https://gitlab.com/my-org/my-project/my-projects-project/repo` | `Required` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`vcs.repository.url.full`](/docs/attributes-registry/vcs.md) | string | The [canonical URL](https://support.google.com/webmasters/answer/10347851?hl=en#:~:text=A%20canonical%20URL%20is%20the,Google%20chooses%20one%20as%20canonical.) of the repository providing the complete HTTP(S) address in order to locate and identify the repository through a browser. [1] | `https://github.com/opentelemetry/open-telemetry-collector-contrib`; `https://gitlab.com/my-org/my-project/my-projects-project/repo` | `Required` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`vcs.repository.name`](/docs/attributes-registry/vcs.md) | string | The human readable name of the repository. It SHOULD NOT include any additional identifier like Group/SubGroup in GitLab or organization in GitHub. [2] | `semantic-conventions`; `my-cool-repo` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | + +**[1] `vcs.repository.url.full`:** In Git Version Control Systems, the canonical URL SHOULD NOT include +the `.git` extension. + +**[2] `vcs.repository.name`:** Due to it only being the name, it can clash with forks of the same +repository if collecting telemetry across multiple orgs or groups in +the same backends. --- @@ -355,7 +411,15 @@ This metric is [opt-in][MetricOptIn]. | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| -| [`vcs.repository.url.full`](/docs/attributes-registry/vcs.md) | string | The [URL](https://wikipedia.org/wiki/URL) of the repository providing the complete address in order to locate and identify the repository. | `https://github.com/opentelemetry/open-telemetry-collector-contrib`; `https://gitlab.com/my-org/my-project/my-projects-project/repo` | `Required` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`vcs.repository.url.full`](/docs/attributes-registry/vcs.md) | string | The [canonical URL](https://support.google.com/webmasters/answer/10347851?hl=en#:~:text=A%20canonical%20URL%20is%20the,Google%20chooses%20one%20as%20canonical.) of the repository providing the complete HTTP(S) address in order to locate and identify the repository through a browser. [1] | `https://github.com/opentelemetry/open-telemetry-collector-contrib`; `https://gitlab.com/my-org/my-project/my-projects-project/repo` | `Required` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`vcs.repository.name`](/docs/attributes-registry/vcs.md) | string | The human readable name of the repository. It SHOULD NOT include any additional identifier like Group/SubGroup in GitLab or organization in GitHub. [2] | `semantic-conventions`; `my-cool-repo` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | + +**[1] `vcs.repository.url.full`:** In Git Version Control Systems, the canonical URL SHOULD NOT include +the `.git` extension. + +**[2] `vcs.repository.name`:** Due to it only being the name, it can clash with forks of the same +repository if collecting telemetry across multiple orgs or groups in +the same backends. diff --git a/model/vcs/metrics.yaml b/model/vcs/metrics.yaml index e2e72f115f..9bb3118942 100644 --- a/model/vcs/metrics.yaml +++ b/model/vcs/metrics.yaml @@ -11,6 +11,8 @@ groups: requirement_level: required - ref: vcs.repository.url.full requirement_level: required + - ref: vcs.repository.name + requirement_level: recommended - id: metric.vcs.change.duration type: metric metric_name: vcs.change.duration @@ -21,6 +23,8 @@ groups: attributes: - ref: vcs.repository.url.full requirement_level: required + - ref: vcs.repository.name + requirement_level: recommended - ref: vcs.ref.head.name requirement_level: required - ref: vcs.change.state @@ -35,6 +39,8 @@ groups: attributes: - ref: vcs.repository.url.full requirement_level: required + - ref: vcs.repository.name + requirement_level: recommended - ref: vcs.ref.head.name requirement_level: required - id: metric.vcs.repository.count @@ -55,6 +61,8 @@ groups: attributes: - ref: vcs.repository.url.full requirement_level: required + - ref: vcs.repository.name + requirement_level: recommended - ref: vcs.ref.type requirement_level: required - id: metric.vcs.ref.lines_delta @@ -74,6 +82,8 @@ groups: conditionally_required: if a change is associate with the ref. - ref: vcs.repository.url.full requirement_level: required + - ref: vcs.repository.name + requirement_level: recommended - ref: vcs.ref.head.name requirement_level: required - ref: vcs.ref.head.type @@ -100,6 +110,8 @@ groups: conditionally_required: if a change is associate with the ref. - ref: vcs.repository.url.full requirement_level: required + - ref: vcs.repository.name + requirement_level: recommended - ref: vcs.ref.head.name requirement_level: required - ref: vcs.ref.head.type @@ -120,6 +132,8 @@ groups: attributes: - ref: vcs.repository.url.full requirement_level: required + - ref: vcs.repository.name + requirement_level: recommended - ref: vcs.ref.head.name requirement_level: required - ref: vcs.ref.head.type @@ -134,3 +148,5 @@ groups: attributes: - ref: vcs.repository.url.full requirement_level: required + - ref: vcs.repository.name + requirement_level: recommended diff --git a/model/vcs/registry.yaml b/model/vcs/registry.yaml index afe703ac53..8b61583e0b 100644 --- a/model/vcs/registry.yaml +++ b/model/vcs/registry.yaml @@ -9,14 +9,33 @@ groups: type: string stability: experimental brief: > - The [URL](https://wikipedia.org/wiki/URL) of the repository - providing the complete address in order to locate and identify the - repository. + The [canonical URL](https://support.google.com/webmasters/answer/10347851?hl=en#:~:text=A%20canonical%20URL%20is%20the,Google%20chooses%20one%20as%20canonical.) + of the repository providing the complete HTTP(S) address in order to + locate and identify the repository through a browser. + note: | + In Git Version Control Systems, the canonical URL SHOULD NOT include + the `.git` extension. examples: [ "https://github.com/opentelemetry/open-telemetry-collector-contrib", "https://gitlab.com/my-org/my-project/my-projects-project/repo", ] + - id: vcs.repository.name + type: string + stability: experimental + brief: > + The human readable name of the repository. It SHOULD NOT include any + additional identifier like Group/SubGroup in GitLab or organization + in GitHub. + note: | + Due to it only being the name, it can clash with forks of the same + repository if collecting telemetry across multiple orgs or groups in + the same backends. + examples: + [ + "semantic-conventions", + "my-cool-repo", + ] - id: vcs.ref.base.name type: string stability: experimental From 41053b507998b6dc4effa22f657cea96ab5f8fe8 Mon Sep 17 00:00:00 2001 From: Steve Gordon Date: Tue, 3 Dec 2024 20:39:24 +0000 Subject: [PATCH 3/3] Mark .NET runtime metrics as stable (#1609) Co-authored-by: Liudmila Molkova --- .chloggen/stable-dotnet-runtime-metrics.yaml | 22 +++++ docs/attributes-registry/dotnet.md | 12 +-- docs/runtime/dotnet-metrics.md | 86 ++++++++++---------- model/dotnet/registry.yaml | 12 +-- model/dotnet/runtime-metrics.yaml | 38 ++++----- policies/group_stability.rego | 2 + 6 files changed, 98 insertions(+), 74 deletions(-) create mode 100644 .chloggen/stable-dotnet-runtime-metrics.yaml diff --git a/.chloggen/stable-dotnet-runtime-metrics.yaml b/.chloggen/stable-dotnet-runtime-metrics.yaml new file mode 100644 index 0000000000..ac6b3135ec --- /dev/null +++ b/.chloggen/stable-dotnet-runtime-metrics.yaml @@ -0,0 +1,22 @@ +# Use this changelog template to create an entry for release notes. +# +# If your change doesn't affect end users you should instead start +# your pull request title with [chore] or use the "Skip Changelog" label. + +# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' +change_type: enhancement + +# The name of the area of concern in the attributes-registry, (e.g. http, cloud, db) +component: dotnet + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: Mark .NET runtime metrics as stable + +# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists. +# The values here must be integers. +issues: [1602] + +# (Optional) One or more lines of additional information to render under the primary note. +# These lines will be padded with 2 spaces and then inserted directly into the document. +# Use pipe (|) for multiline entries. +subtext: diff --git a/docs/attributes-registry/dotnet.md b/docs/attributes-registry/dotnet.md index 75acc35161..7f5208774a 100644 --- a/docs/attributes-registry/dotnet.md +++ b/docs/attributes-registry/dotnet.md @@ -12,7 +12,7 @@ This document defines .NET related attributes. | Attribute | Type | Description | Examples | Stability | |---|---|---|---|---| -| `dotnet.gc.heap.generation` | string | Name of the garbage collector managed heap generation. | `gen0`; `gen1`; `gen2` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `dotnet.gc.heap.generation` | string | Name of the garbage collector managed heap generation. | `gen0`; `gen1`; `gen2` | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | --- @@ -20,8 +20,8 @@ This document defines .NET related attributes. | Value | Description | Stability | |---|---|---| -| `gen0` | Generation 0 | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `gen1` | Generation 1 | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `gen2` | Generation 2 | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `loh` | Large Object Heap | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `poh` | Pinned Object Heap | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `gen0` | Generation 0 | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | +| `gen1` | Generation 1 | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | +| `gen2` | Generation 2 | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | +| `loh` | Large Object Heap | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | +| `poh` | Pinned Object Heap | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | diff --git a/docs/runtime/dotnet-metrics.md b/docs/runtime/dotnet-metrics.md index 00b0b40035..42189f33a8 100644 --- a/docs/runtime/dotnet-metrics.md +++ b/docs/runtime/dotnet-metrics.md @@ -4,7 +4,7 @@ linkTitle: .NET # Semantic Conventions for .NET Common Language Runtime (CLR) Metrics -**Status**: [Experimental][DocumentStatus] +**Status**: [Stable][DocumentStatus] This document describes semantic conventions for .NET CLR runtime metrics in OpenTelemetry. @@ -41,7 +41,7 @@ This document describes semantic conventions for .NET CLR runtime metrics in Ope ## .NET CLR Process -**Status**: [Experimental][DocumentStatus] +**Status**: [Stable][DocumentStatus] **Description:** .NET Common Language Runtime (CLR) metrics relating to the process, captured under the namespace `dotnet.process.*`. @@ -60,7 +60,7 @@ This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | -| `dotnet.process.cpu.count` | UpDownCounter | `{cpu}` | The number of processors available to the process. [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `dotnet.process.cpu.count` | UpDownCounter | `{cpu}` | The number of processors available to the process. [1] | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | **[1]:** Meter name: `System.Runtime`; Added in: .NET 9.0. This metric reports the same values as accessing [`Environment.ProcessorCount`](https://learn.microsoft.com/dotnet/api/system.environment.processorcount). @@ -83,7 +83,7 @@ This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | -| `dotnet.process.cpu.time` | Counter | `s` | CPU time used by the process. [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `dotnet.process.cpu.time` | Counter | `s` | CPU time used by the process. [1] | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | **[1]:** Meter name: `System.Runtime`; Added in: .NET 9.0. This metric reports the same values as accessing the corresponding processor time properties on [`System.Diagnostics.Process`](https://learn.microsoft.com/dotnet/api/system.diagnostics.process). @@ -125,7 +125,7 @@ This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | -| `dotnet.process.memory.working_set` | UpDownCounter | `By` | The number of bytes of physical memory mapped to the process context. [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `dotnet.process.memory.working_set` | UpDownCounter | `By` | The number of bytes of physical memory mapped to the process context. [1] | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | **[1]:** Meter name: `System.Runtime`; Added in: .NET 9.0. This metric reports the same values as calling [`Environment.WorkingSet`](https://learn.microsoft.com/dotnet/api/system.environment.workingset). @@ -137,7 +137,7 @@ This metric reports the same values as calling [`Environment.WorkingSet`](https: ## .NET CLR Garbage Collection -**Status**: [Experimental][DocumentStatus] +**Status**: [Stable][DocumentStatus] **Description:** .NET Common Language Runtime (CLR) metrics relating to garbage collection, captured under the namespace `dotnet.gc.*`. @@ -154,14 +154,14 @@ This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | -| `dotnet.gc.collections` | Counter | `{collection}` | The number of garbage collections that have occurred since the process has started. [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `dotnet.gc.collections` | Counter | `{collection}` | The number of garbage collections that have occurred since the process has started. [1] | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | **[1]:** Meter name: `System.Runtime`; Added in: .NET 9.0. This metric uses the [`GC.CollectionCount(int generation)`](https://learn.microsoft.com/dotnet/api/system.gc.collectioncount) API to calculate exclusive collections per generation. | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| -| [`dotnet.gc.heap.generation`](/docs/attributes-registry/dotnet.md) | string | Name of the garbage collector managed heap generation. | `gen0`; `gen1`; `gen2` | `Required` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`dotnet.gc.heap.generation`](/docs/attributes-registry/dotnet.md) | string | Name of the garbage collector managed heap generation. | `gen0`; `gen1`; `gen2` | `Required` | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | --- @@ -169,11 +169,11 @@ This metric uses the [`GC.CollectionCount(int generation)`](https://learn.micros | Value | Description | Stability | |---|---|---| -| `gen0` | Generation 0 | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `gen1` | Generation 1 | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `gen2` | Generation 2 | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `loh` | Large Object Heap | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `poh` | Pinned Object Heap | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `gen0` | Generation 0 | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | +| `gen1` | Generation 1 | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | +| `gen2` | Generation 2 | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | +| `loh` | Large Object Heap | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | +| `poh` | Pinned Object Heap | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | @@ -193,7 +193,7 @@ This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | -| `dotnet.gc.heap.total_allocated` | Counter | `By` | The *approximate* number of bytes allocated on the managed GC heap since the process has started. The returned value does not include any native allocations. [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `dotnet.gc.heap.total_allocated` | Counter | `By` | The *approximate* number of bytes allocated on the managed GC heap since the process has started. The returned value does not include any native allocations. [1] | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | **[1]:** Meter name: `System.Runtime`; Added in: .NET 9.0. This metric reports the same values as calling [`GC.GetTotalAllocatedBytes()`](https://learn.microsoft.com/dotnet/api/system.gc.gettotalallocatedbytes). @@ -216,7 +216,7 @@ This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | -| `dotnet.gc.last_collection.memory.committed_size` | UpDownCounter | `By` | The amount of committed virtual memory in use by the .NET GC, as observed during the latest garbage collection. [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `dotnet.gc.last_collection.memory.committed_size` | UpDownCounter | `By` | The amount of committed virtual memory in use by the .NET GC, as observed during the latest garbage collection. [1] | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | **[1]:** Meter name: `System.Runtime`; Added in: .NET 9.0. This metric reports the same values as calling [`GC.GetGCMemoryInfo().TotalCommittedBytes`](https://learn.microsoft.com/dotnet/api/system.gcmemoryinfo.totalcommittedbytes). Committed virtual memory may be larger than the heap size because it includes both memory for storing existing objects (the heap size) and some extra memory that is ready to handle newly allocated objects in the future. @@ -239,14 +239,14 @@ This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | -| `dotnet.gc.last_collection.heap.size` | UpDownCounter | `By` | The managed GC heap size (including fragmentation), as observed during the latest garbage collection. [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `dotnet.gc.last_collection.heap.size` | UpDownCounter | `By` | The managed GC heap size (including fragmentation), as observed during the latest garbage collection. [1] | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | **[1]:** Meter name: `System.Runtime`; Added in: .NET 9.0. This metric reports the same values as calling [`GC.GetGCMemoryInfo().GenerationInfo.SizeAfterBytes`](https://learn.microsoft.com/dotnet/api/system.gcgenerationinfo.sizeafterbytes). | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| -| [`dotnet.gc.heap.generation`](/docs/attributes-registry/dotnet.md) | string | Name of the garbage collector managed heap generation. | `gen0`; `gen1`; `gen2` | `Required` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`dotnet.gc.heap.generation`](/docs/attributes-registry/dotnet.md) | string | Name of the garbage collector managed heap generation. | `gen0`; `gen1`; `gen2` | `Required` | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | --- @@ -254,11 +254,11 @@ This metric reports the same values as calling [`GC.GetGCMemoryInfo().Generation | Value | Description | Stability | |---|---|---| -| `gen0` | Generation 0 | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `gen1` | Generation 1 | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `gen2` | Generation 2 | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `loh` | Large Object Heap | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `poh` | Pinned Object Heap | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `gen0` | Generation 0 | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | +| `gen1` | Generation 1 | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | +| `gen2` | Generation 2 | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | +| `loh` | Large Object Heap | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | +| `poh` | Pinned Object Heap | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | @@ -278,14 +278,14 @@ This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | -| `dotnet.gc.last_collection.heap.fragmentation.size` | UpDownCounter | `By` | The heap fragmentation, as observed during the latest garbage collection. [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `dotnet.gc.last_collection.heap.fragmentation.size` | UpDownCounter | `By` | The heap fragmentation, as observed during the latest garbage collection. [1] | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | **[1]:** Meter name: `System.Runtime`; Added in: .NET 9.0. This metric reports the same values as calling [`GC.GetGCMemoryInfo().GenerationInfo.FragmentationAfterBytes`](https://learn.microsoft.com/dotnet/api/system.gcgenerationinfo.fragmentationafterbytes). | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| -| [`dotnet.gc.heap.generation`](/docs/attributes-registry/dotnet.md) | string | Name of the garbage collector managed heap generation. | `gen0`; `gen1`; `gen2` | `Required` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`dotnet.gc.heap.generation`](/docs/attributes-registry/dotnet.md) | string | Name of the garbage collector managed heap generation. | `gen0`; `gen1`; `gen2` | `Required` | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | --- @@ -293,11 +293,11 @@ This metric reports the same values as calling [`GC.GetGCMemoryInfo().Generation | Value | Description | Stability | |---|---|---| -| `gen0` | Generation 0 | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `gen1` | Generation 1 | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `gen2` | Generation 2 | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `loh` | Large Object Heap | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `poh` | Pinned Object Heap | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `gen0` | Generation 0 | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | +| `gen1` | Generation 1 | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | +| `gen2` | Generation 2 | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | +| `loh` | Large Object Heap | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | +| `poh` | Pinned Object Heap | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | @@ -317,7 +317,7 @@ This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | -| `dotnet.gc.pause.time` | Counter | `s` | The total amount of time paused in GC since the process has started. [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `dotnet.gc.pause.time` | Counter | `s` | The total amount of time paused in GC since the process has started. [1] | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | **[1]:** Meter name: `System.Runtime`; Added in: .NET 9.0. This metric reports the same values as calling [`GC.GetTotalPauseDuration()`](https://learn.microsoft.com/dotnet/api/system.gc.gettotalpauseduration). @@ -329,7 +329,7 @@ This metric reports the same values as calling [`GC.GetTotalPauseDuration()`](ht ## .NET CLR Just-In-Time (JIT) Compiler -**Status**: [Experimental][DocumentStatus] +**Status**: [Stable][DocumentStatus] **Description:** .NET Common Language Runtime (CLR) metrics relating to the Just-In-Time compiler, captured under the namespace `dotnet.jit.*`. @@ -346,7 +346,7 @@ This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | -| `dotnet.jit.compiled_il.size` | Counter | `By` | Count of bytes of intermediate language that have been compiled since the process has started. [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `dotnet.jit.compiled_il.size` | Counter | `By` | Count of bytes of intermediate language that have been compiled since the process has started. [1] | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | **[1]:** Meter name: `System.Runtime`; Added in: .NET 9.0. This metric reports the same values as calling [`JitInfo.GetCompiledILBytes()`](https://learn.microsoft.com/dotnet/api/system.runtime.jitinfo.getcompiledilbytes). @@ -369,7 +369,7 @@ This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | -| `dotnet.jit.compiled_methods` | Counter | `{method}` | The number of times the JIT compiler (re)compiled methods since the process has started. [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `dotnet.jit.compiled_methods` | Counter | `{method}` | The number of times the JIT compiler (re)compiled methods since the process has started. [1] | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | **[1]:** Meter name: `System.Runtime`; Added in: .NET 9.0. This metric reports the same values as calling [`JitInfo.GetCompiledMethodCount()`](https://learn.microsoft.com/dotnet/api/system.runtime.jitinfo.getcompiledmethodcount). @@ -392,7 +392,7 @@ This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | -| `dotnet.jit.compilation.time` | Counter | `s` | The amount of time the JIT compiler has spent compiling methods since the process has started. [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `dotnet.jit.compilation.time` | Counter | `s` | The amount of time the JIT compiler has spent compiling methods since the process has started. [1] | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | **[1]:** Meter name: `System.Runtime`; Added in: .NET 9.0. This metric reports the same values as calling [`JitInfo.GetCompilationTime()`](https://learn.microsoft.com/dotnet/api/system.runtime.jitinfo.getcompilationtime). @@ -404,7 +404,7 @@ This metric reports the same values as calling [`JitInfo.GetCompilationTime()`]( ## .NET CLR Thread pool -**Status**: [Experimental][DocumentStatus] +**Status**: [Stable][DocumentStatus] **Description:** .NET Common Language Runtime (CLR) metrics relating to the thread pool, captured under the namespace `dotnet.thread_pool.*`. @@ -421,7 +421,7 @@ This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | -| `dotnet.thread_pool.thread.count` | UpDownCounter | `{thread}` | The number of thread pool threads that currently exist. [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `dotnet.thread_pool.thread.count` | UpDownCounter | `{thread}` | The number of thread pool threads that currently exist. [1] | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | **[1]:** Meter name: `System.Runtime`; Added in: .NET 9.0. This metric reports the same values as calling [`ThreadPool.ThreadCount`](https://learn.microsoft.com/dotnet/api/system.threading.threadpool.threadcount). @@ -444,7 +444,7 @@ This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | -| `dotnet.thread_pool.work_item.count` | Counter | `{work_item}` | The number of work items that the thread pool has completed since the process has started. [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `dotnet.thread_pool.work_item.count` | Counter | `{work_item}` | The number of work items that the thread pool has completed since the process has started. [1] | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | **[1]:** Meter name: `System.Runtime`; Added in: .NET 9.0. This metric reports the same values as calling [`ThreadPool.CompletedWorkItemCount`](https://learn.microsoft.com/dotnet/api/system.threading.threadpool.completedworkitemcount). @@ -467,7 +467,7 @@ This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | -| `dotnet.thread_pool.queue.length` | UpDownCounter | `{work_item}` | The number of work items that are currently queued to be processed by the thread pool. [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `dotnet.thread_pool.queue.length` | UpDownCounter | `{work_item}` | The number of work items that are currently queued to be processed by the thread pool. [1] | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | **[1]:** Meter name: `System.Runtime`; Added in: .NET 9.0. This metric reports the same values as calling [`ThreadPool.PendingWorkItemCount`](https://learn.microsoft.com/dotnet/api/system.threading.threadpool.pendingworkitemcount). @@ -479,7 +479,7 @@ This metric reports the same values as calling [`ThreadPool.PendingWorkItemCount ## .NET CLR General -**Status**: [Experimental][DocumentStatus] +**Status**: [Stable][DocumentStatus] **Description:** Other useful .NET Common Language Runtime (CLR) metrics. @@ -496,7 +496,7 @@ This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | -| `dotnet.monitor.lock_contentions` | Counter | `{contention}` | The number of times there was contention when trying to acquire a monitor lock since the process has started. [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `dotnet.monitor.lock_contentions` | Counter | `{contention}` | The number of times there was contention when trying to acquire a monitor lock since the process has started. [1] | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | **[1]:** Meter name: `System.Runtime`; Added in: .NET 9.0. This metric reports the same values as calling [`Monitor.LockContentionCount`](https://learn.microsoft.com/dotnet/api/system.threading.monitor.lockcontentioncount). @@ -519,7 +519,7 @@ This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | -| `dotnet.timer.count` | UpDownCounter | `{timer}` | The number of timer instances that are currently active. [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `dotnet.timer.count` | UpDownCounter | `{timer}` | The number of timer instances that are currently active. [1] | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | **[1]:** Meter name: `System.Runtime`; Added in: .NET 9.0. This metric reports the same values as calling [`Timer.ActiveCount`](https://learn.microsoft.com/dotnet/api/system.threading.timer.activecount). @@ -542,7 +542,7 @@ This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | -| `dotnet.assembly.count` | UpDownCounter | `{assembly}` | The number of .NET assemblies that are currently loaded. [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `dotnet.assembly.count` | UpDownCounter | `{assembly}` | The number of .NET assemblies that are currently loaded. [1] | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | **[1]:** Meter name: `System.Runtime`; Added in: .NET 9.0. This metric reports the same values as calling [`AppDomain.CurrentDomain.GetAssemblies().Length`](https://learn.microsoft.com/dotnet/api/system.appdomain.getassemblies). @@ -565,7 +565,7 @@ This metric is [recommended][MetricRecommended]. | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | -| `dotnet.exceptions` | Counter | `{exception}` | The number of exceptions that have been thrown in managed code. [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `dotnet.exceptions` | Counter | `{exception}` | The number of exceptions that have been thrown in managed code. [1] | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | **[1]:** Meter name: `System.Runtime`; Added in: .NET 9.0. This metric reports the same values as counting calls to [`AppDomain.CurrentDomain.FirstChanceException`](https://learn.microsoft.com/dotnet/api/system.appdomain.firstchanceexception). diff --git a/model/dotnet/registry.yaml b/model/dotnet/registry.yaml index 2024718f4f..0b42cd2739 100644 --- a/model/dotnet/registry.yaml +++ b/model/dotnet/registry.yaml @@ -6,28 +6,28 @@ groups: This document defines .NET related attributes. attributes: - id: dotnet.gc.heap.generation - stability: experimental + stability: stable type: members: - id: gen0 value: 'gen0' brief: "Generation 0" - stability: experimental + stability: stable - id: gen1 value: 'gen1' brief: "Generation 1" - stability: experimental + stability: stable - id: gen2 value: 'gen2' brief: "Generation 2" - stability: experimental + stability: stable - id: loh value: 'loh' brief: "Large Object Heap" - stability: experimental + stability: stable - id: poh value: 'poh' brief: "Pinned Object Heap" - stability: experimental + stability: stable brief: Name of the garbage collector managed heap generation. examples: ["gen0", "gen1", "gen2"] diff --git a/model/dotnet/runtime-metrics.yaml b/model/dotnet/runtime-metrics.yaml index 313ee3b574..eae15956ae 100644 --- a/model/dotnet/runtime-metrics.yaml +++ b/model/dotnet/runtime-metrics.yaml @@ -9,7 +9,7 @@ groups: This metric reports the same values as accessing [`Environment.ProcessorCount`](https://learn.microsoft.com/dotnet/api/system.environment.processorcount). instrument: updowncounter unit: "{cpu}" - stability: experimental + stability: stable - id: metric.dotnet.process.cpu.time type: metric @@ -22,7 +22,7 @@ groups: processor time properties on [`System.Diagnostics.Process`](https://learn.microsoft.com/dotnet/api/system.diagnostics.process). instrument: counter unit: "s" - stability: experimental + stability: stable attributes: - ref: cpu.mode requirement_level: required @@ -37,7 +37,7 @@ groups: This metric reports the same values as calling [`Environment.WorkingSet`](https://learn.microsoft.com/dotnet/api/system.environment.workingset). instrument: updowncounter unit: "By" - stability: experimental + stability: stable - id: metric.dotnet.gc.collections type: metric @@ -50,7 +50,7 @@ groups: API to calculate exclusive collections per generation. instrument: counter unit: "{collection}" - stability: experimental + stability: stable attributes: - ref: dotnet.gc.heap.generation requirement_level: required @@ -67,7 +67,7 @@ groups: This metric reports the same values as calling [`GC.GetTotalAllocatedBytes()`](https://learn.microsoft.com/dotnet/api/system.gc.gettotalallocatedbytes). instrument: counter unit: "By" - stability: experimental + stability: stable - id: metric.dotnet.gc.last_collection.memory.committed_size type: metric @@ -86,7 +86,7 @@ groups: future. instrument: updowncounter unit: "By" - stability: experimental + stability: stable - id: metric.dotnet.gc.last_collection.heap.size type: metric @@ -101,7 +101,7 @@ groups: [`GC.GetGCMemoryInfo().GenerationInfo.SizeAfterBytes`](https://learn.microsoft.com/dotnet/api/system.gcgenerationinfo.sizeafterbytes). instrument: updowncounter unit: "By" - stability: experimental + stability: stable attributes: - ref: dotnet.gc.heap.generation requirement_level: required @@ -118,7 +118,7 @@ groups: [`GC.GetGCMemoryInfo().GenerationInfo.FragmentationAfterBytes`](https://learn.microsoft.com/dotnet/api/system.gcgenerationinfo.fragmentationafterbytes). instrument: updowncounter unit: "By" - stability: experimental + stability: stable attributes: - ref: dotnet.gc.heap.generation requirement_level: required @@ -133,7 +133,7 @@ groups: This metric reports the same values as calling [`GC.GetTotalPauseDuration()`](https://learn.microsoft.com/dotnet/api/system.gc.gettotalpauseduration). instrument: counter unit: "s" - stability: experimental + stability: stable - id: metric.dotnet.jit.compiled_il.size type: metric @@ -146,7 +146,7 @@ groups: [`JitInfo.GetCompiledILBytes()`](https://learn.microsoft.com/dotnet/api/system.runtime.jitinfo.getcompiledilbytes). instrument: counter unit: "By" - stability: experimental + stability: stable - id: metric.dotnet.jit.compiled_methods type: metric @@ -161,7 +161,7 @@ groups: [`JitInfo.GetCompiledMethodCount()`](https://learn.microsoft.com/dotnet/api/system.runtime.jitinfo.getcompiledmethodcount). instrument: counter unit: "{method}" - stability: experimental + stability: stable - id: metric.dotnet.jit.compilation.time type: metric @@ -176,7 +176,7 @@ groups: [`JitInfo.GetCompilationTime()`](https://learn.microsoft.com/dotnet/api/system.runtime.jitinfo.getcompilationtime). instrument: counter unit: "s" - stability: experimental + stability: stable - id: metric.dotnet.monitor.lock_contentions type: metric @@ -191,7 +191,7 @@ groups: [`Monitor.LockContentionCount`](https://learn.microsoft.com/dotnet/api/system.threading.monitor.lockcontentioncount). instrument: counter unit: "{contention}" - stability: experimental + stability: stable - id: metric.dotnet.thread_pool.thread.count type: metric @@ -203,7 +203,7 @@ groups: This metric reports the same values as calling [`ThreadPool.ThreadCount`](https://learn.microsoft.com/dotnet/api/system.threading.threadpool.threadcount). instrument: updowncounter unit: "{thread}" - stability: experimental + stability: stable - id: metric.dotnet.thread_pool.work_item.count type: metric @@ -218,7 +218,7 @@ groups: [`ThreadPool.CompletedWorkItemCount`](https://learn.microsoft.com/dotnet/api/system.threading.threadpool.completedworkitemcount). instrument: counter unit: "{work_item}" - stability: experimental + stability: stable - id: metric.dotnet.thread_pool.queue.length type: metric @@ -233,7 +233,7 @@ groups: [`ThreadPool.PendingWorkItemCount`](https://learn.microsoft.com/dotnet/api/system.threading.threadpool.pendingworkitemcount). instrument: updowncounter unit: "{work_item}" - stability: experimental + stability: stable - id: metric.dotnet.timer.count type: metric @@ -245,7 +245,7 @@ groups: This metric reports the same values as calling [`Timer.ActiveCount`](https://learn.microsoft.com/dotnet/api/system.threading.timer.activecount). instrument: updowncounter unit: "{timer}" - stability: experimental + stability: stable - id: metric.dotnet.assembly.count type: metric @@ -258,7 +258,7 @@ groups: [`AppDomain.CurrentDomain.GetAssemblies().Length`](https://learn.microsoft.com/dotnet/api/system.appdomain.getassemblies). instrument: updowncounter unit: "{assembly}" - stability: experimental + stability: stable - id: metric.dotnet.exceptions type: metric @@ -271,7 +271,7 @@ groups: [`AppDomain.CurrentDomain.FirstChanceException`](https://learn.microsoft.com/dotnet/api/system.appdomain.firstchanceexception). instrument: counter unit: "{exception}" - stability: experimental + stability: stable attributes: - ref: error.type note: "" diff --git a/policies/group_stability.rego b/policies/group_stability.rego index d3cb41718a..17d7f3dd91 100644 --- a/policies/group_stability.rego +++ b/policies/group_stability.rego @@ -12,6 +12,8 @@ deny[group_stability_violation(description, group.id, name)] { "metric.kestrel.connection.duration", "metric.kestrel.tls_handshake.duration", # TODO: https://github.com/open-telemetry/semantic-conventions/issues/1519 "resource.service", + # TODO: https://github.com/open-telemetry/semantic-conventions/issues/1616 + "metric.dotnet.process.cpu.time", } not exceptions[group.id]