*****UPDATE:- HARDWARE HEALTH IS INCLUDED IN NPM 12.2 PLEASE UPGRADE****
IF HARDWARE HEALTH IS MARKED AS CRITICAL ITS KNOWN ISSUE AND DEVELOPMENT TEAM IS CURRENTLY WORKING ON THIS
Hello Everyone.
In this article i have combined the required steps and information in order to monitor the Cisco Cisco ASA Hardware Health and fail-over status in Orion as work around .
If you have any difficulty please let me know .
Please Note: I have Cisco ASA 5506 and result may differ depending on the version and model you have.
✔ Download and import pre-build universal device poller (Attached - Scroll down to the page )
✔ Assign the UNDP Poller to required node and test
✔ Get the poller ID
✔ Custom SWQL Query
✔ Create Custom Query resource
Download the Custom Poller (Attached) and import in the Universal Device Poller
Open Universal Device Poller on the Orion Server >
Once imported > Right click on each Poller > Assign >
Assign it to your ASA > Test > (To make sure its working and valid for the ASA ) > Finish
Get the Poller ID
Now Go to your Cisco ASA Node>(Top Right Corner ) > Click on the "Customize Page" >
Click on the + button > Search for the Resource "Universal Device Poller Status" >
Select Click "Submit"
You will be bale to see the below resource on the Node Details page.
Right Click on the first Poller and Copy Link address
Paste it in the Notepad copy what you need is the PollerID see an example below
Make a list for all the pollers one by one.(Remember Marking and sequence )
Category | Poller Name | Poller ID |
Hardware Health | entPhySensorValue | d3ef4593-7bf3-4cb0-a663-84028d36dca5 |
Hardware Health | entPhysicalName | 2c6c8d51-6e76-4c16-8007-b0c7a4bfbfa9 |
Hardware Health | entPhySensorUnitsDisplay | 4359cd09-0789-4bbe-a705-32d0c35e4af3 |
Hardware Health | ceSensorExtThresholdSeverity | ac89813d-9368-4a1c-a00c-987f9a7cd08c |
Hardware Health | entPhySensorType | ba5b6415-edbc-4a1b-90f3-4930961e5615 |
Hardware Health | ceSensorExtThresholdEvaluation | 43fe9676-5d5a-4a33-8d92-3d755f6b0dee |
FailOver | cfwHardwareInformation | ce86effb-8cf5-4a06-9fa0-00cf54222702 |
FailOver | cfwHardwareStatusDetail | b6fdaae8-0e4c-4258-bd41-0d7037699985 |
FailOver | cfwHardwareStatusValue | 45dd90df-9eb5-4e4c-8eac-cd463a4437c7 |
Create your custom SWQL Query Now change the below SQL Query according to the above Poller ID
*******SWQL FOR Hardware STATUS*******
SELECT Sensor_Names.Value as Name,
CASE Sensor_Type.value
WHEN 10 THEN ToString(Sensor_Values.Value + ' Rpm')
WHEN 12 THEN CASE Sensor_Values.Value WHEN 2 THEN 'DOWN' ELSE 'OK' END
WHEN 8 THEN ToString(Sensor_Values.Value + ' °C')
ELSE ToString(Sensor_Values.Value + ' ' + Sensor_Display.Value)
END as Unit,
--Sensor_Severity.value as Severity,
--Sensor_Status.Value as Status,
CASE Sensor_Type.value
WHEN 8 THEN
CASE Sensor_Status.value
WHEN 0 THEN '/Orion/HardwareHealth/Images/Temperature_Up.png'
ELSE '/Orion/HardwareHealth/Images/Temperature_Down.png'
END
WHEN 10 THEN
CASE Sensor_Status.value
WHEN 0 THEN '/Orion/HardwareHealth/Images/Fan_Up.png'
ELSE '/Orion/HardwareHealth/Images/Fan_Down.png' END
WHEN 12 THEN
CASE Sensor_Status.value
WHEN 0 THEN '/Orion/HardwareHealth/Images/PowerSupply_Up.png'
ELSE '/Orion/HardwareHealth/Images/PowerSupply_Down.png' END
ELSE
CASE Sensor_Status.value
WHEN 0 THEN '/Orion/HardwareHealth/Images/Generic_Up.png'
ELSE '/Orion/HardwareHealth/Images/Generic_Down.png' END
END as [_IconFor_Name]
FROM (
SELECT CS.RowID as RowID, IsNull(CS.Status, 0) as Value, CA.NodeID
FROM Orion.NPM.CustomPollerStatus CS
INNER JOIN Orion.NPM.CustomPollerAssignment CA ON CA.CustomPollerAssignmentID = CS.CustomPollerAssignmentID
WHERE (CA.CustomPollerID='d3ef4593-7bf3-4cb0-a663-84028d36dca5') AND (CA.NodeID=${NodeID})
) Sensor_Values
LEFT OUTER JOIN (
SELECT CS.RowID as RowID, IsNull(CS.Status, 0) as Value, CA.NodeID
FROM Orion.NPM.CustomPollerStatus CS
INNER JOIN Orion.NPM.CustomPollerAssignment CA ON CA.CustomPollerAssignmentID = CS.CustomPollerAssignmentID
WHERE (CA.CustomPollerID='2c6c8d51-6e76-4c16-8007-b0c7a4bfbfa9') AND (CA.NodeID=${NodeID})
) Sensor_Names ON Sensor_Names.RowID=Sensor_Values.RowID AND Sensor_Names.NodeID=Sensor_Values.NodeID
LEFT OUTER JOIN (
SELECT CS.RowID as RowID, IsNull(CS.Status, 0) as Value, CA.NodeID
FROM Orion.NPM.CustomPollerStatus CS
INNER JOIN Orion.NPM.CustomPollerAssignment CA ON CA.CustomPollerAssignmentID = CS.CustomPollerAssignmentID
WHERE (CA.CustomPollerID='4359cd09-0789-4bbe-a705-32d0c35e4af3') AND (CA.NodeID=${NodeID})
) Sensor_Display ON Sensor_Display.RowID=Sensor_Values.RowID AND Sensor_Display.NodeID=Sensor_Values.NodeID
LEFT OUTER JOIN (
SELECT SUBSTRING(CS.RowID, 1, 2) as RowID, IsNull(CS.Status, 0) as Value, CA.NodeID
FROM Orion.NPM.CustomPollerStatus CS
INNER JOIN Orion.NPM.CustomPollerAssignment CA ON CA.CustomPollerAssignmentID = CS.CustomPollerAssignmentID
WHERE (CA.CustomPollerID='ac89813d-9368-4a1c-a00c-987f9a7cd08c') AND (CA.NodeID=${NodeID})
) Sensor_Status ON Sensor_Status.RowID=Sensor_Values.RowID AND Sensor_Status.NodeID=Sensor_Values.NodeID
LEFT OUTER JOIN (
SELECT CS.RowID as RowID, IsNull(CS.Status, 0) as Value, CA.NodeID
FROM Orion.NPM.CustomPollerStatus CS
INNER JOIN Orion.NPM.CustomPollerAssignment CA ON CA.CustomPollerAssignmentID = CS.CustomPollerAssignmentID
WHERE (CA.CustomPollerID='ba5b6415-edbc-4a1b-90f3-4930961e5615') AND (CA.NodeID=${NodeID})
) Sensor_Type ON Sensor_Type.RowID=Sensor_Values.RowID AND Sensor_Type.NodeID=Sensor_Values.NodeID
LEFT OUTER JOIN (
SELECT SUBSTRING(CS.RowID, 1, 2) as RowID, IsNull(CS.Status, 0) as Value, CA.NodeID
FROM Orion.NPM.CustomPollerStatus CS
INNER JOIN Orion.NPM.CustomPollerAssignment CA ON CA.CustomPollerAssignmentID = CS.CustomPollerAssignmentID
WHERE (CA.CustomPollerID='43fe9676-5d5a-4a33-8d92-3d755f6b0dee') AND (CA.NodeID=${NodeID})
) Sensor_Severity ON Sensor_Severity.RowID=Sensor_Values.RowID AND Sensor_Severity.NodeID=Sensor_Values.NodeID
******SWQL FOR FAILOVER STATUS*****
SELECT Caption_Values.Value as Caption,
State_values.Value as State,
CASE Caption_values.RowID
WHEN 6 THEN --Status for primary unit
CASE State_raw.Value
WHEN 1 THEN '/Orion/Images/StatusIcons/Small-Unknown.gif'
WHEN 2 THEN '/Orion/Images/StatusIcons/Small-Up.gif'
WHEN 3 THEN '/Orion/Images/StatusIcons/Small-Down.gif'
WHEN 4 THEN '/Orion/Images/StatusIcons/Small-Down.gif'
WHEN 5 THEN '/Orion/Images/StatusIcons/Small-Down.gif'
WHEN 6 THEN '/Orion/Images/StatusIcons/Small-Down.gif'
WHEN 7 THEN '/Orion/Images/StatusIcons/Small-Down.gif'
WHEN 8 THEN '/Orion/Images/StatusIcons/Small-Up-Down.gif'
WHEN 9 THEN '/Orion/Images/StatusIcons/Small-Up.gif'
WHEN 10 THEN '/Orion/Images/StatusIcons/Small-Up-Critical.gif'
ELSE '/Orion/Images/StatusIcons/Small-Unknown.gif'
END
WHEN 4 THEN '/Orion/Images/StatusIcons/Small-Unknown.gif'
WHEN 7 THEN
CASE State_raw.Value
WHEN 1 THEN '/Orion/Images/StatusIcons/Small-Unknown.gif'
WHEN 2 THEN '/Orion/Images/StatusIcons/Small-Up.gif'
WHEN 3 THEN '/Orion/Images/StatusIcons/Small-Down.gif'
WHEN 4 THEN '/Orion/Images/StatusIcons/Small-Down.gif'
WHEN 5 THEN '/Orion/Images/StatusIcons/Small-Down.gif'
WHEN 6 THEN '/Orion/Images/StatusIcons/Small-Down.gif'
WHEN 7 THEN '/Orion/Images/StatusIcons/Small-Down.gif'
WHEN 8 THEN '/Orion/Images/StatusIcons/Small-Up-Down.gif'
WHEN 9 THEN '/Orion/Images/StatusIcons/Small-Up.gif'
WHEN 10 THEN '/Orion/Images/StatusIcons/Small-Up.gif'
ELSE '/Orion/Images/StatusIcons/Small-Unknown.gif'
END
ELSE '/Orion/Images/StatusIcons/Small-Unknown.gif'
END as [_IconFor_Caption]
FROM (
SELECT CS.RowID as RowID, IsNull(CS.Status, 0) as Value, CA.NodeID
FROM Orion.NPM.CustomPollerStatus CS
INNER JOIN Orion.NPM.CustomPollerAssignment CA ON CA.CustomPollerAssignmentID = CS.CustomPollerAssignmentID
WHERE (CA.CustomPollerID='ce86effb-8cf5-4a06-9fa0-00cf54222702') AND (CA.NodeID=${NodeId})
) Caption_Values
LEFT OUTER JOIN (
SELECT CS.RowID as RowID, IsNull(CS.Status, 0) as Value, CA.NodeID
FROM Orion.NPM.CustomPollerStatus CS
INNER JOIN Orion.NPM.CustomPollerAssignment CA ON CA.CustomPollerAssignmentID = CS.CustomPollerAssignmentID
WHERE (CA.CustomPollerID='b6fdaae8-0e4c-4258-bd41-0d7037699985') AND (CA.NodeID=${NodeId})
) State_values ON (Caption_Values.RowID= State_Values.RowID) AND (Caption_Values.NodeID = State_Values.NodeID)
LEFT OUTER JOIN (
SELECT CS.RowID as RowID, IsNull(CS.Status, 0) as Value, CA.NodeID
FROM Orion.NPM.CustomPollerStatus CS
INNER JOIN Orion.NPM.CustomPollerAssignment CA ON CA.CustomPollerAssignmentID = CS.CustomPollerAssignmentID
WHERE (CA.CustomPollerID='45dd90df-9eb5-4e4c-8eac-cd463a4437c7') AND (CA.NodeID=${NodeId})
) State_raw ON (State_Raw.RowID=Caption_Values.RowID) AND (State_Raw.NodeID=Caption_Values.NodeID)
WHERE NodeId=${NodeId}
Create custom query resources
Add "Custom Query" Resource on the Node details page .
Pate the above custom query in two different Custom Resources
Results:
Depending on the ASA version you have will be different