fleet
fleet copied to clipboard
Display human-readable product name in hardware model for Linux hosts
Problem
As an IT admin, I want Fleet to display human-readable hardware models for Linux hosts so I can easily identify the hardware model and know if it's supported.
Customer: This is important for us as it allows us to quickly identify hosts' make and model, and also identify if a user is using non-standard hardware.
What have you tried?
Fleet currently populates a hardware model field for Linux hosts, but is not human-readable or useful at a glance. For example, with a ThinkPad X1 Carbon Gen 12, Fleet currently displays 21KCS06300.
Potential solutions
It might be possible to grab this human-readable hardware model by modifying the vital query that gets run on Windows hosts. It might be possible to grab this from the smbios_tables. I unfortunately don't have physical Linux hardware to test this with.
What is the expected workflow as a result of your proposal?
When an IT admin views a Linux host in Fleet, they would see a hardware model like 21KCS06300 ThinkPad X1 Carbon Gen 12 instead of just 21KCS06300. The admin would be able to quickly identify the hardware model to know if it's supported in their environment or not.
It might be possible to grab this human-readable hardware model by modifying the vital query that gets run on Windows hosts. It might be possible to grab this from the smbios_tables. I unfortunately don't have physical Linux hardware to test this with.
Hey @ddribeiro I'm assuming you mean we could update the vital query on Linux hosts, right?
I think many folks on the Fleet engineering/QA team have Linux boxes.
When you get the chance, can you please drop a question in #help-engineering Slack channel to get help w/ crafting a query for this friendly name?
hey @ddribeiro - taking this into our team board (possibly one to chat with zach about for the off site for this customer too) but let me know if you can try noah's suggestion above! thanks
It looks like on Linux we can get this information from the hardware_version column of system_info.
The vital query we're already using should contain this column, so I think it's a matter of displaying that value for Linux hosts instead of hardware_model like we're doing today.
I think the desired format for the string would be hardware_version + hardware_model (for Linux hosts only).
cc: @noahtalerman
@ddribeiro that makes sense. Thanks for looking into that.
Worth bringing this one through feature fest. It sounds like a quick win.
cc @zayhanlon
I've updated the name of this issue because as we've learned more, it seems that only Lenovo hardware does not return the human-readable model in the hardware_model column.
Several customers that have Dell and HP hardware running Linux report that the desired string is present in the value for hardware_model.
Example that includes results for HP, Lenovo, and Dell hardware.
| board_model | board_vendor | hardware_model | hardware_vendor | hardware_version |
|---|---|---|---|---|
| 854A | HP | HP EliteBook 830 G6 | HP | |
| 20QUS22R01 | LENOVO | 20QUS22R01 | LENOVO | ThinkPad P1 Gen 2 |
| 0GHJ21 | Dell Inc. | Precision 5750 | Dell Inc. |
@noahtalerman now that we know this, should this be considered a bug?
cc: @nonpunctual
@noahtalerman Since we are using system_info table to get serial number for Fleet's own data & this table is osquery core the problem could be there (ie, not necessarily that they have a bug but that they are not accounting for the way Lenovo hw is reporting...) It could also be the case that Lenovo is supposed to follow some standard that they aren't?
It's bad & kind of messy because so much endpoint ops & device management relies on correct serial number reporting (in logging decorators, eg) so I definitely think we need to prioritize this as a bug even if it isn't really a problem we can immediately fix.
cc @ddribeiro @zayhanlon @lukeheath @zwass
I've updated the name of this issue because as we've learned more, it seems that only Lenovo hardware does not return the human-readable model in the
hardware_modelcolumn.Several customers that have Dell and HP hardware running Linux report that the desired string is present in the value for
hardware_model.Example that includes results for HP, Lenovo, and Dell hardware.
board_model board_vendor hardware_model hardware_vendor hardware_version 854A HP HP EliteBook 830 G6 HP 20QUS22R01 LENOVO 20QUS22R01 LENOVO ThinkPad P1 Gen 2 0GHJ21 Dell Inc. Precision 5750 Dell Inc. @noahtalerman now that we know this, should this be considered a bug?
@ddribeiro yes, I think let's track this as a bug.
Converting this to a bug and pasting the original FR here:
Problem
As an IT admin, I want Fleet to display human-readable hardware models for Linux hosts so I can easily identify the hardware model and know if it's supported.
Customer: This is important for us as it allows us to quickly identify hosts' make and model, and also identify if a user is using non-standard hardware.
What have you tried?
Fleet currently populates a hardware model field for Linux hosts, but is not human-readable or useful at a glance. For example, with a ThinkPad X1 Carbon Gen 12, Fleet currently displays 21KCS06300.
Potential solutions
It might be possible to grab this human-readable hardware model by modifying the vital query that gets run on Windows hosts. It might be possible to grab this from the smbios_tables. I unfortunately don't have physical Linux hardware to test this with.
What is the expected workflow as a result of your proposal?
When an IT admin views a Linux host in Fleet, they would see a hardware model like 21KCS06300 ThinkPad X1 Carbon Gen 12 instead of just 21KCS06300. The admin would be able to quickly identify the hardware model to know if it's supported in their environment or not.
Hey team! Please add your planning poker estimate with Zenhub @iansltx @ksykulev @lucasmrod @mostlikelee
Just to clarify, is the proposed fix here to modify the code for the linux system_info table in osquery to check whether hardware_version is populated and, if so, add it to hardware_model? Do we want to check whether the hardware_vendor is Lenovo first? Or perhaps check whether the values for hardware_model and board_model are the same?
I have a Lenovo Thinkpad and I can reproduce the system_info issue.
Both on Windows and Linux (I have dual boot).
- On Linux it returns
21C8S3EA00forhardware_modelandThinkPad L15 Gen 3onhardware_version. - On Windows it returns
21C8S3EA00onhardware_modeland-1onhardware_version.
select * from system_info on Windows:
"host_display_name","board_model","board_serial","board_vendor","board_version","computer_name","cpu_brand","cpu_logical_cores","cpu_microcode","cpu_physical_cores","cpu_sockets","cpu_subtype","cpu_type","hardware_model","hardware_serial","hardware_vendor","hardware_version","hostname","local_hostname","physical_memory","uuid"
"FOOBAR","","","","","FOOBAR","AMD Ryzen 3 5425U with Radeon Graphics","8","","4","1","-1","x86_64","21C8S3EA00","<REDACTED>","LENOVO","-1","foobar","FOOBAR","25769803776","<REDACTED>"
select * from system_info on Linux:
"host_display_name","board_model","board_serial","board_vendor","board_version","computer_name","cpu_brand","cpu_logical_cores","cpu_microcode","cpu_physical_cores","cpu_sockets","cpu_subtype","cpu_type","hardware_model","hardware_serial","hardware_vendor","hardware_version","hostname","local_hostname","physical_memory","uuid"
"foobar-ubuntu","21C8S3EA00","W2CG367013P","LENOVO","Not Defined","foobar-ubuntu","AMD Ryzen 3 5425U with Radeon Graphics","8","0xa500011","4","1","80","x86_64","21C8S3EA00","<REDACTED>","LENOVO","ThinkPad L15 Gen 3","foobar-ubuntu","foobar-ubuntu","23922393088","<REDACTED>"
Osquery does handle Lenovo as a special case in wmi_bios_info's implementation. A possible fix would be to implement a similar special case for system_info when manufacturer (hardware_vendor) is LENOVO (both on Linux and Windows).
FYI @pintomi1989 I removed the ~customer request label. This label is for prioritized feature requests and not bugs: https://fleetdm.com/handbook/company/product-groups#after-the-feature-is-accepted
Very similar issue with Windows serial numbers #25993
Created a new issue for that one since this one appears as though it's already been estimated and started.
Ubuntu on Lenovo, In cloud city, data streams flow, Truth in columns shows.