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

Added support for Supermicro models #88

Merged
merged 17 commits into from
Aug 23, 2024
Merged

Conversation

scriptinperl
Copy link
Collaborator

@scriptinperl scriptinperl commented Jul 25, 2024

  • Added support for Super Micro Models.
  • Refactored LinksWrapper for UnmarshalJSON to handle single objects
  • Refactored Firmware Metrics: Enhanced to handle more issues when the system/firmware is not available.
  • Refactored Dimm Metrics: Improved handling for better performance and reliability.
  • Refactored Dimm, Firmware Metrics, and Storage URLs to be accessed via helpers.

This PR addresses issue #87

@CLAassistant
Copy link

CLAassistant commented Jul 25, 2024

CLA assistant check
All committers have signed the CLA.

@scriptinperl scriptinperl changed the title Supermicro models Added support for Supermicro models Jul 25, 2024
@scriptinperl
Copy link
Collaborator Author

#87

@Comcast Comcast deleted a comment from scriptinperl Jul 26, 2024
@scriptinperl scriptinperl removed the request for review from derrick-dacosta July 26, 2024 18:31
exporter/exporter.go Outdated Show resolved Hide resolved
exporter/exporter.go Outdated Show resolved Hide resolved
@ibrahimkk-moideen
Copy link
Collaborator

Example of successful metrics from CDE480 server.

# HELP redfish_cpu_status Current cpu status 1 = OK, 0 = BAD
# TYPE redfish_cpu_status gauge
redfish_cpu_status{chassisModel="cde480",chassisSerialNumber="xxxxx",id="1",model="Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz",socket="CPU1",totalCores="14"} 1
redfish_cpu_status{chassisModel="cde480",chassisSerialNumber="xxxxx",id="2",model="Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz",socket="CPU2",totalCores="14"} 1
# HELP redfish_device_info Current snapshot of device firmware information
# TYPE redfish_device_info gauge
redfish_device_info{biosVersion="2.0c",chassisModel="cde480",chassisSerialNumber="xxxxx",firmwareVersion="3.70",name=""} 1
# HELP redfish_memory_status Current memory status 1 = OK, 0 = BAD
# TYPE redfish_memory_status gauge
redfish_memory_status{chassisModel="cde480",chassisSerialNumber="xxxxx",totalSystemMemoryGiB="768"} 1
# HELP redfish_power_supply_output Power supply output in watts
# TYPE redfish_power_supply_output gauge
redfish_power_supply_output{bayNumber="0",chassisModel="cde480",chassisSerialNumber="xxxxx",firmwareVersion="",manufacturer="",model="PWS-2K05A-1R",name="Power Supply Bay 1",powerSupplyType="AC",serialNumber="xxxxxxx"} 339
redfish_power_supply_output{bayNumber="0",chassisModel="cde480",chassisSerialNumber="xxxxx",firmwareVersion="",manufacturer="",model="PWS-2K05A-1R",name="Power Supply Bay 2",powerSupplyType="AC",serialNumber="xxxxxxx"} 310
# HELP redfish_power_supply_status Current power supply status 1 = OK, 0 = BAD
# TYPE redfish_power_supply_status gauge
redfish_power_supply_status{bayNumber="0",chassisModel="cde480",chassisSerialNumber="xxxxx",firmwareVersion="",manufacturer="",model="PWS-2K05A-1R",name="Power Supply Bay 1",powerSupplyType="AC",serialNumber="xxxxxxxx"} 1
redfish_power_supply_status{bayNumber="0",chassisModel="cde480",chassisSerialNumber="xxxxx",firmwareVersion="",manufacturer="",model="PWS-2K05A-1R",name="Power Supply Bay 2",powerSupplyType="AC",serialNumber="xxxxxxxx"} 1
# HELP redfish_power_supply_total_consumed Total output of all power supplies in watts
# TYPE redfish_power_supply_total_consumed gauge
redfish_power_supply_total_consumed{chassisModel="cde480",chassisSerialNumber="xxxxx",memberId="/redfish/v1/Chassis/1/Power"} 644
# HELP redfish_power_voltage_output Power voltage output in watts
# TYPE redfish_power_voltage_output gauge
redfish_power_voltage_output{chassisModel="cde480",chassisSerialNumber="xxxxx",name="1.05V PCH"} 1.041
redfish_power_voltage_output{chassisModel="cde480",chassisSerialNumber="xxxxx",name="1.2V BMC"} 1.218
redfish_power_voltage_output{chassisModel="cde480",chassisSerialNumber="xxxxx",name="1.5V PCH"} 1.527
redfish_power_voltage_output{chassisModel="cde480",chassisSerialNumber="xxxxx",name="12V"} 12.315
redfish_power_voltage_output{chassisModel="cde480",chassisSerialNumber="xxxxx",name="3.3VCC"} 3.35
redfish_power_voltage_output{chassisModel="cde480",chassisSerialNumber="xxxxx",name="3.3VSB"} 3.299
redfish_power_voltage_output{chassisModel="cde480",chassisSerialNumber="xxxxx",name="5VCC"} 5.078
redfish_power_voltage_output{chassisModel="cde480",chassisSerialNumber="xxxxx",name="5VSB"} 5.026
redfish_power_voltage_output{chassisModel="cde480",chassisSerialNumber="xxxxx",name="VBAT"} 3.335
redfish_power_voltage_output{chassisModel="cde480",chassisSerialNumber="xxxxx",name="VDIMMAB"} 1.209
redfish_power_voltage_output{chassisModel="cde480",chassisSerialNumber="xxxxx",name="VDIMMCD"} 1.209
redfish_power_voltage_output{chassisModel="cde480",chassisSerialNumber="xxxxx",name="VDIMMEF"} 1.209
redfish_power_voltage_output{chassisModel="cde480",chassisSerialNumber="xxxxx",name="VDIMMGH"} 1.218
redfish_power_voltage_output{chassisModel="cde480",chassisSerialNumber="xxxxx",name="Vcpu1"} 1.809
redfish_power_voltage_output{chassisModel="cde480",chassisSerialNumber="xxxxx",name="Vcpu2"} 1.809
# HELP redfish_power_voltage_status Current power voltage status 1 = OK, 0 = BAD
# TYPE redfish_power_voltage_status gauge
redfish_power_voltage_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="1.05V PCH"} 1
redfish_power_voltage_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="1.2V BMC"} 1
redfish_power_voltage_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="1.5V PCH"} 1
redfish_power_voltage_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="12V"} 1
redfish_power_voltage_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="3.3VCC"} 1
redfish_power_voltage_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="3.3VSB"} 1
redfish_power_voltage_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="5VCC"} 1
redfish_power_voltage_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="5VSB"} 1
redfish_power_voltage_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="VBAT"} 1
redfish_power_voltage_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="VDIMMAB"} 1
redfish_power_voltage_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="VDIMMCD"} 1
redfish_power_voltage_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="VDIMMEF"} 1
redfish_power_voltage_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="VDIMMGH"} 1
redfish_power_voltage_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="Vcpu1"} 1
redfish_power_voltage_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="Vcpu2"} 1
# HELP redfish_storage_controller_status Current storage controller status 1 = OK, 0 = BAD
# TYPE redfish_storage_controller_status gauge
redfish_storage_controller_status{chassisModel="cde480",chassisSerialNumber="xxxxx",firmwareVersion="4.680.00-8290",model="3108",name="HA Storage System"} 1
# HELP redfish_thermal_fan_speed Current fan speed in the unit of percentage, possible values are 0 - 100
# TYPE redfish_thermal_fan_speed gauge
redfish_thermal_fan_speed{chassisModel="cde480",chassisSerialNumber="xxxxx",name="FAN1"} 8500
redfish_thermal_fan_speed{chassisModel="cde480",chassisSerialNumber="xxxxx",name="FAN2"} 8500
redfish_thermal_fan_speed{chassisModel="cde480",chassisSerialNumber="xxxxx",name="FAN3"} 8600
redfish_thermal_fan_speed{chassisModel="cde480",chassisSerialNumber="xxxxx",name="FAN4"} 8500
redfish_thermal_fan_speed{chassisModel="cde480",chassisSerialNumber="xxxxx",name="FAN5"} 8500
# HELP redfish_thermal_fan_status Current fan status 1 = OK, 0 = BAD
# TYPE redfish_thermal_fan_status gauge
redfish_thermal_fan_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="FAN1"} 1
redfish_thermal_fan_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="FAN2"} 1
redfish_thermal_fan_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="FAN3"} 1
redfish_thermal_fan_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="FAN4"} 1
redfish_thermal_fan_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="FAN5"} 1
# HELP redfish_thermal_sensor_status Current sensor status 1 = OK, 0 = BAD
# TYPE redfish_thermal_sensor_status gauge
redfish_thermal_sensor_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="AOC_NIC1_Temp"} 1
redfish_thermal_sensor_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="AOC_SAS Temp"} 1
redfish_thermal_sensor_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="BPN-1 Temp"} 1
redfish_thermal_sensor_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="BPN-2 Temp"} 1
redfish_thermal_sensor_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="CPU1 Temp"} 1
redfish_thermal_sensor_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="CPU2 Temp"} 1
redfish_thermal_sensor_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="Expander1 Temp"} 1
redfish_thermal_sensor_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="Expander2 Temp"} 1
redfish_thermal_sensor_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="HDD Temp"} 1
redfish_thermal_sensor_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P1-DIMMA1 Temp"} 1
redfish_thermal_sensor_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P1-DIMMA2 Temp"} 1
redfish_thermal_sensor_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P1-DIMMA3 Temp"} 1
redfish_thermal_sensor_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P1-DIMMB1 Temp"} 1
redfish_thermal_sensor_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P1-DIMMB2 Temp"} 1
redfish_thermal_sensor_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P1-DIMMB3 Temp"} 1
redfish_thermal_sensor_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P1-DIMMC1 Temp"} 1
redfish_thermal_sensor_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P1-DIMMC2 Temp"} 1
redfish_thermal_sensor_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P1-DIMMC3 Temp"} 1
redfish_thermal_sensor_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P1-DIMMD1 Temp"} 1
redfish_thermal_sensor_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P1-DIMMD2 Temp"} 1
redfish_thermal_sensor_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P1-DIMMD3 Temp"} 1
redfish_thermal_sensor_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P2-DIMME1 Temp"} 1
redfish_thermal_sensor_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P2-DIMME2 Temp"} 1
redfish_thermal_sensor_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P2-DIMME3 Temp"} 1
redfish_thermal_sensor_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P2-DIMMF1 Temp"} 1
redfish_thermal_sensor_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P2-DIMMF2 Temp"} 1
redfish_thermal_sensor_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P2-DIMMF3 Temp"} 1
redfish_thermal_sensor_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P2-DIMMG1 Temp"} 1
redfish_thermal_sensor_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P2-DIMMG2 Temp"} 1
redfish_thermal_sensor_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P2-DIMMG3 Temp"} 1
redfish_thermal_sensor_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P2-DIMMH1 Temp"} 1
redfish_thermal_sensor_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P2-DIMMH2 Temp"} 1
redfish_thermal_sensor_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P2-DIMMH3 Temp"} 1
redfish_thermal_sensor_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="PCH Temp"} 1
redfish_thermal_sensor_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="Peripheral Temp"} 1
redfish_thermal_sensor_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="System Temp"} 1
redfish_thermal_sensor_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="Vcpu1VRM Temp"} 1
redfish_thermal_sensor_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="Vcpu2VRM Temp"} 1
redfish_thermal_sensor_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="VmemABVRM Temp"} 1
redfish_thermal_sensor_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="VmemCDVRM Temp"} 1
redfish_thermal_sensor_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="VmemEFVRM Temp"} 1
redfish_thermal_sensor_status{chassisModel="cde480",chassisSerialNumber="xxxxx",name="VmemGHVRM Temp"} 1
# HELP redfish_thermal_sensor_temperature Current sensor temperature reading in Celsius
# TYPE redfish_thermal_sensor_temperature gauge
redfish_thermal_sensor_temperature{chassisModel="cde480",chassisSerialNumber="xxxxx",name="AOC_NIC1_Temp"} 51
redfish_thermal_sensor_temperature{chassisModel="cde480",chassisSerialNumber="xxxxx",name="AOC_SAS Temp"} 60
redfish_thermal_sensor_temperature{chassisModel="cde480",chassisSerialNumber="xxxxx",name="BPN-1 Temp"} 29
redfish_thermal_sensor_temperature{chassisModel="cde480",chassisSerialNumber="xxxxx",name="BPN-2 Temp"} 31
redfish_thermal_sensor_temperature{chassisModel="cde480",chassisSerialNumber="xxxxx",name="CPU1 Temp"} 36
redfish_thermal_sensor_temperature{chassisModel="cde480",chassisSerialNumber="xxxxx",name="CPU2 Temp"} 36
redfish_thermal_sensor_temperature{chassisModel="cde480",chassisSerialNumber="xxxxx",name="Expander1 Temp"} 50
redfish_thermal_sensor_temperature{chassisModel="cde480",chassisSerialNumber="xxxxx",name="Expander2 Temp"} 53
redfish_thermal_sensor_temperature{chassisModel="cde480",chassisSerialNumber="xxxxx",name="HDD Temp"} 31
redfish_thermal_sensor_temperature{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P1-DIMMA1 Temp"} 34
redfish_thermal_sensor_temperature{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P1-DIMMA2 Temp"} 36
redfish_thermal_sensor_temperature{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P1-DIMMA3 Temp"} 35
redfish_thermal_sensor_temperature{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P1-DIMMB1 Temp"} 36
redfish_thermal_sensor_temperature{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P1-DIMMB2 Temp"} 37
redfish_thermal_sensor_temperature{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P1-DIMMB3 Temp"} 36
redfish_thermal_sensor_temperature{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P1-DIMMC1 Temp"} 32
redfish_thermal_sensor_temperature{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P1-DIMMC2 Temp"} 34
redfish_thermal_sensor_temperature{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P1-DIMMC3 Temp"} 34
redfish_thermal_sensor_temperature{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P1-DIMMD1 Temp"} 35
redfish_thermal_sensor_temperature{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P1-DIMMD2 Temp"} 36
redfish_thermal_sensor_temperature{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P1-DIMMD3 Temp"} 37
redfish_thermal_sensor_temperature{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P2-DIMME1 Temp"} 32
redfish_thermal_sensor_temperature{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P2-DIMME2 Temp"} 32
redfish_thermal_sensor_temperature{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P2-DIMME3 Temp"} 32
redfish_thermal_sensor_temperature{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P2-DIMMF1 Temp"} 34
redfish_thermal_sensor_temperature{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P2-DIMMF2 Temp"} 34
redfish_thermal_sensor_temperature{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P2-DIMMF3 Temp"} 34
redfish_thermal_sensor_temperature{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P2-DIMMG1 Temp"} 35
redfish_thermal_sensor_temperature{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P2-DIMMG2 Temp"} 35
redfish_thermal_sensor_temperature{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P2-DIMMG3 Temp"} 35
redfish_thermal_sensor_temperature{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P2-DIMMH1 Temp"} 37
redfish_thermal_sensor_temperature{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P2-DIMMH2 Temp"} 37
redfish_thermal_sensor_temperature{chassisModel="cde480",chassisSerialNumber="xxxxx",name="P2-DIMMH3 Temp"} 36
redfish_thermal_sensor_temperature{chassisModel="cde480",chassisSerialNumber="xxxxx",name="PCH Temp"} 33
redfish_thermal_sensor_temperature{chassisModel="cde480",chassisSerialNumber="xxxxx",name="Peripheral Temp"} 34
redfish_thermal_sensor_temperature{chassisModel="cde480",chassisSerialNumber="xxxxx",name="System Temp"} 27
redfish_thermal_sensor_temperature{chassisModel="cde480",chassisSerialNumber="xxxxx",name="Vcpu1VRM Temp"} 37
redfish_thermal_sensor_temperature{chassisModel="cde480",chassisSerialNumber="xxxxx",name="Vcpu2VRM Temp"} 35
redfish_thermal_sensor_temperature{chassisModel="cde480",chassisSerialNumber="xxxxx",name="VmemABVRM Temp"} 36
redfish_thermal_sensor_temperature{chassisModel="cde480",chassisSerialNumber="xxxxx",name="VmemCDVRM Temp"} 32
redfish_thermal_sensor_temperature{chassisModel="cde480",chassisSerialNumber="xxxxx",name="VmemEFVRM Temp"} 34
redfish_thermal_sensor_temperature{chassisModel="cde480",chassisSerialNumber="xxxxx",name="VmemGHVRM Temp"} 36
# HELP up was the last scrape of fishymetrics successful.
# TYPE up gauge
up 1

@ibrahimkk-moideen ibrahimkk-moideen merged commit beee506 into main Aug 23, 2024
3 checks passed
@derrick-dacosta derrick-dacosta deleted the Supermicro-models branch September 17, 2024 01:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants