For Cisco Fabric Interconnect we have created several UNDP poller to show hardware information such as power consumption.
Is there any way to create custom hardware sensor using OID's. & it should show under below hardware health view.
The only workaround is to use UnDP pollers, and create a custom view for the information.
I ended up with using a Custom Query resource. The SQL for the Custom query is here:
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='E200B54B-C47B-42F7-89C6-5F0784724C0A') 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='ABB18B3C-BCB2-473D-AC66-24BED1C8C799') 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='F2DA14E8-0A02-4DDD-94A8-B997E7981716') 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='9A8397E8-DC3C-4674-902D-F5DE8EB7F796') 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='57F28AF3-D7AB-408B-897E-674D72BFFB74') 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='AE8F6616-4408-4332-B376-3A39E7BBCA23') AND (CA.NodeID=${NodeID}) ) Sensor_Severity ON Sensor_Severity.RowID=Sensor_Values.RowID AND Sensor_Severity.NodeID=Sensor_Values.NodeID
I have for days to create custom hardware sensors, and as far as I can see it is not possible.
This is very dissapointing, and I hope Solarwinds do something about it. Much of the point in having the
system is to monitor the hardware health of our devices.
I have tried to poll the hardware sensors with UnDP pollers. I get the values, and I can create alerts,
however there is no way to create a similar view as the view for the native HW sensors.
For a Cisco ASA there is 15 sensors. In order to monitor all of them I have to create 15 UnDP pollers
and 15 alerts. I could have done with onlu one, if summary of a SNMP table had worked with UnDp, but it dont.
I could have gotten away with one Alert if it was possible to create sensible AND/OR clauses in the
alert manager, but it isnt (only insensible ones...).
I could have made a similar view as the one you have posted if Custom Tables supported scope, but
they dont....
I Could have made a similar view as the one you have posted if Custom Queries supported cell formatting,
but they dont...
The only thing I havent tried is to attach a INSERT SQL clause to the UnDP pollers ti insert the polled
values into the native hardware sensor table. However this is not documented in any good way so I
hessitate to try it.
So I am stuck...
Thanks for reply. Let me know if you got any work around for this.
Thanks for reply, but unable to find sensor* table in database. please help to get this.
Is it required any special permission..
awesome peice of code like it.
can i ask what was your throught process here x.NODEID= ${NODEID})
ans can you do thjs with captions?
There is no Sensor table, you have to join in the CustompollerStatus table via the CustompollerAsignment table. You see it if you try.
Of course first you have to create the Custompollers. You need theese:
1.3.6.1.2.1.99.1.1.1.1 (Sensor units rpm, V etc)
1.3.6.1.2.1.99.1.1.1.1 (Sensor values)
1.3.6.1.2.1.99.1.1.1.6 (Sensor type)
1.3.6.1.2.1.47.1.1.1.1.7 (Sensor names)
1.3.6.1.4.1.9.9.745.1.1.1.5 (Sensor status - boolean)
Then you have to find them in the database and replace teh GUIDS in my SQL with the ones you have.