ipmi_exporter: "Failed to parse bmc-info" when the system does not provide "System Firmware Version"
On my Supermicro servers, I’m getting the following error with the bmc collector enabled:
ERRO[0004] Failed to parse bmc-info data from [local]: Could not find value in output: Device ID : 32
Device Revision : 1
Device SDRs : unsupported
Firmware Revision : 1.52
Device Available : yes (normal operation)
IPMI Version : 2.0
Sensor Device : supported
SDR Repository Device : supported
SEL Device : supported
FRU Inventory Device : supported
IPMB Event Receiver : supported
IPMB Event Generator : supported
Bridge : unsupported
Chassis Device : supported
Manufacturer ID : Super Micro Computer Inc. (10876)
Product ID : 6937
Auxiliary Firmware Revision Information : 00000000h
Device GUID : 00000000-0000-0000-0000-000000000000
System GUID : 00000000-d43a-46ef-ec3c-534d31303136
…
As you can see the BMC on SMCI doesn’t always provide a System Firmware Version
- can we make this optional?
About this issue
- Original URL
- State: closed
- Created 4 years ago
- Comments: 21 (20 by maintainers)
Commits related to this issue
- Add a `bmc-device-id` collector When the `bmc` collector was extended to attempt to collect the system firmware revision the resulting IPMI request broke on some older systems. This collector can be ... — committed to prometheus-community/ipmi_exporter by bitfehler 3 years ago
- Try to parse bmc-info even if command failed This is a workaround for an issue described in #57. The bmc-info command might produce usable output minus the system firmware revision, but then choke on... — committed to prometheus-community/ipmi_exporter by bitfehler 3 years ago
Thanks for the report! This is certainly a bit problematic, I had not thought of this scenario. I will try to release a fixed version ASAP
Oh my. Thanks for the detailed report. Give me a moment to figure out how to solve this mess somewhat gracefully…
Just because we love IPMI so much… I have an old SMC host that does not seem to like running
bmc-info
without the--get-device-id
param, which was removed in https://github.com/soundcloud/ipmi_exporter/commit/2c6a73b1510cb1b6095feb5f18ed5d1da9823616#diff-f1c80b360812fd52bef43d56f3c4ef40853f02711810857332ccedfd9f463f79L291The fact that
bmc-info
exits with status code 1 means that the collector is treating it as a failed command, which is fair enough. But it results in the ipmi_bmc_info metric disappearing for that host. We don’t really want to use a higher privilege level for monitoring.Edit: Running
bmc-info
without--get-device-id
, or running it explicitly with--get-system-info
will trigger the failure. Also, using a higher privilege level user fails, with the same error, e.g.Versions of freeipmi tested: 1.6.3, 1.6.4.