Active IQ Unified Manager Discussions
Active IQ Unified Manager Discussions
Guys, I need ot monitoring and possible graph the cooling of my OnTap systems over time. I don't see any ready way to do this via OnCommand DFM/Core or powershell. Any ideas? I'm open to using APIs etc./ to build my own solution.
Solved! See The Solution
Hi @darraghos
I had a peek around the API and found 'storage-shelf-environment-list-info' which has this response info:
* * @typedef temp-sensor-info * @desc information on the temperature sensors installed in the shelf. * * @element temp-sensor-element-no * @type integer * @range [0..255] * @desc Element number for the temperature sensor. * * @element temp-sensor-is-not-installed * @type string, optional * @desc Indicates the sensor for this element is not * installed. This will only be presented if the * sensor is missing, and no further data for * this sensor will be presented. * * @element temp-sensor-is-error * @type boolean, optional * @desc Indicates whether the sensor has indicated * an error in temperature. * * @element temp-sensor-current-temperature * @type integer, optional * @range [0..255] * @desc Current temperature reading in degrees Celsius. * * @element temp-sensor-is-ambient * @type boolean, optional * @desc Indicates whether the temp-sensor-current-temp is * the ambient temperature. * * @element temp-sensor-current-condition * @type string, optional * @desc Current temperature condition for this sensor. One of: * "under_temperature_warning", * "under_temperature_failure", * "over_temperature_warning", * "over_temperature_failure", * "normal_temperature_range". * * @element temp-sensor-low-critical * @type integer * @range [0..255] * @desc Low critical temperature in degree Celsius. * * @element temp-sensor-low-warning * @type integer * @range [0..255] * @desc Low warning temperature in degree Celsius. * * @element temp-sensor-hi-warning * @type integer * @range [0..255] * @desc High warning temperature in degree Celsius. * * @element temp-sensor-hi-critical * @type integer * @range [0..255] * @desc High critical temperature in degree Celsius.
So via the API you can get per shelf temperature info. So you could use this API and just pick one of the shelves to store in your time-series database.
If you want the controller itself I couldn't find an API for that info but from the CLI the 'environment' command does show it (and shelves too if you want), see an example here. So you could just SSH off the command, parse the output, and store that in your time-series database. It might be simpler to implement via SSH if this is your only need...
Hope this helps!
Cheers,
Chris Madden
Storage Architect, NetApp EMEA (and author of Harvest)
Blog: It all begins with data
P.S. Please select “Options” and then “Accept as Solution” if this response answered your question so that others will find it easily!
Hi @darraghos
I had a peek around the API and found 'storage-shelf-environment-list-info' which has this response info:
* * @typedef temp-sensor-info * @desc information on the temperature sensors installed in the shelf. * * @element temp-sensor-element-no * @type integer * @range [0..255] * @desc Element number for the temperature sensor. * * @element temp-sensor-is-not-installed * @type string, optional * @desc Indicates the sensor for this element is not * installed. This will only be presented if the * sensor is missing, and no further data for * this sensor will be presented. * * @element temp-sensor-is-error * @type boolean, optional * @desc Indicates whether the sensor has indicated * an error in temperature. * * @element temp-sensor-current-temperature * @type integer, optional * @range [0..255] * @desc Current temperature reading in degrees Celsius. * * @element temp-sensor-is-ambient * @type boolean, optional * @desc Indicates whether the temp-sensor-current-temp is * the ambient temperature. * * @element temp-sensor-current-condition * @type string, optional * @desc Current temperature condition for this sensor. One of: * "under_temperature_warning", * "under_temperature_failure", * "over_temperature_warning", * "over_temperature_failure", * "normal_temperature_range". * * @element temp-sensor-low-critical * @type integer * @range [0..255] * @desc Low critical temperature in degree Celsius. * * @element temp-sensor-low-warning * @type integer * @range [0..255] * @desc Low warning temperature in degree Celsius. * * @element temp-sensor-hi-warning * @type integer * @range [0..255] * @desc High warning temperature in degree Celsius. * * @element temp-sensor-hi-critical * @type integer * @range [0..255] * @desc High critical temperature in degree Celsius.
So via the API you can get per shelf temperature info. So you could use this API and just pick one of the shelves to store in your time-series database.
If you want the controller itself I couldn't find an API for that info but from the CLI the 'environment' command does show it (and shelves too if you want), see an example here. So you could just SSH off the command, parse the output, and store that in your time-series database. It might be simpler to implement via SSH if this is your only need...
Hope this helps!
Cheers,
Chris Madden
Storage Architect, NetApp EMEA (and author of Harvest)
Blog: It all begins with data
P.S. Please select “Options” and then “Accept as Solution” if this response answered your question so that others will find it easily!
For cDOT, I responded to a similar question a couple of weeks ago here.
There are a number of different temperature sensors available, you can get the list using this PowerShell code:
$sensors = Invoke-NcSystemApi '<environment-sensors-get-iter></environment-sensors-get-iter>' $sensors.results.'attributes-list'.'environment-sensors-info' | ?{ $_.'sensor-type' -eq 'thermal' } | %{ $_.'sensor-name' } | Sort-Object | Get-Unique
For my cDOT 8.3 systems, it returned the following:
Bat Temp CPU0 Temp Margin CPU1 Temp Margin In Flow Temp IO Mid1 Temp IO Mid2 Temp LM56 Temp NVMEM Bat Temp Out Flow Temp PCI Slot Temp PSU1 Temp PSU2 Temp
With that information, we can quickly get the temp information for the relevant sensors...
$output = @() "In Flow Temp","Out Flow Temp" | %{ $result = Invoke-NcSystemApi "<environment-sensors-get-iter><sensor-name>$($_)</sensor-name></environment-sensors-get-iter>" $result.results.'attributes-list'.'environment-sensors-info' | %{ $obj = "" | Select Node,Sensor,Temp,State $obj.Node = $_.'node-name' $obj.Sensor = $_.'sensor-name' $obj.Temp = "$($_.'threshold-sensor-value') $($_.'value-units')" $obj.State = $_.'threshold-sensor-state' $output += $obj } } $output
And the resulting output:
Node Sensor Temp State ---- ------ ---- ----- VICE-01 In Flow Temp 29 C normal VICE-02 In Flow Temp 28 C normal VICE-03 In Flow Temp 27 C normal VICE-04 In Flow Temp 27 C normal VICE-05 In Flow Temp 28 C normal VICE-06 In Flow Temp 28 C normal VICE-07 In Flow Temp 29 C normal VICE-08 In Flow Temp 29 C normal VICE-01 Out Flow Temp 44 C normal VICE-02 Out Flow Temp 43 C normal VICE-03 Out Flow Temp 43 C normal VICE-04 Out Flow Temp 43 C normal VICE-05 Out Flow Temp 43 C normal VICE-06 Out Flow Temp 43 C normal VICE-07 Out Flow Temp 43 C normal VICE-08 Out Flow Temp 43 C normal
For 7-mode there is no equivalent API for controller metrics. SNMP is the easiest option. You can, as @madden suggested, query the shelf environmental information using the API though.
Hope that helps.
Andrew
Hi Andrew! Thaks for the replies and greta info here. Would you know the OID for the temp mibs for SNMP by any chance?
Not 100% sure, but I think try 1.3.6.1.4.1.789.1.21.1.2.1.{20-29} (shelves) or 1.3.6.1.4.1.789.37{1,2,5,6} (chassis).
Andrew