28 Replies Latest reply on Apr 27, 2017 7:45 AM by mtalas

    ASA Hardware Monitor

    gourav baweja

      We are not be able to able to Monitor Cisco ASA Firewall Hardware.

        • Re: ASA Hardware Monitor
          Malik Haider

          Cisco ASA Hardware Health not detected - SolarWinds Worldwide, LLC. Help and Support

          I have marked it as BUG with the vendor  ASAs don’t currently support envmonMIB, this’ documented under the Cisco bug ID CSCuw47997.

          If you require additional information on the status of the bug please contact Cisco and reference the bug ID. 

           

           

          For more details please find the KB post below.

           

          Hardware health OIDS - SolarWinds Worldwide, LLC. Help and Support

           

          You can run the SNMPWALk fro the ASA and then search within the txt output file to confirm if the MIB table is actually present within the device itself.

          Running SNMPWalk

          1 of 1 people found this helpful
            • Re: ASA Hardware Monitor
              lll8lll

              Cisco ASA has its own MIB for hardware (CISCO-ENTITY-SENSOR-EXT-MIB)

               

              But Solawinds do not want to support it.

                • Re: ASA Hardware Monitor
                  Malik Haider

                  Solarwinds does wanted but there are certain vendor standard requirements which are missing from the device  therefor its been logged as BUG with Cisco

                   

                  See the details here.

                  Cisco Bug: CSCur55645 - Saleen: Add support for CISCO-ENTITY-SENSOR-EXT-MIB

                   

                  When running discovery against Cisco devices (1.3.6.1.4.1.9) we use below OID(s) Cisco own standard MIB's

                   

                      1.3.6.1.4.1.9.9.91.1.1.1.1.1 - entSensorType

                      1.3.6.1.4.1.9.9.13.1.2.1.2 - ciscoEnvMonVoltageStatusDescr

                      1.3.6.1.4.1.9.9.13.1.3.1.2 - ciscoEnvMonTemperatureStatusDescr

                      1.3.6.1.4.1.9.9.13.1.4.1.2 - ciscoEnvMonFanStatusDescr

                      1.3.6.1.4.1.9.9.13.1.5.1.2 - ciscoEnvMonSupplyStatusDescr

                  1 of 1 people found this helpful
                    • Re: ASA Hardware Monitor
                      lll8lll

                      Yes you do, and it is very annoying, because it has never worked, and probably never will, as it is not the way hardware MIBs are implemented on ASA.

                      People have asked Solarwinds to support ASA for many many years, but you keep blaming cisco.

                       

                      ASA use 1.3.6.1.2.1.99.1.1.1.1 - entPhySensortype

                       

                      We monitor our ASA hardware health with UnDP pollers, and get all info which is relevant to us with the following list of pollers:

                       

                      1.3.6.1.2.1.99.1.1.1.1 - entPhySensortype

                      entPhySensortype

                       

                      1.3.6.1.2.1.99.1.1.1.4 - entPhySensorUnitsdisplay

                      The most recent measurement obtained by the agent for this

                      sensor.

                       

                      1.3.6.1.2.1.99.1.1.1.6

                      A textual description of the data units that should be used

                      in the display of entPhySensorValue.

                       

                      1.3.6.1.2.1.47.1.1.1.1.7

                      The textual name of the physical entity. The value of this

                      object should be the name of the component as assigned by

                      the local device and should be suitable for use in commands

                       

                      1.3.6.1.4.1.9.9.745.1.1.1.5

                      This object indicates the result of the most

                      recent evaluation of the threshold.

                       

                      1.3.6.1.4.1.9.9.745.1.1.1.2

                      This object specifies the severity of this threshold.

                       

                      For cluster information (which unit is active/standby etc) we use:

                      1.3.6.1.4.1.9.9.147.1.2.1.1.1.4

                      A detailed textual description of the current status of

                      the resource which may provide a more specific description

                      than cfwHardwareStatusValue.

                       

                      1.3.6.1.4.1.9.9.147.1.2.1.1.1.2

                      A detailed textual description of the resource

                      identified by cfwHardwareType.

                       

                      1.3.6.1.4.1.9.9.147.1.2.1.1.1.3

                      This object contains the current status of the resource.

                       

                      Combined in a CustomQuery recource with a whole lot of SQL we get:

                       

                       

                      and:

                       

                       

                      If ANYONE has gotten hardware status for ASA  with Solwarwinds outofthe box pollers ANYTIME, I would be VERY interrested i knowing about it, and how to do it.

                      5 of 5 people found this helpful
                        • Re: ASA Hardware Monitor
                          Malik Haider

                          Thank you @lll8lll

                           

                          Very interesting,  thank you for sharing the valuable information with us i am sure PM will be notified on this as well . 

                           

                          Would it also be possible for you to provide the Custom SQL query where you are using to combine this will help us to use as a work around for the others ?

                            • Re: ASA Hardware Monitor
                              lll8lll

                              I did post it in a similar discussion, but I don t find it on the fly, so here is a repost:

                               

                              (You have to change the GUID of the custompollers to the GUID of your own custompollers, as they are assigned by the system when you create a UnDP poller)

                               

                              ***********************************SQL 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='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

                               

                               

                              ***********************************SQL 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='580A4093-7D89-4A78-BC6B-7190CD48F999') 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='27B3BF20-62AF-41B4-BA69-022311492556') 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='A4B69CD6-8A9D-469D-8AFD-221EAC5CF46D') AND (CA.NodeID=${NodeId})
                              ) State_raw ON (State_Raw.RowID=Caption_Values.RowID) AND (State_Raw.NodeID=Caption_Values.NodeID)

                              WHERE NodeId=${NodeId}

                              1 of 1 people found this helpful
                            • Re: ASA Hardware Monitor
                              mtalas

                              Thanks you for sharing this - GREAT JOB !!!

                      • Re: ASA Hardware Monitor
                        rschroeder

                        The problem is resolved with newer code--all you should have to do is upgrade your ASA to a newer release:

                         

                        2 of 2 people found this helpful
                        • Re: ASA Hardware Monitor
                          tkercher

                          I followed lll8lll 's instructions and it worked like a charm.  Only thing I don't like is the custom query shows up on all devices (blank on non-ASA devices).  But this is pretty minor compared to not monitoring ASA hardware.  Thanks lll8lll

                          • Re: ASA Hardware Monitor
                            tkercher

                            lll8lll can you provide a brief process for creating a separate view on a per-device basis?  I was trying to figure this out yesterday, but wasn't able.  Thanks

                              • Re: ASA Hardware Monitor
                                lll8lll

                                Under Settings you have "Manage Views" here you can create new views (i.e.  a copy of the standard summary view but with the CustomQuery)

                                Under "Views by Device Type" you can select the standard view for each device type.

                                 

                                NOTE: We just upgraded to  NPM 12.01 and I see now that after the upgrade, the menu on the "Manage Views" are FUBAR. They may still work, but they

                                are not easy to interpret. Before the upgrade it was very easy to manage views.

                                  • Re: ASA Hardware Monitor
                                    kcgsimpson

                                    thank you very much for the sql on how to create custom hardware monitoring.  I have an issue with regards to the status of the icons,  all i can ever get is red icons, I can display the name of the sensor and its current value and also the type of sensor.  I saw your origional post with the oids you created,  would you be able to share the configuration you used for the pollers to variables used in the sql ie OID to Variable.  many thanks