Quantcast
Channel: THWACK: Document List - Network Performance Monitor
Viewing all 1956 articles
Browse latest View live

Using Your Custom HTML Resource To Properly Display SWQL Query Results


Time Zone Clocks using javascript

Last X Days Node Outage Tracker

$
0
0

Just wanted to post this in case it would be useful for any one here.

 

This is a SWQL query that can be used for a dashboard to have all node outages listed with start and end times as well as total downtime.

 

SELECT    ST.Nodes.Caption AS [Device], --Device Name        '/Orion/images/StatusIcons/Small-' + ST.Nodes.StatusIcon AS [_IconFor_Device], --Status Icon for device        ST.nodes.detailsurl as [_linkfor_Device], --Link for Device    TOLOCAL(ST.EventTime) AS [Down Event], --Time Device went Down    TOLOCAL(ET.EventTime) AS [Up Event], --Time Device went Up    CONCAT(--Downtime formatted        (CASE WHEN (SECONDDIFF(ST.EventTime,ISNULL(ET.EventTime, GETUTCDATE()))/60/60/24) >= 1 --Days            THEN CONCAT(SECONDDIFF(ST.EventTime,ISNULL(ET.EventTime, GETUTCDATE()))/60/60/24, 'd ') ELSE '' END),        (CASE WHEN (SECONDDIFF(ST.EventTime,ISNULL(ET.EventTime, GETUTCDATE()))/60/60) >= 1 --Hours            THEN CONCAT(SECONDDIFF(ST.EventTime,ISNULL(ET.EventTime, GETUTCDATE()))/60/60%24, 'h ') ELSE '' END),        (CASE WHEN (SECONDDIFF(ST.EventTime,ISNULL(ET.EventTime, GETUTCDATE()))/60) >= 1 --Minutes            THEN CONCAT(SECONDDIFF(ST.EventTime,ISNULL(ET.EventTime, GETUTCDATE()))/60%60, 'm ') ELSE '' END),        (CASE WHEN (SECONDDIFF(ST.EventTime,ISNULL(ET.EventTime, GETUTCDATE()))) >= 1 --Seconds            THEN CONCAT(SECONDDIFF(ST.EventTime,ISNULL(ET.EventTime, GETUTCDATE()))%60, 's ') ELSE '' END)) AS [Downtime]
FROM    Orion.Events AS ST --Get StartTime on Events
LEFT JOIN    Orion.Events AS ET ON ET.NetObjectID = ST.NetObjectID --Match Events with the next UP event after the DOWN event        AND ET.EventTime = (SELECT TOP 1 x.EventTime FROM Orion.Events AS [x] WHERE                                x.EventTime >= ST.EventTime AND x.EventType = 5                                AND x.NetObjectType = 'N' AND x.NetObjectID = ST.NetObjectID                                ORDER BY x.EventTime) --SubQuery to get the next UP Event for the current device
WHERE    ST.EventType = 1 --DownEvent    AND ST.NetObjectType = 'N' --Node Events    AND DAYDIFF(ST.eventtime,GETUTCDATE()) < 30 --Get Last X days    AND ST.Nodes.CustomProperties._DeviceType = 'Branch Router' --Branch routers only    AND ST.Nodes.Status <> 9 --Status is not unamanaged    --AND ST.Nodes.caption like '%${SEARCH_STRING}%' --Used if search enabled
ORDER BY    [Down Event] DESC --Sort by most recent down event

 

 

If there are any questions or any improvements I could make please feel free to share.

Cisco ARP Table

Viptela_CPU&Memory

Network Monitoring: Everything you need to know

$
0
0

Most networks are monitored, but it seems that many people don’t understand the full value and importance of network monitoring software. Below are a few tips that will help you make the most out of your network monitoring efforts.

Monitor as much as you can

Most network devices are monitored by SNMP, which makes it easier to retrieve data from a network device if your monitoring systems is capable of SNMP polling. If you add in as many network devices as possible, you’ll have the ability to start building up a large awareness of how your network is doing, providing a complete view of capacity or any hot spots in your network.

Graph all the interfaces, alert on some and value your alerts

It’s important to monitor everything, but let’s be sensible here, no one wants to see a SMS every time a user reboots their PC. Add some value to your alerting by customizing alerts to only highlight issues when it is relevant. Some strategies to consider include alerting when an uplink fails on a switch or look at supressing alerts when a larger failure happens to avoid your phone receiving 200 SMS’s.

Do it once, do it right

One of the best ways you can save time in your day is by standardization. Try using templates to standardize your monitoring roll out, making sure that each host is monitored with the same series of checks. This will also make it a lot easier to roll out new checks and metrics when required.

Download Monitoring Software

 

 

More than just utilization and events

Most enterprise grade switches offer some form of flow collection. Don’t miss out on this capability. Look at using those flows with some form of network analyzer package to give you a clear view of what traffic is crossing your network in a way that port counters just don’t provide. The value of any flow based monitoring will pay off tenfold when you have a slowdown or a DDoS, and you can see exactly where the problem lies.

Download monitoring software and demonstrate your success though reporting

If you take advantage of the above advice, this final tip will allow you to show off a bit. Start collecting uptime statistics and present the data to your managerial team. Stakeholders are always happy to see a report that says 100% availability this month, as it means that the IT operations teams are doing their jobs well.

Cisco Hardware report with Serial Numbers

NPM 2019.4 IS NOW GENERALLY AVAILABLE!

$
0
0

It is my pleasure to announce that Network Performance Monitor (NPM) 2019.4 is now available and can be downloaded from the Customer Portal.

 

Note that we've changed the version numbering with this release. This and future releases will follow a "year.quarter" numbering system instead of the previous (12.5) system.

 

What's New in NPM 2019.4?

 

  • Device View - Visually display your network switches on Cisco 2960 and Juniper devices to check port status, utilization, and position from the Orion Web Console.
  • Real-time Charts - Display real-time data with new dashboard widgets:
    • CPU Load and Memory Utilization on Node Details.
    • Percent Utilization on Interface Details.
  • Performance Improvements - Check out the improved load times for widgets.
  • Updated Localization - Improved support for German and Japanese languages.
  • Improved Port-type Mapping - Discover port types with more accuracy.

 

Device View

 

Device View allows you to see the physical layout of your network switch's interfaces (except management or console) in order to check port status, utilization, and position from the Orion Web Console. It is being released in NPM 2019.4 as a "technical preview", meaning we haven't added enough functionality to deem it a full-fledged feature. In this case, the limiting factor comes in the form of vendor support.

 

NPM 2019.4 includes Device View support for the majority of switches in the following families (provided they're not in a "stacked" configuration):

  • Cisco Catalyst 2960
  • Cisco Catalyst 2960L
  • Cisco Catalyst 2960S
  • Cisco Catalyst 2960X
  • Cisco Catalyst 2960XR
  • Juniper EX2200
  • Juniper EX3300

 

In order for Device View to be available in the web console, the supported switch will need to be monitored as an SNMP node.

 

Once monitored, you'll be able to access the new subview from the Node Details page.

 

Device View can be filtered using the filter list on the left side of the page. Currently, you can filter the interfaces based on status. Interfaces that do not match the selected filters become opaque.

Device View also provides a side panel with additional interface details. This is not visible by default. To view the side panel, click on any interface in the Device View stencil. The side panel displays the caption of the interface, it's IP address, MAC address, duplex mode, and more.

 

 

Real-Time Charts

 

With NPM 2019.4, we're also releasing our first set of widgets that provide real-time data!

 

Real-time CPU Load & Memory Usage will now appear by default in the top-right position of the Node DetailsVital Stats page.

 

 

Real-time interface Percent Utilization will similarly appear in the top-right position of the Interface DetailsSummary page.

 

These charts can also be added via the Add Widget panel on other appropriate views.

 

The Chart Refresh Time update interval for real-time data charts is set to 2 seconds by default. This can be changed in two ways:

 

  • Via the Web Console Settings page:

  • Via the Advanced Configuration page:

 

The polling settings are tied to PerfStack, and can be adjusted on the Advanced Configuration page in PerfStack settings.

 

Improved Port Type Mapping

 

This feature provides information which can be used for filtering interfaces by port type during the discovery process. The changes we've made are primarily on the backend, but you may notice some minor UI tweaks.

 

 

Performance Improvements

 

NPM 2019.4 includes many improvements to web performance. We think you'll notice a difference in how fast the pages load.

 

 

Updated Localization

 

NPM 2019.4 includes improved support for the Japanese and German languages.

 

 

What now?

Looking for more information on what we'll be working on now that 2019.4 is out the door? Take a look at What We're Working On. Don't see what you're looking for? Advocate your needs with a Feature Request.


Custom resource SWQL/SQL extraction (sql)

$
0
0

There was a situation where I needed to extract the swql/sql from pages which didn't load.

 

It look a bit of doing, but it was a simple matter of searching for the name of the view/resource and dump the data.

I tried to do in SWQL, but could find the "ResourceProperties" in SWQL.

 

SELECT v.ViewGroupName, v.ViewTitle

,r.ResourceTitle, rp.PropertyName, rp.PropertyValue

  FROMViews v

  join Resources r on r.ViewID = v.ViewID

  join ResourceProperties rp on rp.ResourceID=r.ResourceID

  where rp.PropertyName in('sql','swql')and ViewGroupName like'%LookAtMe%'

  --where rp.PropertyName in('sql','swql') and r.ResourceTitle like '%Cleanup%'

 

This is just something useful to have in the toolbox. 

 

Amit

Using Your Custom HTML Resource To Properly Display SWQL Query Results

Volume Usage Spike Detection Alert

Node Downtime with Duration and Minimum Length Filtering

$
0
0

**REQUIRES ORION PLATFORM 2018.2 OR ABOVE**

 

I had assembled this based on a much older SQL report, and then updated it to SWQL, then added some more intelligence to it so you can filter it based on the duration of the outage, search by the device names, and it has a method of letting you know when nodes have been down so long they aged out of the events table.

 

Based on popular requests I figured it was time to put it out here to make it easier for the Thwackers to find and use.  This is intended to be used inside the Custom Query Resource


 

select n.caption as [Device]
-- shows the current status icon
, '/Orion/images/StatusIcons/Small-' + n.StatusIcon AS [_IconFor_Device]
-- makes a clickable link to the node details
, n.DetailsUrl as [_linkfor_Device]
-- shows the timestamp of the down event, if there is no timestamp then is says the event was greater than the number of days in your event retention settings
, isnull(tostring(t2.[Down Event]),concat('Greater than ',(SELECT CurrentValue FROM Orion.Settings where settingid='SWNetPerfMon-Settings-Retain Events'),' days ago')) as [Down Event]
-- shows the timestamp of the up event, unless the object is still down
, isnull(tostring(t2.[Up Event]),'Still Down') as [Up Event]
-- figures out the minutes between the down and up events, if the object is still down it counts from the down event to now, displays 99999 if we cannot accurately determine the original downtime, and 
, isnull(MINUTEDIFF(t2.[Down Event], isnull(t2.[Up Event],GETDATE())),99999) as Minutes


from orion.nodes n
left join (SELECT    
 -- Device nodeid used for our join   
 StartTime.Nodes.NodeID     

 -- Down Event time stamp in local time zone    
 ,ToLocal(StartTime.EventTime) AS [Down Event]      
 -- Up Event time stamp in local time zone    
 ,(SELECT TOP 1    
 ToLocal(EventTime) AS [EventTime]    
 FROM Orion.Events AS [EndTime]    
-- picks the first up event that is newer than the down event for this node
 WHERE EndTime.EventTime >= StartTime.EventTime   
-- EventType 5 is a node up 
 AND EndTime.EventType = 5    
 AND EndTime.NetObjectID = StartTime.NetObjectID    
 AND EventTime IS NOT NULL    
 ORDER BY EndTime.EventTime    
 ) AS [Up Event]      
-- This is the table we are querying    
FROM Orion.Events StartTime      
-- EventType 1 is a node down
WHERE StartTime.EventType = 1        
) t2 on n.NodeID = t2.nodeid


-- this is how I catch nodes that are down but have aged out of the events table
where (n.status = 2 or t2.nodeid is not null)


-- If you want to filter the results to only show outages of a minimum duration uncomment the below line
--and MINUTEDIFF(isnull(t2.[Down Event],(GETUTCDATE()-30)), isnull(t2.[Up Event],GETUTCDATE())) >  60


-- if you want to use this query in a search box of the Custom Query resource uncomment the below line
--and n.Caption like '%${SEARCH_STRING}%'


order by t2.[down event] desc

 

-Marc Netterfield

    Loop1 Systems: SolarWinds Training and Professional Services

How to create a report displaying the Last Time Data was Transmitted or Received on a Switch Port

$
0
0

First off, there's a great thread with XML language that creates a new Report for this that can be imported into your SW here:  How to find ports which have not been used for a long time ?

 

Also, check this search out for other threads containing "Last  & Transmitted":  https://thwack.solarwinds.com/search.jspa?q=last+transmitted

 

 

The process below is what I built for my team's use, since the above XML report provided information for too many kinds of ports and systems.  The method I use allows you to focus on a specific switch, and it eliminates reporting on some ports that I know will always be out of scope for discovering patched copper ports for reuse (like fiber uplink ports and port-channels or local Fa0 ports).

 

Start off in Settings, Admin > Alerts & Reports, Create New Report

Click the small blue "Edit" just to the right of Datasource 1 and make it look like this:

Adjust the items above to match your specific needs and then click Add to Layout.

 

What the filtered options mean:

  • As you can see from the first entry (Caption contains "Insert Switch Name") this particular report will focus solely on a specific switch.  You don't have to include this if you don't want, and you could change it to identify a switch by whatever method you prefer--or drop it entirely.
  • Solarwinds NPM may discover Cisco interfaces that are "Controlled" and "Uncontrolled" for security options (depending on IOS release and hardware platform); since these interfaces are duplicates to the physical interfaces, I don't want them included in the report, so I had it filter any interface with "ontrol" in its name.
  • I'm not interested in Port-channels, therefore that's filtered out.
  • I don't want any port whose status is "Up".
  • It must be a Physical Interface, not a virtual or logical one.
  • Don't report on Ten Gig interfaces ("Interface Name does not start with Te")
  • Don't report on interfaces ending in 49-52--those are uplink fiber links on my switches, and I'm not looking for information about those in this report.  I only want to know about copper ports that can be unpatched & reused.
  • Don't report on the Fa0 port if one is present

 

Click Edit Table

Adjust these items per your specific needs and click Submit

 

I put a note it to remind my Team to change the switch name inside the report:

Click Next

 

Put helpful information in the Report Description, Click Next.

 

 

Schedule if it needed:

Click Next

 

 

Review the setup and make any changes required:

Click Submit.

 

 

Now select the report, edit it to report on the specific switch, save it and run it. You'll get a report that sorts from the ports longest down to those most recently down, looking like this:

 

I export this to .PDF and send it to my Network Technicians for unpatching of ports on switches they're concerned with.

 

Enjoy!

 

 

(Updated 20190905 Rick Schroeder)

Disk / Volume / RAM / Memory Calculation

$
0
0

Here is the calculation for the Disk / Volume / RAM /below and example.

What object IDs (OIDs) does Orion NPM poll for volume information? What types of volume information does Orion NPM poll?

http://knowledgebase.solarwinds.com/kb/questions/1194/What+object+IDs+%28OIDs%29+does+Orion+NPM+poll+for+volume+information%3F+What+types+of+volume+information+does+Orion+NPM+poll%3F

 

 

Linux / Unix based Systems

 

disknew.jpg

 

You can run the MIB Walk for the Node in Question in order to find out what values been returned by the Node for required OID's as below.

Here is MIB walk tool details

Running SNMPWalk

 

 

******** MIb Walk Result from the Node **********

 

.1.3.6.1.2.1.25.2.3.1.3.1 = String: "Physical RAM"

.1.3.6.1.2.1.25.2.3.1.3.2 = String: "Virtual Memory"

.1.3.6.1.2.1.25.2.3.1.3.3 = String: "/"

.1.3.6.1.2.1.25.2.3.1.3.4 = String: "/proc"

.1.3.6.1.2.1.25.2.3.1.3.5 = String: "/dev/pts"

.1.3.6.1.2.1.25.2.3.1.3.6 = String: "/proc/bus/usb"

.1.3.6.1.2.1.25.2.3.1.3.7 = String: "/partB"

.1.3.6.1.2.1.25.2.3.1.3.8 = String: "/common"

.1.3.6.1.2.1.25.2.3.1.3.9 = String: "/grub"

.1.3.6.1.2.1.25.2.3.1.3.10 = String: "/dev/shm"

.1.3.6.1.2.1.25.2.3.1.3.11 = String: "/spare"

.1.3.6.1.2.1.25.2.3.1.3.12 = String: "/proc/sys/fs/binfmt_misc"

.1.3.6.1.2.1.25.2.3.1.4.1 = INTEGER: 4096

.1.3.6.1.2.1.25.2.3.1.4.2 = INTEGER: 4096

.1.3.6.1.2.1.25.2.3.1.4.3 = INTEGER: 4096

.1.3.6.1.2.1.25.2.3.1.4.4 = INTEGER: 4096

.1.3.6.1.2.1.25.2.3.1.4.5 = INTEGER: 4096

.1.3.6.1.2.1.25.2.3.1.4.6 = INTEGER: 4096

.1.3.6.1.2.1.25.2.3.1.4.7 = INTEGER: 4096

.1.3.6.1.2.1.25.2.3.1.4.8 = INTEGER: 4096

.1.3.6.1.2.1.25.2.3.1.4.9 = INTEGER: 1024

.1.3.6.1.2.1.25.2.3.1.4.10 = INTEGER: 4096

.1.3.6.1.2.1.25.2.3.1.4.11 = INTEGER: 4096

.1.3.6.1.2.1.25.2.3.1.4.12 = INTEGER: 4096

.1.3.6.1.2.1.25.2.3.1.5.1 = INTEGER: 1021591

.1.3.6.1.2.1.25.2.3.1.5.2 = INTEGER: 512034

.1.3.6.1.2.1.25.2.3.1.5.3 = INTEGER: 4232703

.1.3.6.1.2.1.25.2.3.1.5.4 = INTEGER: 0

.1.3.6.1.2.1.25.2.3.1.5.5 = INTEGER: 0

.1.3.6.1.2.1.25.2.3.1.5.6 = INTEGER: 0

.1.3.6.1.2.1.25.2.3.1.5.7 = INTEGER: 4232699

.1.3.6.1.2.1.25.2.3.1.5.8 = INTEGER: 17502476

.1.3.6.1.2.1.25.2.3.1.5.9 = INTEGER: 252879

.1.3.6.1.2.1.25.2.3.1.5.10 = INTEGER: 510795

.1.3.6.1.2.1.25.2.3.1.5.11 = INTEGER: 8468466

.1.3.6.1.2.1.25.2.3.1.5.12 = INTEGER: 0

.1.3.6.1.2.1.25.2.3.1.6.1 = INTEGER: 447260

.1.3.6.1.2.1.25.2.3.1.6.2 = INTEGER: 52

.1.3.6.1.2.1.25.2.3.1.6.3 = INTEGER: 2837178

.1.3.6.1.2.1.25.2.3.1.6.4 = INTEGER: 0

.1.3.6.1.2.1.25.2.3.1.6.5 = INTEGER: 0

.1.3.6.1.2.1.25.2.3.1.6.6 = INTEGER: 0

.1.3.6.1.2.1.25.2.3.1.6.7 = INTEGER: 2736606

.1.3.6.1.2.1.25.2.3.1.6.8 = INTEGER: 7646375

.1.3.6.1.2.1.25.2.3.1.6.9 = INTEGER: 4303

.1.3.6.1.2.1.25.2.3.1.6.10 = INTEGER: 5422

.1.3.6.1.2.1.25.2.3.1.6.11 = INTEGER: 8256

 

 

 

 

****************** Physical Disks ******************

 

hrStorageDescr = .1.3.6.1.2.1.25.2.3.1.3.3 = String: "/"

hrStorageAllocationUnits=   .1.3.6.1.2.1.25.2.3.1.4.3 = INTEGER: 4096

hrStorageSize .1.3.6.1.2.1.25.2.3.1.5.3 = INTEGER: 4232703

hrStorageUsed = .1.3.6.1.2.1.25.2.3.1.6.3 = INTEGER: 2837178

 

Calculations :

 

Volume size       4232703 x 4096  17337151488 Bytes   16.146 GB

Volume used       2837178 x 4096  11621081088 Bytes   10.822 GB

space available   17337151488 - 11621081088 = 5716070400 5.323 GB .

 

Percentage        10.8/16.14 * 100 65%

 

****************************************************

hrStorageDescr = .1.3.6.1.2.1.25.2.3.1.3.1 = String: "Physical RAM"

hrStorageAllocationUnits= .1.3.6.1.2.1.25.2.3.1.4.1 = INTEGER: 4096

hrStorageSize    .1.3.6.1.2.1.25.2.3.1.5.1 = INTEGER: 1021591

hrStorageUsed = .1.3.6.1.2.1.25.2.3.1.6.1 = INTEGER: 447260

 

 

Calculations : Physical RAM

 

Volume size       1021591 x 4096  4184436736 Bytes       3.897 GB

Volume used       447260 x 4096   1831976960 Bytes       1.706 GB

space available   1831976960 - 4184436736 = 2352459776     2.1 GB

 

Percentage        1.706/3.897 * 100 43%

 

 

*********************************************************

hrStorageDescr = .1.3.6.1.2.1.25.2.3.1.3.2 = String: "Virtual Memory"

hrStorageAllocationUnits= .1.3.6.1.2.1.25.2.3.1.4.2 = INTEGER: 4096

hrStorageSize    .1.3.6.1.2.1.25.2.3.1.5.2 = INTEGER: 512034

hrStorageUsed = .1.3.6.1.2.1.25.2.3.1.6.2 = INTEGER: 52

 

Calculations : Virtual Memory

 

Volume size       512034 x 4096  2097291264 Bytes   1.953 GB

Volume used       52 x 4096 212992 Bytes           0.0001 GB

space available   212992 - 2097291264 = 2097078272  1.953 GB .

 

Percentage 0.0001/1.953 * 100 0.0%

 

///////////////////////////////////////////////////////////////

Adding Few more explanation here for Cisco Call Manager Showing 99% Memory Utilization in Orion .( just in case someone having this issue )

 

CallManager.png

 

The reason you are seeing 99% is due to the Cisco MCS returning back those values.

Why its doing this, you have to Open Cisco TAC.

NPM is returning back the values its being supplied with, in this case showing 99%.

Poller type: Used .

  1. N.Memory.SNMP.CpqHostPhysicalMemory =

 

Memory poller for OpenVMS systems which support proprietary CPQ-Host MIB

Poller utilizes GetSubtree request with two OIDs to gather total and used memory:

            cpqHoPhysicalMemorySize = 1.3.6.1.4.1.232.11.2.13.1.

            cpqHoPhysicalMemoryFree = 1.3.6.1.4.1.232.11.2.13.2.

 

Total memory is computed using this formula:

            memoryTotal = cpqHoPhysicalMemorySize * 1024

Used memory is computed using this formula:

            memoryUsed = memoryTotal - (cpqHoPhysicalMemoryFree * 1024)

 

 

MIB Walk shows:

            .1.3.6.1.4.1.232.11.2.13.1.0 = INTEGER: 3990 = cpqHoPhysicalMemorySize

            .1.3.6.1.4.1.232.11.2.13.2.0 = INTEGER: 60 = cpqHoPhysicalMemoryFree

 

 

memoryTotal = 3990 * 1024 = 4085760

memoryUsed = 4085760 - (60 * 1024) = 4085760 – 61440 = 4024320

PercentUsed = 4024320/4085760 = 98.496% = 99%

 

 

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

For Linux Server for Poller assigned N.Memory.SNMP.NetSnmpReal

memory .JPG

 

If poller assigned

N.Memory.SNMP.NetSnmpReal

 

/// memTotalReal = 1.3.6.1.4.1.2021.4.5.
/// memAvailReal = 1.3.6.1.4.1.2021.4.6.
/// memCached = 1.3.6.1.4.1.2021.4.15.
/// memBuffer = 1.3.6.1.4.1.2021.4.14.
/// UsedMemory = (totalMem - availMem - cachedMem - bufferMem) * 1024

.1.3.6.1.4.1.2021.4.5.0 = INTEGER: 2073620 (Total )

.1.3.6.1.4.1.2021.4.6.0 = INTEGER: 1869968 (Available )

.1.3.6.1.4.1.2021.4.15.0 = INTEGER: 88008 (cachedMemory )

.1.3.6.1.4.1.2021.4.14.0 = INTEGER: 51868 (BufferMemory )

( 207362018699688800851868 ) = 63776  

63776 * 1024 = 65306624 bytes

 

 

--- Another Example ----

 

Yellow - Working SNMPWALK (supported net-snmp version)

Green - NON Working SNMPWALK (NON supported net-snmp version)

 

memTotalReal

.1.3.6.1.4.1.2021.4.5.0

1997828

4053

memAvailReal

.1.3.6.1.4.1.2021.4.6.0

19736

0

memCached

.1.3.6.1.4.1.2021.4.15.0

1216472

0

memBuffer

.1.3.6.1.4.1.2021.4.14.0

73948

0

Total Used

687672

4053

Total Used x 1024

704176128

4150272

% used

  1. 34.42098119

100

ssCPUIdle

.1.3.6.1.4.1.2021.11.11.0

83

9

SSCPURAWIDLE

.1.3.6.1.4.1.2021.11.53.0

1253793743

1833365114

 

********************

Vmware ESX Memory Calculation

 

console.PNG

 

memoryg.PNG

Supported Poller

pollers.PNG

 

The "Memory" Usage and the "Physical Memory" Utilization are calculated differently by Orion NPM.

Memory:

The Memory is the sum of the memory used by the processes listed in the HOST-RESOURCES-MIB:hrSWRunPerfTable (1.3.6.1.2.1.25.5.1).

The OID used is the hrSWRunPerfMem (1.3.6.1.2.1.25.5.1.1.2).

 

 

Physical Memory:

The Physical Memory is calculated based on the values populated in the HOST-RESOURCES-MIB:hrStorageTable (1.3.6.1.2.1.25.2.2.3).

The OIDs used are hrStorageSize (1.3.6.1.2.1.25.2.3.1.5), hrStorageUsed (1.3.6.1.2.1.25.2.3.1.6) and hrStorageAllocationUnits (1.3.6.1.2.1.25.2.3.1.4) .

 

 

 

Cisco ASA

 

Cisco ASR Poller

 

ASR poller:

 

/// Poller utilizes GetSubtree request to gather used memory using OID:
  /// CpmCpuMemoryUsed= 1.3.6.1.4.1.9.9.221.1.1.1.1.18
  /// Poller utilizes GetSubtree request to gather free memory using OID:
  /// CpmCpuMemoryFree= 1.3.6.1.4.1.9.9.221.1.1.1.1.20
  /// Used memory is computed as SUM of all ciscoMemoryPoolUsed returned values.
  /// Free memory is computed as SUM of all ciscoMemoryPoolFree returned values.
  /// Total memory is computed as SUM of used and free memory.

Consolidated Node Issues Panel

$
0
0

 

One of my SolarWinds priorities is displaying as much actionable information as possible without burning up half the screen with empty panels. This panel has been through a number of revisions, but is (more or less) useful now. This SWQL Custom Query creates a panel that consolidates:

  1. Nodes with High Packet Loss
  2. Nodes with High Response Time
  3. Nodes with High Average CPU Load
  4. Volumes with High Percentage Usage
  5. Nodes with High Memory Utilization

 

Clicking on the issue opens up a 7 day perfstack analysis. Clicking/Hovering over the node name works as you would expect.

 

It is also searchable by node name or issue name (packet loss, response time, high cpu, cpu load, disk space, memory used).

 

I hope people find this useful. It saves a ton of space on our NOC display.

 

--
-- Node Issues Panel - SWQL Custom Query Resource
--   3-Jan-2020 Christopher Camacho
--
-- Conserve screen space by consolidating 5 panels into 1
--  * Nodes with High Packet Loss
--  * Nodes with High Response Time
--  * Nodes with High Average CPU Load
--  * Volumes with High Percentage Usage
--  * Nodes with High Memory Utilization
--
-- Click/Hover on Node Name for Node Details
-- Click on Issue to open PerfStack Analysis (7 Days)
-- Search by Node Name or Issue (Packet Loss, Response Time, High CPU, CPU Load, Disk Space, Memory Used)
--

-- DISK SPACE BLOCK
SELECT N0.Caption AS [Node],
    N0.DetailsUrl AS [_LinkFor_Node],    '/Orion/images/StatusIcons/Small-'+N0.StatusIcon AS [_IconFor_Node],    ' '+toString(Round(ov.VolumePercentUsed,0))+'% '+ov.Caption AS [Issue],    '/ui/perfstack/?presetTime=last7Days&charts=0_Orion.Volumes_'        +toString(ov.VolumeID)+'-Orion.VolumeUsageHistory.PercentDiskUsed;'        AS [_LinkFor_Issue],    CASE        WHEN (ov.VolumePercentUsed>=ov.ForecastCapacity.CriticalThreshold)            THEN '/Orion/HardwareHealth/Images/StatusIcons/Object-Sensor_FileServer-Critical.png'        WHEN (ov.VolumePercentUsed>=ov.ForecastCapacity.WarningThreshold)            THEN '/Orion/HardwareHealth/Images/StatusIcons/Object-Sensor_FileServer-Warning.png'        ELSE '/Orion/HardwareHealth/Images/StatusIcons/Object-Sensor_FileServer-Up.png'    END AS [_IconFor_Issue]    FROM Orion.Volumes ov        LEFT JOIN Orion.Nodes AS N0 ON N0.NodeID=ov.NodeID        WHERE N0.UnManaged=FALSE AND            (ov.VolumePercentUsed>=ov.ForecastCapacity.WarningThreshold)
-- Uncomment the next line when enabling search
--            AND ('Disk Space' LIKE '%${SEARCH_STRING}%' OR ov.Caption LIKE '%${SEARCH_STRING}%' OR N0.Caption LIKE '%${SEARCH_STRING}%')

-- BEGIN PACKET LOSS BLOCK
UNION
(
    SELECT N0.Caption AS [Node],    N0.DetailsUrl AS [_LinkFor_Node],    '/Orion/images/StatusIcons/Small-'+N0.StatusIcon AS [_IconFor_Node],    ' '+toString(N0.PercentLoss)+'% Packet Loss' AS [Issue],    '/ui/perfstack/?context=0_Orion.Nodes_'+toString(N0.NodeID)        +'&withRelationships=true&presetTime=last7Days&charts=0_Orion.Nodes_'        +toString(N0.NodeID)+'-Orion.ResponseTime.PercentLoss;'        AS [_LinkFor_Issue],    CASE        WHEN (N0.PercentLoss>=N0.PercentLossThreshold.Level2Value)            THEN '/Orion/HardwareHealth/Images/StatusIcons/Object-Sensor_Generic-Critical.png'        WHEN (N0.PercentLoss>=N0.PercentLossThreshold.Level1Value)            THEN '/Orion/HardwareHealth/Images/StatusIcons/Object-Sensor_Generic-Warning.png'        ELSE '/Orion/HardwareHealth/Images/StatusIcons/Object-Sensor_Generic-Up.png'    END AS [_IconFor_Issue]    FROM Orion.Nodes N0        WHERE N0.UnManaged=FALSE AND N0.External=FALSE AND            (N0.PercentLoss>=N0.PercentLossThreshold.Level1Value)
-- Uncomment the next line when enabling search
--            AND ('Packet Loss' LIKE '%${SEARCH_STRING}%' OR N0.Caption LIKE '%${SEARCH_STRING}%')
)

-- BEGIN CPU LOAD BLOCK
UNION
(
    SELECT N0.Caption AS [Node],    N0.DetailsUrl AS [_LinkFor_Node],    '/Orion/images/StatusIcons/Small-'+N0.StatusIcon AS [_IconFor_Node],    ' '+toString(N0.CPUload)+'% CPU Load' AS [Issue],    '/ui/perfstack/?context=0_Orion.Nodes_'+toString(N0.NodeID)        +'&withRelationships=true&presetTime=last7Days&charts=0_Orion.Nodes_'        +toString(N0.NodeID)+'-Orion.CPULoad.AvgLoad;'        AS [_LinkFor_Issue],    CASE        WHEN (N0.CPUload>=N0.CpuLoadThreshold.Level2Value)            THEN '/Orion/HardwareHealth/Images/StatusIcons/Object-Sensor_CPU-Critical.png'        WHEN (N0.CPUload>=N0.CpuLoadThreshold.Level1Value)            THEN '/Orion/HardwareHealth/Images/StatusIcons/Object-Sensor_CPU-Warning.png'        ELSE '/Orion/HardwareHealth/Images/StatusIcons/Object-Sensor_CPU-Up.png'    END AS [_IconFor_Issue]    FROM Orion.Nodes N0        WHERE N0.UnManaged=FALSE            AND (N0.CPUload>=N0.CpuLoadThreshold.Level1Value)
-- Uncomment the next line when enabling search
--            AND ('CPU Load' LIKE '%${SEARCH_STRING}%' OR 'High CPU' LIKE '%${SEARCH_STRING}%' OR N0.Caption LIKE '%${SEARCH_STRING}%')
)

-- BEGIN RESPONSE TIME BLOCK
UNION
(
    SELECT N0.Caption AS [Node],    N0.DetailsUrl AS [_LinkFor_Node],    '/Orion/images/StatusIcons/Small-'+N0.StatusIcon AS [_IconFor_Node],    ' '+toString(N0.ResponseTime)+'ms Response Time' AS [Issue],    '/ui/perfstack/?context=0_Orion.Nodes_'+toString(N0.NodeID)        +'&withRelationships=true&presetTime=last7Days&charts=0_Orion.Nodes_'        +toString(N0.NodeID)+'-Orion.ResponseTime.AvgResponseTime;'        AS [_LinkFor_Issue],    CASE        WHEN N0.ResponseTime>=N0.ResponseTimeThreshold.Level2Value            THEN '/Orion/HardwareHealth/Images/StatusIcons/Object-Sensor_Switch-Critical.png'        WHEN N0.ResponseTime>=N0.ResponseTimeThreshold.Level1Value            THEN '/Orion/HardwareHealth/Images/StatusIcons/Object-Sensor_Switch-Warning.png'        ELSE '/Orion/HardwareHealth/Images/StatusIcons/Object-Sensor_Switch-Up.png'    END AS [_IconFor_Issue]    FROM Orion.Nodes N0        WHERE N0.UnManaged=FALSE AND N0.External=FALSE AND            (N0.ResponseTime>=N0.ResponseTimeThreshold.Level1Value)
-- Uncomment the next line when enabling search
--            AND ('Response Time' LIKE '%${SEARCH_STRING}%' OR N0.Caption LIKE '%${SEARCH_STRING}%')
)

--BEGIN MEMORY USED BLOCK
UNION
(
    SELECT N0.Caption AS [Node],    N0.DetailsUrl AS [_LinkFor_Node],    '/Orion/images/StatusIcons/Small-'+StatusIcon AS [_IconFor_Node],    ' '+toString(PercentMemoryUsed)+'% Memory Used' AS [Issue],    '/ui/perfstack/?context=0_Orion.Nodes_'+toString(N0.NodeID)    +'&withRelationships=true&presetTime=last7Days&charts=0_Orion.Nodes_'    +toString(N0.NodeID)+'-Orion.CPULoad.AvgPercentMemoryUsed;'        AS [_LinkFor_Issue],    CASE        WHEN N0.PercentMemoryUsed>=N0.PercentMemoryUsedThreshold.Level2Value            THEN '/Orion/HardwareHealth/Images/StatusIcons/Object-Sensor_Memory-Critical.png'        WHEN N0.PercentMemoryUsed>=N0.PercentMemoryUsedThreshold.Level1Value            THEN '/Orion/HardwareHealth/Images/StatusIcons/Object-Sensor_Memory-Warning.png'        ELSE '/Orion/HardwareHealth/Images/StatusIcons/Object-Sensor_Memory-Up.png'    END AS [_IconFor_Issue]    FROM Orion.Nodes N0        WHERE N0.UnManaged=FALSE AND            (N0.PercentMemoryUsed>=N0.PercentMemoryUsedThreshold.Level1Value)
-- Uncomment the next line when enabling search
--            AND ('Memory Used' LIKE '%${SEARCH_STRING}%' OR N0.Caption LIKE '%${SEARCH_STRING}%')
)
-- END OF BLOCKS - DO NOT DELETE/COMMENT 'ORDER BY' LINE BELOW

ORDER BY [Node], [Issue]

Custom SWQL to Manage/Display UnDP Assignments

$
0
0

Hi, all having had many useful tips and downloads from Thwack over the last few years, I thought it was time to put something back.

 

Recently I have been creating & assigning a load of UnDP's, and thought what a pain it is using the server application to view overall what is allocated, and even that is not particularly nice to use!

 

I already have a panel in all my node summary pages to display UnDP, but that is not very useful for an overall view of what is assignment or the state of all values in a UnDP group.

 

Hence, using hcy01's "CUSTOM SWQL TO MANAGE ASSIGNED APPLICATION MONITORS WITH SEARCH BAR" as a very helpful "template"(and this is a fantastic screen for SAM management that I've used for a while), I have knocked up the following screen:

 

 

 

 

 

Here is the SWQL for the top data panel (Custom Query display resource) - use same code in Custom SWQL Query and Search SWQL Query boxes , just uncomment the lines below "Search String Below" (in orange) for the search box:

 

SELECT c.Caption AS NodeName,

  '/Orion/NetPerfMon/NodeDetails.aspx?netobject=N:' + ToString(a.NodeID) AS [_LinkFor_NodeName],

  b.groupname AS UnDP_Group,

  'Edit' AS Edit,

  '/Orion/NPM/NodeCustomPollers.aspx?Nodes=' + ToString(a.NodeID) AS [_LinkFor_Edit],

  '/Orion/Nodes/images/icons/icon_edit.gif' AS [_IconFor_Edit],

  a.CustomPollerName AS UnDP_Name,

  a.CurrentValue AS Value,

  a.StatusDescription AS UnDP_Status,

  CASE

  WHEN a.Status=1  THEN '/Orion/images/StatusIcons/Small-Up.gif' 

  WHEN a.Status=9  THEN  '/Orion/images/StatusIcons/Small-Unmanaged.gif'

  WHEN a.Status=0  THEN  '/Orion/images/StatusIcons/Small-Unknown.gif'

  WHEN a.Status=12  THEN  '/Orion/images/StatusIcons/Small-Unreachable.gif'

  WHEN a.Status=3  THEN  '/Orion/images/StatusIcons/Small-Up-Warn.gif'

  WHEN a.Status=14  THEN  '/Orion/images/StatusIcons/Small-Critical.gif'

  WHEN a.Status=2  THEN  '/Orion/images/StatusIcons/Small-Down.gif'

  ELSE  '/Orion/images/StatusIcons/Small-Unreachable.gif'

  END AS [_IconFor_UnDP_Status],

  a.CustomPollerDescription AS Description_from_MIB,

  a.CustomPollerOid AS OID

 

FROM Orion.NPM.CustomPollerAssignment a

INNER JOIN Orion.NPM.CustomPollers b on a.CustomPollerID = b.CustomPollerID

INNER JOIN Orion.Nodes c on a.Nodeid = c.Nodeid

AND a.statusdescription <> 'Unmanaged'

--

-- Search String Below --

--

--WHERE UnDP_Status LIKE (CASE WHEN '${SEARCH_STRING}' LIKE 'US %' THEN SubString('${SEARCH_STRING}%',4,11) ELSE  ('dummy' + '${SEARCH_STRING}%')  END)

--     OR NodeName LIKE (CASE WHEN '${SEARCH_STRING}' LIKE 'NN %' THEN ('%' + SubString('${SEARCH_STRING}%',4,25)) ELSE  ('dummy' + '${SEARCH_STRING}%')  END)

--     OR UnDP_Group LIKE (CASE WHEN '${SEARCH_STRING}' LIKE 'UG %' THEN ('%' + SubString('${SEARCH_STRING}%',4,25)) ELSE  ('dummy' + '${SEARCH_STRING}%')  END)

--     OR Description_from_MIB LIKE (CASE WHEN '${SEARCH_STRING}' LIKE 'DE %' THEN ('%' + SubString('${SEARCH_STRING}%',4,25)) ELSE  ('dummy' + '${SEARCH_STRING}%')  END)

--     OR OID LIKE (CASE WHEN '${SEARCH_STRING}' LIKE 'OI %' THEN ('%' + SubString('${SEARCH_STRING}%',4,50)) ELSE  ('dummy' + '${SEARCH_STRING}%')  END)

--     OR Value LIKE (CASE WHEN '${SEARCH_STRING}' LIKE 'VA %' THEN ('%' + SubString('${SEARCH_STRING}%',4,50)) ELSE  ('dummy' + '${SEARCH_STRING}%')  END)

--     OR UnDP_Name LIKE '%${SEARCH_STRING}%'

--

ORDER BY UnDP_Group, Nodename

 

 

Here is the HTML for the bottom instructions panel (Custom HTML diaplay resource):

 

<p>

<table style="width: 100%" cellpadding="0" cellspacing="0">

  <tr>

  <td><font color="#0007FF">NodeName</font></td>

  <td><font color="#000000">Click to to go to Node Summary Page</font></td>

   <td><font color="#000000">UnDP_Group</font></td>

  <td><font color="#000000">Name of UnDP Group as defined in UnDP application on main polling server</font></td>

  </tr>

 

  <tr>

  <td><font color="#0007FF">Edit</font></td>

  <td><font color="#000000">Click to edit UnDP assignments for NodeName</font></td>

  <td><font color="#000000">UnDP_Name</font></td>

  <td><font color="#000000">Name of poller as defined in UnDP application on main polling server</font></td>

  </tr>

       

  <tr>

  <td><font color="#000000">Value</font></td>

  <td><font color="#000000">The current value for the UnDP as returned from SNMP query of the OID on NodeName</font></td>

  <td><font color="#000000">UnDP_Status</font></td>

  <td><font color="#000000">UnDP Status - based upon UnDP Thresholds as defined in Orion Settings</font></td>

  </tr>

 

  <tr>

  <td><font color="#000000">Description_from_MIB</font></td>

  <td><font color="#000000"> Detailed description of the OID as returned by SNMP query of MIB table on NodeName</font></td>

  <td><font color="#000000">OID</font></td>

  <td><font color="#000000"> Unique OID number used by UnDP to query NodeName MIB table</font></td>

  </tr>

 

</table>

 

<p>

<font color="#000000">Columns in</font><font color="#0007FF"> blue </font><font color="#000000">are clickable. Hold CTRL when clicking to open in a new tab, SHIFT to open in a new window.<br></font>

</p>

 

<p>

<font color="#000000">NB. UnDP pollers that return a table of values (i.e. tabular OID) cannot display their values here, though their assignments will still be shown. Click on node link to see details of values in node summary screen p.<br><br></font>

</p>

 

<p><ul>

<li>- The following columns are searchable:</li>

<ul>

<li> <b>NodeName</b>: Full or part of node name (Maximum 25 letters) </li>

<li> <b>UnDP_Group</b>: Full or part of UnDP Group name (Maximum 25 letters) </li>

<li> <b>UnDP_Name</b>: Full or part of UnDP name (Maximum 25 letters) </li>

<li> <b>Value</b>: Full or part of Value (Maximum 25 letters) </li>

<li> <b>UnDP_Status</b>: 'Up', 'Down', 'Warning', 'Critical', 'Unmanaged', 'Unknown', 'Unreachable'.</li>

<li> <b>Description_from_MIB</b>: Full or part of MIB OID Description (Maximum 25 letters).</li>

<li> <b>OID</b>: Full or part of MIB OID Number (Maximum 50 letters).</li>

</ul>

 

<li>- You can search individual columns like this:</li>

<ul>

<li> To search the <b>NodeName</b> column start your search with <b>"nn  "</b> followed by node name (full or part of node name, such as: <font color="#0007FF"> "nn mysqlserver1" or "nn mysql")</font>.</li>

<li> To search the <b>UnDP_Group</b> column start your search with <b>"ug  "</b> followed by UnDP Group name (full or part of template name, such as: <font color="#0007FF"> "ug Checkpoint_Cluster" or "ug cluster")</font>.</li>

<li> To search the <b>UnDP_Name</b> column just type full or part of UnDP name in the search box (Maximum 25 letters), such as: <font color="#0007FF"> "hastatus"</font>.</li>

<li> To search the <b>Value</b> column start your search with <b>"va  "</b> followed by value (full or part of node name, such as: <font color="#0007FF"> "va standby" or "va stand")</font>.</li>

<li> To search the <b>UnDP_Status</b> column start your search with <b>"us  "</b> followed by application status (full or part of status name, such as: <font color="#0007FF"> "us up", "us unmanaged" or "us unm")</font>.</li>

<li> To search the <b>Description_from_MIB</b> column start your search with <b>"de  "</b> followed by MIB OID description (full or part of description, such as: <font color="#0007FF"> "de power")</font>.</li>

<li> To search the <b>OID</b> column start your search with <b>"oi  "</b> followed by OID number (full or part of OID number, such as: <font color="#0007FF"> "oi 1.3.6.1.4.1.318.1.1.8.5.1.3")</font>.</li>

</ul>

 

</ul></p>

<p>An entered search will remain for as long as the browser stays open or until the search is manually cleared, even though the results refresh on a timer.</p>

 

 

I hope this is of some use (and that I have posted in the right place)!

SWQL - Active Alerts Report

Dashboard/View Search Widget

$
0
0

Since the question was brought up during SWUG NY I thought I would post this up.

 

The problem is how do you organize things when you have a large number of dashboards?

The list gets really long and it can be tedious to have to add them to all the applicable users toolbars.

This is a resource I use to make it so people can quickly find the dashboard they need without having to wade through a long list or clutter up the top menu bars too much.

 

Add this as a Custom Query resource on your users home page so they can navigate off to wherever else they want to go:

First Box

select top 1 'Enter the name of the view you are looking for.' as Message 
from orion.nodes
order by nodeid

 

 

select 
case when viewgroupname not like '' then (concat(viewgroupname,' - ', v.ViewTitle))
else Viewtitle 
end as View
, concat('/Orion/SummaryView.aspx?ViewID=',v.viewid) as [_linkfor_View]
from orion.Views v 


where v.viewtype like 'summary'
and (v.viewtitle like '%${SEARCH_STRING}%' or viewgroupname like '%${SEARCH_STRING}%')




order by v.ViewGroupName, v.ViewGroupPosition

 

 

This gives you something like this:

 

 

 

-Marc Netterfield

    Loop1 Systems: SolarWinds Training and Professional Services

Use CSS on alert solarwinds

$
0
0

Tôi muốn sử dụng CSS trên các cơn gió mặt trời cảnh báo nhưng  tôi chưa tìm được cách sử dụng CSS trên các cơn gió mặt trời cảnh báo

Time Zone Clocks using javascript

Viewing all 1956 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>