jenningsloy318 / redfish_exporter

exporter to get metrics from redfish based hardware such as lenovo/dell/superc servers
Apache License 2.0
70 stars 61 forks source link

Reading Units for FANs are not always percentages #42

Closed iceman91176 closed 2 years ago

iceman91176 commented 2 years ago

The collector treats FAN-Reading automatically as percentage, and creates an metric named redfish_chassis_fan_rpm_percentage

https://github.com/jenningsloy318/redfish_exporter/blob/a5b25f668cece75101703fc61e3f2536767ae483/collector/chassis_collector.go#L76

But not all systems return percentage-values. In our case with Dell PowerEdge Servers an absolute value is being returned.

    {
      "@odata.id": "/redfish/v1/Chassis/System.Embedded.1/Sensors/Fans/0x17||Fan.Embedded.5B",
      "FanName": "System Board Fan5B",
      "LowerThresholdCritical": 480,
      "LowerThresholdFatal": 480,
      "LowerThresholdNonCritical": 840,
      "MaxReadingRange": 197,
      "MemberId": "0x17||Fan.Embedded.5B",
      "MinReadingRange": 139,
      "Name": "System Board Fan5B",
      "PhysicalContext": "SystemBoard",
      "Reading": 4320,
      "ReadingUnits": "RPM",
      "Redundancy": [],
      "Redundancy@odata.count": 0,
      "RelatedItem": [
        {
          "@odata.id": "/redfish/v1/Chassis/System.Embedded.1"
        }
      ],
      "RelatedItem@odata.count": 1,
      "Status": {
        "Health": "OK",
        "State": "Enabled"
      },
      "UpperThresholdCritical": null,
      "UpperThresholdFatal": null,
      "UpperThresholdNonCritical": null
    }

The ReadingUnits - property is the key here. In our case it is RPM, other systems use "Percent".

So it might make sense to return different metrics depending on the value of ReadingUnits ? What do you think ?