Showing results for 
Search instead for 
Did you mean: 
Create Post

How to create a simple custom view of multiple interfaces' bandwidth utilization

I've used custom views to show clients and my Team many different things that NPM monitors, and those folks really appreciate the service.  You can be a rock star in their eyes when you give them something that helps them improve how they and their clients understand their systems and their performance.

Here's how to build a custom View that shows current and recent WAN interface utilization between routers connecting six different data centers.  Remember, your new View doesn't have to be of just interfaces on the same switch, or on the same router.

You can build this kind of report for as many interfaces as you'd like, from any switch or router or device interface that's monitored by your NPM.  This one shows a single WAN interface on six different routers that connect into the same MPLS cloud:


Here's how to do it:

Create the view:

1. From NPM, go to Settings > Manage Views > Add

2. Customize the new view:

  • Name it intuitively
  • Select Summary (there are MANY types of views.  Read up on them, test some to get a feel for the extreme versatility of NPM)
  • Click Submit

3. Edit the View.

  • You can change its name if you want.
  • I chose not to enable Left Navigation--this will be simple, and won't load a lot of info.
  • I added a Custom HTML Resource to Column 1, then cloned it three times.  Next I moved one instance into Column 2, and then cloned that one twice.  I ended up with three Custom HTML Resources in each column.
  • I set the width to 500 px for each
  • I set No View Limitation (but you can add one in if you need it)
  • Click Done or Preview.  Preview lets you see it right away, without assigning it to any Menu Bar.  Plus, you can edit those custom HTML fields.

4. Here's the sweet spot to make you rock in the eyes of your boss & peers because it gives you the power to make a really useful view:

5. Edit your new View in Preview, or assign it to a Menu Bar and open it

  • Click Edit in the top left Custom HTML window
  • Give it an intuitive Title
  • Fill in the Subtitle if that helps you better identify the interface or feature you're displaying
  • Copy and paste this into the html window:

<img src="/Orion/Netperfmon/Chart.aspx?ChartName=MMAvgBps&Title=&SubTitle=&SubTitle2=&Width=640&Height=0&NetObject=I:XXXX&CustomPollerID=&SampleSize=1H&Period=Last 10 Days&FontSize=1&NetObjectPrefix=I&SubsetColor=&RYSubsetColor=&Printable=true&ShowTrend=True&ResourceID=27" />

  • Where I've put in the X's, remove them and enter in the NetObject ID number you wrote down from the previous step
  • Click Submit


The new page should open, but this time the top left window won't say Custom HTML, it'll show the bandwidth used by that router's WAN interface for the last 10 days:


Now repeat this for every Custom HTML entry you've made, but change the NodeID info to the Node ID that's shown in the Interface Details page URL for new/different WAN routers and interfaces.

OK, you've made a new View.  But your team can't access it easily until you assign your new View to the Menu Bar they use.  If you don't know how to do that . . .

Here's how to define a new View to add to a Menu Bar:

  1. Go to NPM > Settings > Customize Menu Bars
  2. Edit the Menu Bar you or your team will use to access your new View
  3. Find your new View in the Available Items column on the left
  4. Drag it to the right column, drop it in where you want it.

If you can't find your new View, you'll need to discover its URL.  Follow this process:

    1. Open a second browser window and Edit the View by clicking the Preview open
    2. Copy the URL for the new View when you're previewing it
    3. Go back to the original browser window from step 3 and click Add
    4. Type in the Name of your View, paste in the URL address, give it a good Description
    5. I clicked the option to Open in a New Window.  It's your choice.
    6. Click OK

Now go back to NPM's Home Page, find the new View in the Menu Bar, and click on it.



Tweaking and tuning:

If you're not afraid of a little keyboard editing of html, you can easily change the 10 days to show the last 7 days or last 23 hours or last 17 minutes or last pretty-much-anything.  Here's how:

Look for "SampleSize" and "Period" in the code you copied & pasted

<img src="/Orion/Netperfmon/Chart.aspx?ChartName=MMAvgBps&Title=&SubTitle=&SubTitle2=&Width=640&Height=0&NetObject=I:XXXX&CustomPollerID=&SampleSize=1H&Period=Last 10 Days&FontSize=1&NetObjectPrefix=I&SubsetColor=&RYSubsetColor=&Printable=true&ShowTrend=True&ResourceID=27" />

Note the SampleSize is 1H, or One Hour.

Node the Period is the Last 10 Days

Edit each window in your view and change the SampleSize and Period to whatever works best for you.  Keep in mind that some combinations of SampleSize and Period don't go well together (e.g.:  SampleSize=1M and Period=Last 10 Months) because NPM needs to have you be reasonable.  If you want a graph showing changes every 1 minute, you have to be polling & collecting the data pretty frequently.  Pick a Period that's reasonable for seeing good granularity of 1 minute points, like Last 20 Minutes.  If you just see points instead of a line in the chart, you've picked a combination of sample size & period that's too granular for what your NPM has polled.  Adjust until you've got something that meets your needs.

Remember to keep the spacing in the html code exactly the same as the example I show above.  If you add a space between words, or remove one, you risk breaking the pretty graph output.

Some examples:

Show the Last 3 Hours, in 10-minute increments uses this code:

<img src="/Orion/Netperfmon/Chart.aspx?ChartName=MMAvgBps&Title=&SubTitle=&SubTitle2=&Width=640&Height=0&NetObject=I:XXXX&CustomPollerID=&SampleSize=10M&Period=Last 3 Hours&FontSize=1&NetObjectPrefix=I&SubsetColor=&RYSubsetColor=&Printable=true&ShowTrend=True&ResourceID=27" />

Note how the graph automatically changed "Last 10 Days" to "Last 3 Hours" in the title.  Sweet!


Suppose you like the 10 minute samples, but want to show the last 24 hours.  Just change "Last 10 Hours" to "Last 24 Hours":

<img src="/Orion/Netperfmon/Chart.aspx?ChartName=MMAvgBps&Title=&SubTitle=&SubTitle2=&Width=640&Height=0&NetObject=I:25091&CustomPollerID=&SampleSize=10M&Period=Last 24 Hours&FontSize=1&NetObjectPrefix=I&SubsetColor=&RYSubsetColor=&Printable=true&ShowTrend=True&ResourceID=27" />


If it looks great, fire off an e-mail to your Team or your Boss and show off the new functionality you've provided to the organization.

If it doesn't look great, spend a little time fixing it up.  Look for typos, fix spelling & punctuation--this is your baby, and folks will judge you by your work.

Swift Packets!

Rick Schroeder

Labels (3)

"If it doesn't look great, spend a little time fixing it up.  Look for typos, fix spelling & punctuation--this is your baby, and folks will judge you by your work."  That was funny.

Hello rschroeder  Thank you for your time and share your job with us.

Thank you very much for this, I will be implementing it into our NOC view as it's own slide!

Good One...

This was what I wanted to do. Thanks

Excellent explanation of the steps required with screenshots for the visual type.

We used to do this to show multiple interfaces...except Cacti graph URLs were shown instead.  Folks here seem to prefer Cacti graphs.  Only catch was the index numbers changing eventually.


Good work!

Your explanations are very helpful.

We have been in need of similar pages too, for a long time.

Here is a link to the solution I was able to piece together.

Automatically Generate New Graph(s) Based On Custom Property Value

Keep up the great work.

Thank you,


Great article, thanks for putting the effort in. Wish this was here 12 months ago when we were just starting out.

Excellent Customization.  Good work!

What if I only wanted to graph Avg Trans/Recieve or just Trend?

Also, looking to put several interface on a single window.



Find the graph you want to use that's already present in an NPM view.  You might just find it's possible to right-click on it, View Source, and find the html trail that provides exactly what you want.

For my charts I opened up the Minimum/Maximum/Average Bits Per Second view, viewed the HTML source and found just what I wanted.  Note the section highlighted:


It's intuitive, don't you think?  MMAvgBPS is the Minimum/Maximum/Average Bits Per Second.

Fortunately I took this from a much earlier version of NPM that had no Java, and it was pretty easy to find the code.  I'm happy it still works in NPM 11.5.2.

You simply find the graph or chart that displays exactly what you need--just Avg Tx/Rx or Trend--then chase down the source html to find the image source for that graph.

If your current view was built in Java script, you may find it more time-effective to work with Solarwinds directly in a Support you can discover the line of html and its location, for easy insertion into your custom charts.

Once you have that, post it--I bet other Thwack members will love it!

Good luck!

Rick S.

Very nice thread.  We have been wanting to do this for a long time.  I added one twist to this layout.  Instead of using a different 'Custom HTNL' resource for every graph I created a new 'Summary View' with one column and one 'Custom HTML' resource.  In the custom HTML resource I created a table with 2 columns and I put each <img src=> tag in a single  table cell tag.  <td> </td>.  This allowed me to put the aggregation interface in the top 2 columns centered and then each interface behind it in the columns below...  From there I did enable the left hand navigation and I was able to create a view that has the 'Today' view on one tab and another tab has the 'Last 10 days' and the last tab has the 'Last 30 Days'.  You will need to tweak the sample time for the 10 day and 30 day views because if you are too granular the page load time can take a while especially if you have 12 interfaces like we do.

The only challenge I have now is trying to determine what the graph names are for Percent utilization or availability ect....  I have been asked to create the same views for each of those graphs.  I tried using the procedure above but the names are not visible I am curious if that is because of java script....  If anyone knows what those chart names are or how to get them in the new views with  Orion 11.5.1 or Orion 11.5.2  please add a comment here on how you did this.  I am trying to work with the tech support group to see if they can walk me through how to find them...

k1gaudineer‌, Can you please share a couple screen shots?

Yes I would love to....  But I keep receiving an error telling me that my image type is invalid.  I am using a MAC Book Pro with SNAG-It as my capture utility.  I have saved the screen shots as both JPEG and PNG files and also resized the images so they are less than a meg in size.  Still can not insert the image.  Any thoughts or suggestions on how to get an image into THWACK would be appreciated....

Update on graphs...  Thanks to the SolarWinds Customer Support Group and their help with getting this figured out.  the charts/graphs in SolarWinds 11.5.1 and 11.5.2 are completely different ard are drawn differently on the screen.  The graph that is mentioned in this thread is what SolarWinds is referring to as a 'Classic' style graph.  To find the names of other graphs I would like to make a dash board with was pretty easy.  I used the following steps.....

1.  First I opened the view where the information I was after is viewed.  Like a node details view or interface details view.

2.  Next i clicked on 'Customize Page' in the upper right hand corner of the view

3.  When the view changes to show your page columns and resources click the plus sign to add a new resource.

4.  There is a 'Group By' option in the 'Add Resource' window.  Group the resources by 'Classic Catagory'. 

find the classic resource you want and then add it to your view.  Follow the procedure above and you can create other views with this new chart.

I am still receiving the image forbidden error when trying to add screen shots into THWACK so I am unable to add any visuals.  Later this morning I will be moving to a windows PC for a while.  i will copy the screenshots off of the MAC and try to use the Windows PC to upload the images.

Hi guys,

This is a very nice page... I love all the customization you have done...

I am trying to generate a report that show me the Network Wide Total Bytes Transferred for the last month, I am using the custom html, and I have put in the following link:

<img src="/Orion/DetachResource.aspx?viewkey=NPM+Summary&ViewID=48&ResourceID=1170&NetObject=&currentUrl=aHR0cDovLzEwLjQ1LjEzNy4yMjQvT3Jpb24vU3VtbWFyeVZpZXcuYXNweD92aWV3a2V5PU5QTSBTdW1tYXJ5JlZpZXdJRD00OA%3d%3d" />

But I am doing something wronghere, since it dont show me the view that I normal have under my fan network.

I am getting this view in my report here.... Not what I am looking for hehe

Network Wide Total Bytes Transferred - issue.PNG

So please help out a newbie on the run here.. hehe


Exactly what we were looking for!  Thanks Rick!

Thank you.

This will help my users!


Here is the above customization in a document for those that need to Air-Gap the cool customization.


Hi, This was working perfectly and even had a page of charts dedicated following the design. However, after recent upgrade, none seems to work...the chart is replaced by small X mark logo....

The current Ver of Orion Patform is Version 2016.2.100

It's possible that after your upgrade, your nodes may have new NetObject ID's.  Simply browse to the node outside of your custom report graphs, access the element you want graphed, and look at its URL to find the NetObject=I: statement and compare the number after the I: to the number in your custom graph/report.  If it's not the same number, then simply change your custom graph/report to use the new number.

Hi rschroeder, Thank you very much!! You were exactly right! It is now back working again!

I've always had difficulties getting NPM to provide network-wide statistics.  I suspect it's due to the size of my network--the report is timing out before it completes getting all the information.  Or perhaps it's due to NPM trying to get information about ports that is constantly changing.  NPM would need to have a snapshot in time of the port stats, and then be able to add them up.  If it's incorrectly trying to get the data from ports that are active, whose counters are constantly incrementing . . . that wouldn't be a good situation.

Did you get your view working?  If so, please share a screen shot of it, and detail how you accomplished it.

When I try and parse the XXXX out of the URL and substitute into the IMG Source HTML I get but an image icon holder.

Part of my URL String:


This is awesome, is there a overview of which charts we can use this way? Or where can i find them?

bartley​ I THINK it only works for the older, "Classic Chart Style", charts.


I believe any chart located in the following folder on your SolarWinds web server should work with this method.


Otherwise, not to hijack this thread, you can use this method to implement other graphing options. While not really difficult, the highcharts method, however, is not as straightforward as rschroeder​'s method.

Custom Graphing: Fun With Highcharts

The Query: Retrieving, Formatting, And Storing The Data

Simple Charts I: Graphing A Single Metric On A Single Element Over A Period Of Time

Rick's method is super easy to implement, and can be done immediately, which allows for a more universal application. I would probably recommend trying the different charts in the "NodeCharts" folder first.

Thank you,


bartley​ Also, you could use the following SQL query to generate a list of all the different graph types, and then spend some quiet time going through, testing each type.

SELECT ChartName, NetObjectPrefix, DisplayName

FROM ChartSettings

ORDER BY NetObjectPrefix, DisplayName

Your are right you can find them here. \inetpub\SolarWinds\Orion\NetPerfMon\Resources\NodeCharts

And this is quite easy to use.

Thanks wluther

If your current view was built in a newer version of NPM, particularly one that leveragesJava script, you may find it more time-effective to work with Solarwinds directly in a Support you can discover the line of html and its location, for easy insertion into your custom charts.

We're hoping you've worked out the troubles making screen shots, saving them, and uploading them to Thwack so we can see how you built the new views, and what they look like for the end users.

rschroeder​​ Just wondering if you are still using this process for graphing, or have you found a better way/tool?

A co-worker of mine has made a handy little tool to help quickly build dynamic graphs. Generating Graphs Dynamically

Out if curiosity, and if you have time, I'd like to know what you think about it, and if something like this would work for your use case. (Opinions from everyone are certainly welcomed too...)

Thank you,


This is a new one on me.  The only drawback I see is that it leverages a lot of Custom Properties that may not be in most environments of other Thwacksters.

I still use the old method I originally posted.  But I like the potential of the new method you linked to--it's pretty cool!

Although there are many changes in my environment from day to day, the necessary reports & graphs do not change frequently, meaning the graphs I've built for Management have not had to be tweaked in some years.  Therefore I've not been researching cool new ways to spin that bottle and leverage new efficiencies.

The key is when devices are retired and/or replaced, or interfaces are changed, then these reports may not show information in the graphs.  When those changes are made, it's likely the data is still there, still being collected, but that NPM is using a different element ID.  Find the new element ID and swap it out with the old on the failed graph and things should work again.

I'd LOVE for there to be some AI that automatically knew about such interface or hardware changes, or deletion and re-adding of a node--with its consequent new element ID's--and for those ID's to be automatically inserted back into the graphs & reports.  The only alternative is for there to be great communication going on between the keeper of the graphs & reports and anyone making changes to the nodes/interfaces.

Thanks for sharing that link!  I'm impressed.

rschroeder​ I figured our use case would probably be a bit different than the majority of other users. Our graph pages don't really "change", so much as we are constantly adding more interfaces to the page, still graphing the same data. Yes, as wonderful as custom properties are, the custom property aspect is where it starts to limit itself, or at least inherit the limits of having the correct properties set on the correct interface(s). The search feature actually seemed to help more than the custom property feature. We were thinking of maybe just building out several pre-defined groups, and using the properties accordingly. We will probably stick with the search functionality for a bit, if we can transition into a better naming schema while turning up interfaces... Well, I say "a better naming schema", when I should have said "a naming schema".

Thanks for taking a look, and thanks for the feedback.

rschroeder​ Okay, how about now... Would this be of any use to you...?
Using PowerShell To Automatically Provision A Series Of Graphs Per View

Version history
Revision #:
1 of 1
Last update:
‎10-16-2015 06:06 PM
Updated by: