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

Custom Maps for Group Details Page

$
0
0

I have spent time with multiple customers who are looking to create custom groups, maybe in a situations such as school districts or hospital systems, and would like to have individual maps for each Group Details Page.  When adding a MAP resource to that page, it tends to use the same map across all Group Details pages…   You can get around this with the following procedure. 


 

 

  • Open any Group Details page and then click Customize Page

 

 

  • Add a Map object

         

 

  • Launch the Network Atlas Tool  (Start > All Programs > SolarWinds Orion > Alerting, Reporting, and Mapping > Orion Network Atlas


 

  • Create designated map with the exact same name as the Group you created in the previous step.  ** Any easy way to accomplish this would be to utilize custom properties. Custom Properties is one of the most handy features in Orion and can be used in all areas of the console to filter data based on the custom tags you assign to Nodes, Interface, Volumes, and more…

A video on Custom Properties as well as Utilizing the Network Atlas tool can be found in the NPM Training Series:  http://www.youtube.com/playlist?list=PLSAG2TJPvS5Y1nq9rtjcLeP1sfzpZIi8q

 

Custom Properties (Video #5) and Network Atlas (Video #10) - This is also a handy guide to utilizing some advanced features with the Network Atlas tool such as variable labels…  http://www.solarwinds.com/documentation/orion/docs/OrionNetworkAtlasAdminGuide.pdf

 

  • Back to the Group Details page where you want to add a custom map - Edit the Map object

 

 

  • Edit the Title and Subtitle if you wish.  Then in the Map Name Format Dropdown list, select ${Name} (*Not Group ${Name})

 

 

  • Again, ensure your map's name is thesame as the group name you previously created - The map will now be selected based on group name and dynamically update

 

 

***This will allow you to have specified maps for the individual Group Details Pages.


Scoreboard

$
0
0

I needed to display basic information in an easy to view/understand format for a NOC screen.  The best way that I found is by using a scoreboard.

 

1) Create custom property Count2_Up, Count3_Warning, Count4_Down.  We need this just to keep count.  A temp table can also be created.   The main purpose of this is to display the information in an Atlas Map.  There are other ways of doing this by creating the actual scoreboard and using a Custom Html to display the information.

 

2) Create an SQL job to update the CP.  This job will run every minute.  This can be done in multiple ways using the APIs.

update ncp

set  ncp.count2_up=ISNULL((select count(*) from nodes nn where status=1 ),0)

    ,ncp.Count3_Warning=ISNULL((select count(*) from nodes nn where status=3 ),0)

    ,ncp.Count4_Down=ISNULL((select count(*) from nodes nn where status=2 ),0)

from NodesCustomProperties ncp

where ncp.NodeID=1

 

Initially I did this using Alerts, since we can change CP using SQL in alert action.  But that generated too many notifications, and Orion was throttling.  This might be useful on other situations, but not this one.

3) Create Map using Atlas

4) Display the map on a NOC view

 

Works well and gives the NOC people at a glance view of nodes.   This can be expanded to other ideas, such sites, regions, SQL applications, etc (up/warn/down)

There can be other resources which spells out the down nodes with duration.  Such as this one:

SELECT

    NodeName AS [Node Name],

        '/Orion/images/StatusIcons/Small-' + StatusIcon AS [_IconFor_Node Name],

        DetailsUrl AS [_LinkFor_Node Name],

        concat(SUBSTRING(tostring(MAX(e.EVENTTIME)),1,4),SUBSTRING(tostring(MAX(e.EVENTTIME)),5,2),

        SUBSTRING(tostring(tolocal(MAX(e.EVENTTIME))),12,8)) as Downtime,

        CONCAT(HOURDIFF(max(e.eventtime),getdate())/24,' Day(s) ',

        HOURDIFF(tolocal(max(e.eventtime)),getdate())-(HOURDIFF(max(e.eventtime),getdate())/24)*24,'h ',

        MINUTEDIFF(tolocal(max(e.eventtime)),getdate())   -   (MINUTEDIFF(tolocal(max(e.eventtime)),getdate())/60)*60,'m') AS Duration,

        --MINUTEDIFF(tolocal(MAX(E.EventTime)),getdate()) as minutes_since

FROM ORION.NODES NODES

INNER JOIN ORION.EVENTS e ON NODES.NODEID = e.NETWORKNODE

WHERE STATUS = 2 and e.eventtype = 1

GROUP BY NodeName, StatusIcon, DetailsUrl

--ORDER BY minutes_since asc

 

Have Fun!!

Alerting on Volume Thresholds

$
0
0

Back in April of 2015, NPM 11.5 was released and with it came a brand new Web-based Alert Engine in the Orion Platform. At the time, and ever since, one of the most valuable capabilities of this new engine was the ability to dynamically alert on multiple objects based on their own individually assigned thresholds. Setting individual thresholds for things like CPU Utilization, Percent Memory Utilization, Packet Loss, Response Time, Interface Errors, and Interface Utilization was a game changer to a lot of alerting schemas that allowed us to reduce our custom property footprint, as well as the complexity of the alert definitions. However, a glaring "omission" was that the thresholds made available for Volumes were not presented to the alerting engine (or so we thought). This was a bit mind-boggling, and talking to other MVPs, seasoned SW Admins, and SW employees over the years, I had ever heard differently, so the assumption was cemented as a "missing item that requires a work-around". (On a side note, I am 42% sure that jbiggley was behind a very well orchestrated and elaborate trolling to keep me in the dark on this capability, but I digress...) But today, I'd like to present the solution that was hiding in the background this entire time, to save future admins the discomfort of maintaining "Disk_Crit" custom properties.

 

 

Background: Node and Interface metric thresholds are added to the alerting engine in a very intuitive way:

 

 

However, volume thresholds are obviously not:

 

 

The key was to take a step back and look at the alerting object options, there you shall find your salvation in the form of a "Volume Capacity Forecasting" object (as opposed to the intuitive "Volume" object type):

 

 

Which then presents those valuable thresholds!

 

 

From there, you need to setup a "Double Value Comparison" in the trigger:

 

 

And then create a comparison between the current and threshold values, respectively:

 

 

Which will then trigger on Volumes where their current percent utilization exceed the threshold you have defined on that specific volume:

 

 

 

For reference: thresholds are edited per object by editing the object's properties, and looking at the bottom of the page: (Pro Tip: you can edit multiple objects at once from the "Manage Nodes/Entities" page)

 

 

 

Verified via SQL search on the "VolumesForecastCapacity" view in the database:

 

 

SELECT TOP 100 * FROM VolumesForecastCapacity

 

 

 

There you have it. Happy monitoring everyone!

Volume Report - Fixed Disk - Available - Size - Used - overall volume capacity with Thresholds

$
0
0

SolarEGGs lol that always makes me laugh anyway,

 

Here is a report for a question that i wanted to answer and i know that before i post this i have wayyyyyy OVER  thought this and yea sure it can be done in the SolarWinds interface but i want to become awesome supreme SolarWinds SQL genius

 

So off we go..

the first part of this report is selecting the volume size's, volume space used, volume space available, percent used by adding them all up giving you the total volume sizes. i have based the where statement to only show vendors like Windows and select the volume type as Fixed disk thats all thats really happening here in the first part. you can indeed change the where statement to include custom properties and group your beloved nodes how every you want.

--you can edit this WHERE statement to filter the out any nodes you want to see  in the report
WHERE(n.n_customer like 'name of Customer') AND VolumeType IN('Fixed Disk', 'FixedDisk')

 

Version 1.3

***NEW***

 

Report features:

  • Report now includes THRESHOLDS per volume that will check the thresholds of your volumes and present them here.
  • Order percent used by highest first
  • clickable drives for direct volume landing page
  • clickable Nodes for direct Node landing page
  • report includes volumes, Size, Used, Available, Percent used, Warning Thresholds, Critical thresholds  
  • custom properties enabled for customer and any CP you use to group nodes

 

WHERE
-- you can change this report to only show your customers or vendors any CP you want really
(n.n_customer LIKE 'name of Customer') AND (VolumeType like 'Fix%') AND (n.Vendor like 'Windows')

 

to group the nodes simply

your end product will look like this

Simply download the attached for the two reports and one SUPER important thing to remember is

stay EGGY SolarWinds

 

please feel free to ask any questions on improvements or adjustments

credits to alexslv for the rounding and converting magic.

Pie charts using PowerShell

$
0
0

In some instances pie charts are better suited than line or bar.  And it just looks cool.     We can use the built in charting of PowerShell to query Orions's database for infomation then powershell charts to draw the pie chart.  Then use the custom html to link to the chart.  To make it dynamic, run the powershell every 5 minutes to keep the chart updated.

 

As as example, we used vendor information, but it can really be any swql query.   It also doesn't have to be a pie chart, it can be a small chart, a 3D chart, etc.

 

Add-Type-AssemblyNameSystem.Windows.Forms

Add-Type-AssemblyNameSystem.Windows.Forms.DataVisualization

$ErrorActionPreference='Stop'

 

# solarwinds access information

$hostname='1.1.1.1'

 

# load the swis snapin

if (-not (Get-PSSnapin|?{ $_.Name -ceq'SwisSnapin' })) {

    Add-PSSnapin'SwisSnapin'

}

 

# connect to the solarwinds server

#$swis = Connect-Swis -Hostname $hostname -Trusted

$swis=Connect-Swis-Hostname$hostname-Username xxxxxxx -Password yyyyyyyy

 

Get-NetIPAddress|SelectIPAddress|%{

    $query='select Vendor, count(*) as Value

from Orion.Nodes

group by Vendor'

 

    $Datas=Get-SwisData$swis$query

}

 

if (-not$Datas) {}

else {

#Write-Output ("Start Manage")

# create chart object

      $Chart=New-objectSystem.Windows.Forms.DataVisualization.Charting.Chart

      $Chart.Width =400

      $Chart.Height =400

      $Chart.Left =20

      $Chart.Top =20

# create a chartarea to draw on and add to chart

      $ChartArea=New-ObjectSystem.Windows.Forms.DataVisualization.Charting.ChartArea

      $Chart.ChartAreas.Add($ChartArea)

# add data to chart

      #$Cities = @{London=7556900; Berlin=3429900; Madrid=3213271; Rome=2726539; Paris=2188500}

      [void]$Chart.Series.Add("Data")

      $Chart.Series["Data"].Points.DataBindXY($Datas.Vendor,$Datas.Value)

      $chart.Series["Data"].ChartType ="Pie"

      $Chart.Series["Data"]["PieLabelStyle"]="Outside"

      $Chart.Series["Data"]["PieLineColor"]="Black"

      #$Chart.Series["Data"]["PieDrawingStyle"] = "Concave"

      ($Chart.Series["Data"].Points.FindMaxByValue())["Exploded"]=$true

      $Chart.Series["Data"][‘PieLabelStyle’]=‘Disabled’

      # Legend

      $Legend=New-ObjectSystem.Windows.Forms.DataVisualization.Charting.Legend

      $Legend.IsEquallySpacedItems =$True

      $Legend.BorderColor ='Black'

      $Chart.Legends.Add($Legend)

      $chart.Series["Data"].LegendText ="#VALX (#VALY)"

      # save chart to file

      $Chart.SaveImage("D:\InetPub\SolarWinds\Orion\Images\Vendor.png","PNG")

    }

 

 

 

References:

https://bytecookie.wordpress.com/2012/04/13/tutorial-powershell-and-microsoft-chart-controls-or-how-to-spice-up-your-reports/

http://www.ciprianpadurariu.ro/tag/powershell/

https://blogs.technet.microsoft.com/richard_macdonald/2009/04/28/charting-with-powershell/

https://msdn.microsoft.com/en-us/library/system.windows.forms.datavisualization.charting.chart(v=vs.110).aspx

 

Thanks

Amit

Syslog Priority Table

$
0
0

In looking at the raw syslog messages, there is a priority code which is listed as the first field (<134>).  Sometimes we need to decipher this quickly, so that we can attach a LEM connector to the proper facility.

The priority is facility*8 + severity.  So with the priority of 134, we know that the facility is 16 (local0) and severity is informational(6).

 

 

Hopefully this helps

 

Thanks

Amit

Juniper - Red Alarm Count.UnDP

Juniper - Yellow Alarm Count.UnDP


Juniper Red Chassis Alarm -- Alert

What We're Working on for NPM (Updated December 4th, 2017)

$
0
0

NPM 12.2 has shipped and we're hard at work building the next release.  Here's what we're working on, in no particularly order.

 

  • Network Insight for Cisco Nexus - Covering things like FEX, VPCs, VDCs, and better handling of large interface counts.
  • Scalability Improvements - For example, increasing total element count per instance and adjusting UI workflows to work better in scale environments.
  • Remote Collector - New, agent based collector for distributed environments and hybrid deployments
  • Orion on RDS - Support for Amazon RDS as the repository for the Orion database
  • Next Generation Orion Mapping
  • Centralized Upgrades
  • New Scalability Engines Installer
  • Orion Agent AIX
  • TLS 1.2 Support for Legacy Tools
  • UPS Monitoring

Monitoring Disclaimer

$
0
0

 

Disclaimer

 

 

 

 

 

No representation is made that the quality of the Monitoring services to be performed is greater than the quality of Monitoring services performed by others.

HPE 1920S 24G 2SFP PoE+ (370W) JL385A

HPE FlexNEtwork 5510

Integration with PagerDuty

$
0
0

PagerDuty has developed and provided a very nice integration guide for SolarWinds.

 

However, in my experience, it goes a little too far by requiring extra custom properties and VB script execution via scheduled task in order to post the JSON payloads to the PagerDuty site. Below are a couple of examples you can use with the HTTP POST action from the web alert engine. Just post these messages as the payload to https://events.pagerduty.com/generic/2010-04-15/create_event.json

 

ALERT TRIGGER:

{

  "_comment": "https://events.pagerduty.com/generic/2010-04-15/create_event.json",

  "service_key": "ENTER CLIENT'S SERVICE KEY FROM PAGERDUTY HERE",

  "incident_key": "THIS IS THE STRING FOR YOUR INCIDENT TITLE",

  "event_type": "trigger",

  "description": "THIS IS THE BODY OF YOUR MESSAGE DETAILS",

  "client": "SolarWinds",

  "client_url": "THIS IS WHERE YOU CAN PUT A DETAILS URL BACK TO SOLARWINDS",

}

ALERT RESET:

{

  "_comment": "https://events.pagerduty.com/generic/2010-04-15/create_event.json",

  "service_key": "ENTER CLIENT'S SERVICE KEY FROM PAGERDUTY HERE",

  "incident_key": "INCIDENT TITLE MUST MATCH THE TRIGGER EXACTLY",

  "event_type": "resolve",

  "description": "THIS IS THE BODY OF YOUR MESSAGE DETAILS"

}

 

Enjoy!

 

-ZackM

Loop1 Systems: SolarWinds Training and Professional Services

Group status bar gauges

$
0
0

Here's the source code/implementation for the bar gauge version of the pie charts and bullseye charts first mentioned in this discussion and later elaborated upon here.

 

Prequisites

  • You must know the Group ID of the group you wish to display in the chart. The easiest way to find this is to go to the details page for the group and get the group number from the end of the URL. E.g. if the URL is https://solarwinds.yourcompany.com/Orion/NetPerfMon/ContainerDetails.aspx?NetObject=C:69, the group ID is 69.
  • SQL Server 2012 or newer. If you have an older version of SQL Server, see the note about "Older versions of SQL Server" at the end of this document.

 

Installation

  1. Download and unzip the attached archive.
  2. Copy GroupMemberAggregateStatus.aspx and GroupMemberAggregateStatus.aspx.cs to <Solarwinds install volume>\InetPub\SolarWinds\Orion\NetPerfMon\ .

 

Implementation

  1. On your Solarwinds NOC view page, click "Customize Page" in the page's upper right corner.
  2. Add a new Custom HTML resource and save your changes.
  3. Find the new Custom HTML resource on the page and click the "EDIT" box in the resource's upper right corner.
  4. Fill in the Title and Subtitle fields as you wish and check the "Use synchronous loading" box.
  5. Copy and paste the HTML below into the (unlabeled) URL field.

    <iframe scrollbars="none" height="225px" width="100%" src="/Orion/NetPerfMon/GroupMemberAggregateStatus.aspx?ContainerID=GROUPID" ></iframe>

    Replace GROUPID in the URL with the ID number of the group you want to display. Your resource, when completely filled in, will look similar to this:
  6. Click "Submit" to save your changes.

 

Example of a single chart

 

Older versions of SQL Server

If your installation uses a version of SQL Server older than SQL Server 2012, you must edit GroupMemberAggregateStatus.aspx.cs. Find both instances of the string

concat('/Orion/NetPerfMon/ContainerDetails.aspx?NetObject=C:',C.ContainerID)

and replace it with

'/Orion/NetPerfMon/ContainerDetails.aspx?NetObject=C:'+cast(C.ContainerID as varchar)

This will continue to work after you upgrade to SQL Server 2012.


Fortigate-Serial

Windows Credential Report (Web-Based)

Huawei WLC Cpu and Memory

F5 Config Sync Status

hrSystemReboot.AlertDefinition

Viewing all 1956 articles
Browse latest View live


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