32 KiB
Semantic Conventions for CICD Metrics
Status: Experimental
VCS Metrics
The conventions described in this section are specific to Version Control Systems.
Disclaimer: These are initial VCS metrics and attributes but more may be added in the future.
Metric: vcs.change.count
This metric is recommended.
| Attribute | Type | Description | Examples | Requirement Level | Stability |
|---|---|---|---|---|---|
vcs.change.state |
string | The state of the change (pull request/merge request/changelist). | open; closed; merged |
Required |
|
vcs.repository.url.full |
string | The canonical URL 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 |
|
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. [2] | semantic-conventions; my-cool-repo |
Recommended |
[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.
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.
Metric: vcs.change.duration
This metric is recommended.
| Name | Instrument Type | Unit (UCUM) | Description | Stability |
|---|---|---|---|---|
vcs.change.duration |
Gauge | s |
The time duration a change (pull request/merge request/changelist) has been in a given state. |
| Attribute | Type | Description | Examples | Requirement Level | Stability |
|---|---|---|---|---|---|
vcs.change.state |
string | The state of the change (pull request/merge request/changelist). | open; closed; merged |
Required |
|
vcs.ref.head.name |
string | The name of the reference such as branch or tag in the repository. | my-feature-branch; tag-1-test |
Required |
|
vcs.repository.url.full |
string | The canonical URL 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 |
|
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. [2] | semantic-conventions; my-cool-repo |
Recommended |
[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.
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.
Metric: vcs.change.time_to_approval
This metric is recommended.
| Attribute | Type | Description | Examples | Requirement Level | Stability |
|---|---|---|---|---|---|
vcs.ref.head.name |
string | The name of the reference such as branch or tag in the repository. | my-feature-branch; tag-1-test |
Required |
|
vcs.repository.url.full |
string | The canonical URL 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 |
|
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. [2] | semantic-conventions; my-cool-repo |
Recommended |
[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.
Metric: vcs.repository.count
This metric is recommended.
| Name | Instrument Type | Unit (UCUM) | Description | Stability |
|---|---|---|---|---|
vcs.repository.count |
UpDownCounter | {repository} |
The number of repositories in an organization |
Metric: vcs.ref.count
This metric is recommended.
| Name | Instrument Type | Unit (UCUM) | Description | Stability |
|---|---|---|---|---|
vcs.ref.count |
UpDownCounter | {ref} |
The number of refs of type branch or tag in a repository |
| Attribute | Type | Description | Examples | Requirement Level | Stability |
|---|---|---|---|---|---|
vcs.ref.type |
string | The type of the reference in the repository. | branch; tag |
Required |
|
vcs.repository.url.full |
string | The canonical URL 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 |
|
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. [2] | semantic-conventions; my-cool-repo |
Recommended |
[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.
vcs.ref.type 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.
| Value | Description | Stability |
|---|---|---|
branch |
branch | |
tag |
tag |
Metric: vcs.ref.lines_delta
This metric is recommended.
[1]: This metric should be reported for each vcs.line_change.type value. For example if a ref added 3 lines and removed 2 lines,
instrumentation SHOULD report two measurements: 3 and 2 (both positive numbers).
If number of lines added/removed should be calculated from the start of time, then vcs.ref.base.name SHOULD be set to an empty string.
| Attribute | Type | Description | Examples | Requirement Level | Stability |
|---|---|---|---|---|---|
vcs.line_change.type |
string | The type of line change being measured on a branch or change. | added; removed |
Required |
|
vcs.ref.base.name |
string | The name of the reference such as branch or tag in the repository. | my-feature-branch; tag-1-test |
Required |
|
vcs.ref.base.type |
string | The type of the reference in the repository. | branch; tag |
Required |
|
vcs.ref.head.name |
string | The name of the reference such as branch or tag in the repository. | my-feature-branch; tag-1-test |
Required |
|
vcs.ref.head.type |
string | The type of the reference in the repository. | branch; tag |
Required |
|
vcs.repository.url.full |
string | The canonical URL 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 |
|
vcs.change.id |
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. |
|
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. [2] | semantic-conventions; my-cool-repo |
Recommended |
[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.
vcs.line_change.type 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.
| Value | Description | Stability |
|---|---|---|
added |
How many lines were added. | |
removed |
How many lines were removed. |
vcs.ref.base.type 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.
| Value | Description | Stability |
|---|---|---|
branch |
branch | |
tag |
tag |
vcs.ref.head.type 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.
| Value | Description | Stability |
|---|---|---|
branch |
branch | |
tag |
tag |
Metric: vcs.ref.revisions_delta
This metric is recommended.
[1]: This metric should be reported for each vcs.revision_delta.direction value. For example if branch a is 3 commits behind and 2 commits ahead of trunk,
instrumentation SHOULD report two measurements: 3 and 2 (both positive numbers) and vcs.ref.base.name is set to trunk.
| Attribute | Type | Description | Examples | Requirement Level | Stability |
|---|---|---|---|---|---|
vcs.ref.base.name |
string | The name of the reference such as branch or tag in the repository. | my-feature-branch; tag-1-test |
Required |
|
vcs.ref.base.type |
string | The type of the reference in the repository. | branch; tag |
Required |
|
vcs.ref.head.name |
string | The name of the reference such as branch or tag in the repository. | my-feature-branch; tag-1-test |
Required |
|
vcs.ref.head.type |
string | The type of the reference in the repository. | branch; tag |
Required |
|
vcs.repository.url.full |
string | The canonical URL 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 |
|
vcs.revision_delta.direction |
string | The type of revision comparison. | ahead; behind |
Required |
|
vcs.change.id |
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. |
|
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. [2] | semantic-conventions; my-cool-repo |
Recommended |
[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.
vcs.ref.base.type 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.
| Value | Description | Stability |
|---|---|---|
branch |
branch | |
tag |
tag |
vcs.ref.head.type 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.
| Value | Description | Stability |
|---|---|---|
branch |
branch | |
tag |
tag |
vcs.revision_delta.direction 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.
| Value | Description | Stability |
|---|---|---|
ahead |
How many revisions the change is ahead of the target ref. | |
behind |
How many revisions the change is behind the target ref. |
Metric: vcs.ref.time
This metric is recommended.
| Name | Instrument Type | Unit (UCUM) | Description | Stability |
|---|---|---|---|---|
vcs.ref.time |
Gauge | s |
Time a ref (branch) created from the default branch (trunk) has existed. The ref.type attribute will always be branch |
| Attribute | Type | Description | Examples | Requirement Level | Stability |
|---|---|---|---|---|---|
vcs.ref.head.name |
string | The name of the reference such as branch or tag in the repository. | my-feature-branch; tag-1-test |
Required |
|
vcs.ref.head.type |
string | The type of the reference in the repository. | branch; tag |
Required |
|
vcs.repository.url.full |
string | The canonical URL 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 |
|
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. [2] | semantic-conventions; my-cool-repo |
Recommended |
[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.
vcs.ref.head.type 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.
| Value | Description | Stability |
|---|---|---|
branch |
branch | |
tag |
tag |
Metric: vcs.contributor.count
This metric is opt-in.
| Name | Instrument Type | Unit (UCUM) | Description | Stability |
|---|---|---|---|---|
vcs.contributor.count |
Gauge | {contributor} |
The number of unique contributors to a repository |
| Attribute | Type | Description | Examples | Requirement Level | Stability |
|---|---|---|---|---|---|
vcs.repository.url.full |
string | The canonical URL 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 |
|
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. [2] | semantic-conventions; my-cool-repo |
Recommended |
[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.