-
Notifications
You must be signed in to change notification settings - Fork 245
Adds in more generic hw attributes #2417 #2420
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
base: main
Are you sure you want to change the base?
Adds in more generic hw attributes #2417 #2420
Conversation
fee3421
to
036c798
Compare
036c798
to
173b183
Compare
Signed-off-by: James Thompson <thompson.tomo@outlook.com>
173b183
to
a7be60d
Compare
@@ -107,3 +108,37 @@ groups: | |||
stability: development | |||
brief: > | |||
The current state of the component | |||
- id: hw.vendor.id |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it's a great idea to define common vendor, model, and serial number attributes!
However, I'd say KISS principle applies here:
hw.vendor
for indicating the vendorhw.model
for indicating the modelhw.serial_number
for the serial number
I see very few modern hardware instrumentations (Dell, HPE, Cisco, Huawei, NetApp, Pure, etc.) providing separate fields for vendor ID and vendor name (like we have in PnP or in IANA enterprise number). Even Redfish's detailed ComputerSystem resource doesn't expose separate vendor ID and name, model ID and name.
Edit: broken link to Redfish spec
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I originally had it like u suggested but then I noticed what was done in host.cpu.* hence I went more verbose. Note My intention is to consolidate those to be in the hw namespace hence to avoid that confusion.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you, James, we're on the same page! @thompson-tomo
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also, we need to remove host.cpu.vendor.id
in favor of host.cpu.vendor
:
- It says "id" but stores the values in EBX, EDX and ECX registers returned by CPUID, like "GenuineIntel" or "AuthenticAMD". That’s not an ID, that’s just a quirky vendor branding string.
- Other fields in our semconv (e.g., cloud.provider, container.image.name, etc.) are plain English strings, not weird hardware-returned mnemonics. Why suddenly diverge for CPUs? It's confusing to everyone.
- "GenuineIntel" vs "Intel" — this doesn’t help anyone doing aggregation, dashboarding, or alerting. If our goal is consistent, readable observability data, this CPUID value is garbage. It’s like using "msft" instead of "Microsoft".
- CPUID is x86-only. What about ARM? What about RISC-V? We’re baking x86 assumptions into a supposedly architecture-agnostic semantic layer.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I disagree, as cpuid is not a name but rather an id with a fixed length. "SIS SIS SIS " is an is with the name being sis.
97f99c6
to
415cbbf
Compare
Co-authored-by: Bertrand Martin <32521698+bertysentry@users.noreply.github.com>
415cbbf
to
02a1ff9
Compare
We're trying specify the attributes of a physical entity here, as in DMTF's CIM_PhysicalElement class. My suggestion:
This can be easily extended later and clearly identify these attributes' intention. We could use another word that And the best part: it avoids namespace collisions! @thompson-tomo What do you think? |
I am not a fan as it is not consistent with anything else or the naming guidance. The entity part is redundant. And the ambiguity is being introduced as a vendor could have a name, address, phone number etc. Also entity, if not already blocked it should be to avoid confusion. |
You're probably right, @thompson-tomo, so we will keep it simple:
This is what past standards like DMTF CIM, Redfish, and others have been using over the past 3 decades. |
Forget serial number. Under your suggestion how can we model a cpu model which has the below while still being compliant with naming:
With 3 of those currently in use in the host.cpu namespace? |
Most often, CPU information comes from SMBIOS type 4, as defined by the DMTF. I'm referring to page 42 of this specification.
Let's take a real example. This is the SMBIOS Type 4 information from my own laptop:![]() See how it's reported by WMI with the Win32_Processor class:![]() How it's reported in LibreHardwareMonitor:![]() How it's reported in Task Manager:![]() How it's going to be reported in OpenTelemetry attributes:
I've been in this field for 20+ years (infrastructure monitoring). Not a single of the 500+ customers I worked with (Fortune500, large data centers, etc.) ever requested more detailed information. |
Thanks for that detailed response, I think part of the difference is for me is looking at it from an app users experience vs an infrastructure monitoring perspective. Howabout we introduce For vendor that could avoid namespacing for the attributes if everyone else is inboard. |
Fixes #2417
Changes
Adds in vendor. serial & model as generic hw attributes given that they are used for most of the hardware definitions and are applicable in all cases.
Note: if the PR is touching an area that is not listed in the existing areas, or the area does not have sufficient domain experts coverage, the PR might be tagged as experts needed and move slowly until experts are identified.
Merge requirement checklist
[chore]