Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a datacenter resource. #1413

Closed
Closed
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions .chloggen/adding-datacenter-convention.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# 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: new_component

# The name of the area of concern in the attributes-registry, (e.g. http, cloud, db)
component: dc

# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
note: Allow users to categorize datacenter information.

# 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: [1409]

# (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: |
Many companies run in a Hybrid environment, and being able to see information when managing fleets
of servers is valuable as this allows for standardize monitoring of server level monitoring.
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ body:
- area:container
- area:cpu
- area:db
- area:dc
- area:deployment
- area:destination
- area:device
Expand Down
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/change_proposal.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ body:
- area:container
- area:cpu
- area:db
- area:dc
- area:deployment
- area:destination
- area:device
Expand Down
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/new-conventions.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ body:
- area:container
- area:cpu
- area:db
- area:dc
- area:deployment
- area:destination
- area:device
Expand Down
1 change: 1 addition & 0 deletions docs/attributes-registry/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ Currently, the following namespaces exist:
- [Container](container.md)
- [CPU](cpu.md)
- [Db](db.md)
- [DC](dc.md)
- [Deployment](deployment.md)
- [Destination](destination.md)
- [Device](device.md)
Expand Down
35 changes: 35 additions & 0 deletions docs/attributes-registry/dc.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<!--- Hugo front matter used to generate the website version of this page:
--->

<!-- NOTE: THIS FILE IS AUTOGENERATED. DO NOT EDIT BY HAND. -->
<!-- see templates/registry/markdown/attribute_namespace.md.j2 -->

# DC
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure it is a good idea to use the abbreviation here. I'd be more inclined to go with "Data Center" instead.


## Datacenter Attributes

Generic DataCenter infrastructure tagging.

| Attribute | Type | Description | Examples | Stability |
| ------------------ | ------ | -------------------------------------------- | -------------------------------------------------------------- | ---------------------------------------------------------------- |
| `dc.cage` | string | Name of the cage [1] | `cage-1` | ![Experimental](https://img.shields.io/badge/-experimental-blue) |
| `dc.chassis` | string | Name of the chassis the server lives in. [2] | `pod-4` | ![Experimental](https://img.shields.io/badge/-experimental-blue) |
| `dc.device.type` | string | Type of device used. | `server`; `chassis`; `network`; `pdu`; `switch`; `patch-panel` | ![Experimental](https://img.shields.io/badge/-experimental-blue) |
| `dc.name` | string | Name of datacenter. | `dc-name` | ![Experimental](https://img.shields.io/badge/-experimental-blue) |
| `dc.pod` | string | Name of the pod [3] | `pod-4` | ![Experimental](https://img.shields.io/badge/-experimental-blue) |
| `dc.provider.type` | string | Type of datacenter | `cloud`; `colocation`; `internal` | ![Experimental](https://img.shields.io/badge/-experimental-blue) |
| `dc.rack` | string | Name of the rack. [4] | `rack-7` | ![Experimental](https://img.shields.io/badge/-experimental-blue) |
| `dc.site` | string | Name of the datacenter site [5] | `site-1` | ![Experimental](https://img.shields.io/badge/-experimental-blue) |
| `dc.suite` | string | Name of the datacenter suite [6] | `suite-5` | ![Experimental](https://img.shields.io/badge/-experimental-blue) |

**[1]:** This is a literal cage which is used to protect servers from potential intruders.

**[2]:** A chassis is used to describe frame which contains servers together inside of a rack unit of a server rack. Typically used to take advantage of shared power supplies.

**[3]:** This is a grouping of many servers typically several racks of servers.

**[4]:** A tower frame which hold many servers and chassis. [Rack Unit](https://en.wikipedia.org/wiki/Rack_unit)

**[5]:** The name of the physical building.

**[6]:** Typically the room in the building where the server cages are located.
60 changes: 60 additions & 0 deletions docs/resource/datacenter.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# Datacenters

In case of datacenter operations users might need a way of describing the physical layout of where
processes are running.

<!-- semconv dc -->
<!-- NOTE: THIS TEXT IS AUTOGENERATED. DO NOT EDIT BY HAND. -->
<!-- see templates/registry/markdown/snippet.md.j2 -->
<!-- prettier-ignore-start -->
<!-- markdownlint-capture -->
<!-- markdownlint-disable -->


**Status:** ![Experimental](https://img.shields.io/badge/-experimental-blue)

**type:** `dc`

**Description:** Generic DataCenter infrastructure tagging.

| Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability |
|---|---|---|---|---|---|
| [`cloud.provider`](/docs/attributes-registry/cloud.md) | string | Name of the cloud provider. | `alibaba_cloud`; `aws`; `azure` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) |
| [`dc.cage`](/docs/attributes-registry/dc.md) | string | Name of the cage [1] | `cage-1` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should these be conditionally recommended based on availability?
Should these be opt-in or on by default?

E.g. do cloud providers give you this data?

| [`dc.name`](/docs/attributes-registry/dc.md) | string | Name of datacenter. | `dc-name` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How do you get this information on a cloud?

is it correlated with cloud.availability_zone or cloud.region ?

| [`dc.pod`](/docs/attributes-registry/dc.md) | string | Name of the pod [2] | `pod-4` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) |
| [`dc.provider.type`](/docs/attributes-registry/dc.md) | string | Type of datacenter | `cloud`; `colocation`; `internal` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) |
| [`dc.rack`](/docs/attributes-registry/dc.md) | string | Name of the rack. [3] | `rack-7` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) |
| [`dc.site`](/docs/attributes-registry/dc.md) | string | Name of the datacenter site [4] | `site-1` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) |
| [`dc.suite`](/docs/attributes-registry/dc.md) | string | Name of the datacenter suite [5] | `suite-5` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) |

**[1]:** This is a literal cage which is used to protect servers from potential intruders.

**[2]:** This is a grouping of many servers typically several racks of servers.

**[3]:** A tower frame which hold many servers and chassis. [Rack Unit](https://en.wikipedia.org/wiki/Rack_unit)

**[4]:** The name of the physical building.

**[5]:** Typically the room in the building where the server cages are located.



`cloud.provider` 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 |
|---|---|---|
| `alibaba_cloud` | Alibaba Cloud | ![Experimental](https://img.shields.io/badge/-experimental-blue) |
| `aws` | Amazon Web Services | ![Experimental](https://img.shields.io/badge/-experimental-blue) |
| `azure` | Microsoft Azure | ![Experimental](https://img.shields.io/badge/-experimental-blue) |
| `gcp` | Google Cloud Platform | ![Experimental](https://img.shields.io/badge/-experimental-blue) |
| `heroku` | Heroku Platform as a Service | ![Experimental](https://img.shields.io/badge/-experimental-blue) |
| `ibm_cloud` | IBM Cloud | ![Experimental](https://img.shields.io/badge/-experimental-blue) |
| `tencent_cloud` | Tencent Cloud | ![Experimental](https://img.shields.io/badge/-experimental-blue) |



<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->
<!-- END AUTOGENERATED TEXT -->
<!-- endsemconv -->
65 changes: 65 additions & 0 deletions model/dc/registry.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
groups:
- id: registry.dc
type: attribute_group
display_name: Datacenter Attributes
brief: >
Generic DataCenter infrastructure tagging.
attributes:
- id: dc.name
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it may be better to spell this out, check out the attribute name abbreviation guidelines

type: string
stability: experimental
brief: 'Name of datacenter.'
examples: ['dc-name']
- id: dc.provider.type
type: string
stability: experimental
brief: 'Type of datacenter'
examples: ['cloud', 'colocation', 'internal']
- id: dc.device.type
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we already have a few attributes that can describe a device id/name #1474 - is there some we can reuse instead of adding a new one?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I could see a scenario where you might need both a device ID and a hw component id in a parent child relationship. Maybe a server with a network card which you're measuring tx/rx.

type: string
stability: experimental
brief: 'Type of device used.'
examples: ['server', 'chassis', 'network', 'pdu', 'switch', 'patch-panel']
- id: dc.site
type: string
stability: experimental
brief: 'Name of the datacenter site'
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you outline more what this means and how to generate this field? Can I discover these from within a datacenter or do I need to look it up?

note: >
The name of the physical building.
examples: ['site-1']
- id: dc.suite
type: string
stability: experimental
brief: 'Name of the datacenter suite'
note: >
Typically the room in the building where the server cages are located.
examples: ['suite-5']
Comment on lines +23 to +36
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is a good case to reuse future geo namespace #1116

cc @trisch-me @gregkalapos

I'd postpone adding those two since physical address is not a datacenter-specific thing and we need to be able to express it in a generic way.

Copy link
Author

@hdost hdost Oct 20, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not necessarily related to geolocation it's relative to the building it's in.

- id: dc.cage
type: string
stability: experimental
brief: 'Name of the cage'
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this a standard property described somewhere we can link to? Also, let's add an additional layer saying what it is. E.g. dc.cage.name or dc.cage.id so that there is a room to record different properties of the cage and also the attribute name is descriptive.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can multiply it. I could see people using one, either , both.

note: >
This is a literal cage which is used to protect servers from potential intruders.
examples: ['cage-1']
- id: dc.pod
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same as for the cage - please link some external documentation and also update the name to be more specific (dc.pod.name, or dc.pod.id or something else)

type: string
stability: experimental
brief: 'Name of the pod'
note: >
This is a grouping of many servers typically several racks of servers.
examples: ['pod-4']
- id: dc.chassis
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same here, please link docs and provide specific property in the name

type: string
stability: experimental
brief: 'Name of the chassis the server lives in.'
note: >
A chassis is used to describe frame which contains servers together inside of a rack unit
of a server rack. Typically used to take advantage of shared power supplies.
examples: ['pod-4']
- id: dc.rack
type: string
stability: experimental
brief: 'Name of the rack.'
note: >
A tower frame which hold many servers and chassis. [Rack Unit](https://en.wikipedia.org/wiki/Rack_unit)
examples: ['rack-7']
16 changes: 16 additions & 0 deletions model/dc/resources.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
groups:
- id: dc
type: resource
name: dc
brief: >
Generic DataCenter infrastructure tagging.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should call out that it's intended for the telemetry that describes datacenters themselves (and not the user code running somewhere that data center)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Until we sort out Entity / Resource fully - I think you should be really explicit who looks up this data and reports it.

Is this something you want an SDK to fill out? This feels like something that belongs in an entity side-channel signal...

cc @tigrannajaryan (and rest of Entities SiG) for thoughts

attributes:
- ref: dc.name
requirement_level: recommended
- ref: cloud.provider
- ref: dc.provider.type
- ref: dc.suite
- ref: dc.site
- ref: dc.cage
- ref: dc.pod
- ref: dc.rack
1 change: 1 addition & 0 deletions templates/registry/markdown/weaver.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ acronyms:
- CLR
- CPU
- CSI
- DC
- DynamoDB
- ECS
- EKS
Expand Down
Loading