Active IQ Unified Manager Discussions

Monitoring the Temperature and Cooling on OnTap systems

darraghos
11,916 Views

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. 

1 ACCEPTED SOLUTION

madden
11,870 Views

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!

View solution in original post

4 REPLIES 4

madden
11,871 Views

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!

asulliva
11,826 Views

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

If this post resolved your issue, please help others by selecting ACCEPT AS SOLUTION or adding a KUDO.

darraghos
11,705 Views

Hi Andrew! Thaks for the replies and greta info here. Would you know the OID for the temp mibs for SNMP by any chance? 

asulliva
11,694 Views

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

If this post resolved your issue, please help others by selecting ACCEPT AS SOLUTION or adding a KUDO.
Public