Smart nodes list I imagine multiple widgets for windows servers, Linux servers, Network devices. For items that are in duress and only those items.
Since "under pressure" can mean different things to different devices, you might want to rely on the native Thresholds and their reflected status.
Also, did you want this on a classic dashboard (called a 'view') or a Modern Dashboard?
Why would you segregate Windows vs. Linux vs. Network Gear? As far as Orion is concerned, they are all "nodes" and you can get the CPU, Memory, and Response time for each of them from the same place.
You could do something like this in Modern Dashboards
Kevin,
Thanks for your reply. I am wanting to master modern dashboards and SWQL type dashboards. What you showed is a great start. Can you share your query? Thanks Matt
I can do you one better. Here's the entire dashboard (as a JSON) which you can import using the Import-ModernDashboard PowerShell function in OrionSDK/func_ModernDashboards.ps1 at master · solarwinds/OrionSDK (github.com).
Import-ModernDashboard
[View:/cfs-file/__key/communityserver-discussions-components-files/45/Monitored-Entities-Needing-Attention.json:480:240]
This dashboard doesn't use any Custom Properties, so it should work for anyone. It was created on Orion Platform 2020.2.6 HF1 (current version as of today).
Awesome!!!!! Trying it now. Thanks
Also - THWACK MVP @the_ben_keen is doing the same thing now (re: Dashboards) and writing about it in a 3 part series starting with Modern Dashboarding: Introduction to SWQL Studio.
So I am not seeing how to do the Import-ModernDashboard PowerShell function . I see this doc but I am not seeing how to open the invoke tab the documentation.solarwinds.com/.../core-fusion-dashboard-import-export.htm
Open PowerShell on your system.
Install the SwisPowerShell module if not already installed.
if ( -not ( Get-Command -Name Connect-Swis -ErrorAction SilentlyContinue ) ) { Install-Module -Name SwisPowerShell -Confirm:$false}
This will install the module from the PowerShell Gallery.
Build a connection to your Orion Server.
$SwisConnection = Connect-Swis -Hostname "myOrionServer.domain.local" -Username "myUsername" -Password "myComplexPassword"
Load the functions from the script.
# This line must start with a single period and then the path to the downloaded PS1 file. C:\Path\To\Place\Where\I\Downloaded\func_ModernDashboards.ps1
Now the functions are loaded in memory. You can use the function to import the JSON file.
Import-ModernDashboard -SwisConnection $SwisConnection -Path "C:\Path\To\Dashboard.json"
Basically this says "using my current connection to SolarWinds import the JSON file as a Modern Dashboard."
Thanks so much for your help Kevin, excited to get this going. I am getting this error on the last step
PS C:\Users\adminmatm> Import-ModernDashboard -SwisConnection $SwisConnection -Path "C:\Download\import\Dashboard.json"Get-SwisData : No DNS entries exist for host https.At C:\Download\export\moderndash.ps1:214 char:23+ ... ashboards = Get-SwisData -SwisConnection $SwisConnection -Query $Swql ...+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Get-SwisData], EndpointNotFoundException + FullyQualifiedErrorId : System.ServiceModel.EndpointNotFoundException,SwisPowerShell.GetSwisDataImport-ModernDashboard : File content of 'C:\Download\import\Dashboard.json' does not match JSON formatAt line:1 char:1+ Import-ModernDashboard -SwisConnection $SwisConnection -Path "C:\Down ...+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Import-ModernDashboard
For the SWIS hostname, you shouldn't include the http:// or https:// - just the name or IP address.
Ughhh, well I am a pain today I guess. Lastly getting this error. PS C:\Users\adminmatm> Import-ModernDashboard -SwisConnection $SwisConnection -Path "C:\Download\import\dashboard.json"Import-ModernDashboard : File content of 'C:\Download\import\dashboard.json' does not match JSON formatAt line:1 char:1+ Import-ModernDashboard -SwisConnection $SwisConnection -Path "C:\Down ...+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Import-ModernDashboard
I did paste it into json format checker and it passed
@mmayer5823 Just out of curiosity, what version of PowerShell are you running? I ask because I ran into the same/similar issue as you, with the "Does not match JSON format". I then realized, out of bad habits, I had been running it in the old PowerShell ISE. I opened up a PowerShell 7 prompt, reran the same commands, and everything worked perfectly.
Thanks for your reply , I am running version 5.1. Let me upgrade to 7 and test
Looks like I need to add a #Requires line for PowerShell 7 to be more thorough.
#Requires
Hey @dan_jagnow - I added this as Pull Request #299.
Thanks! I approved and merged the pull request.
This also reminds me of an old sql dashboard I remember being on here that assigned various weights to different kinds of bad conditions and then made a table of nodes sorted by how unhappy they were. Something like node down would be 1000 points, high cpu might be 200. I've also built swql dashboard for ops teams that had a ton of case logic embedded and unions where it would set different messages and include extra info on each node depending on the issues being detected. It had all devices grouped up by where they fell in the data flow with edge firewalls at the top and going down through the aggregation layers until bottom being top of rack switches. If no issues it would just display something like "edge firewalls are all ok" if not then it would list out falling conditions for devices in that category. Was pretty useful for the Noc at a big ISP.
Thanks for all of the input guys. My new Dashboard(s) is starting to take shape. So one dash I would like to add is for volumes with less then 2 weeks forecast. I found this query from @jest4kicks (Thanks Michael) and made a couple of small changes, and I am wondering how I convert/join etc to take the node ID to convert to actual node name.
My Query:
SELECT VolumesForecastCapacity.DisplayName, VolumesForecastCapacity.NodeID, VolumesForecastCapacity.CurrentValue, VolumesForecastCapacity.DaysToCapacityAvg FROM Orion.VolumesForecastCapacity AS VolumesForecastCapacity
LEFT JOIN Orion.Settings s ON s.SettingID = 'ForecastMinDays'
LEFT JOIN Orion.VolumesCustomProperties p ON p.VolumeID = VolumesForecastCapacity.InstanceID
LEFT JOIN Orion.Volumes v ON v.VolumeID = VolumesForecastCapacity.InstanceID
WHERE VolumesForecastCapacity.InstanceCaption != 'Virtual Memory'
AND VolumesForecastCapacity.InstanceCaption != 'Physical Memory'
AND VolumesForecastCapacity.InstanceCaption != 'Real Memory'
AND VolumesForecastCapacity.InstanceCaption != 'Memory Buffers'
AND VolumesForecastCapacity.InstanceCaption != 'Cached Memory'
AND VolumesForecastCapacity.InstanceCaption != 'Shared Virtual Memory'
AND VolumesForecastCapacity.InstanceCaption != 'Shared Real Memory'
AND VolumesForecastCapacity.InstanceCaption != 'swap space'
AND VolumesForecastCapacity.DaysToCapacityAvg <= 14
AND VolumesForecastCapacity.MetricName = 'Forecast.Metric.PercentDiskUsed'
AND DayDiff(VolumesForecastCapacity.MinDateTime, VolumesForecastCapacity.MaxDateTime) >= ISNULL(s.CurrentValue, 7)
AND Status = 1 AND Caption Not Like '%VM%' AND Caption Not Like 'MCPITSOLRWNDS2' AND Caption Not Like '%perf%' AND Caption Not Like '%test%' AND Caption Not Like '%Stage%' AND Caption Not Like '%DEV%' AND Caption Not Like '%QA%' AND Caption Not Like '%FS0%'
Which gives me this:
You can get rid of all of those joins if you just use the Navigation Properties (shown bound in red below).
Orion.VolumesForecastCapacity connects to Orion.Volumes, which connects to Orion.Nodes.
Orion.VolumesForecastCapacity
Orion.Volumes
Orion.Nodes
I'm pretty sure that will give you what you need:
SELECT [VForcast].Volume.Node.Caption AS [Node Caption] , [VForcast].DisplayName , [VForcast].CurrentValue , [VForcast].Volume.Size , [VForcast].DaysToWarningAvg , [VForcast].DaysToCriticalAvg , [VForcast].DaysToCapacityAvg , [VForcast].Volume.TypeFROM Orion.VolumesForecastCapacity AS [VForcast]WHERE [VForcast].DaysToCapacityAvg <= 100000 AND [VForcast].Volume.Type IN ( 'Fixed Disk' , 'FixedDisk' , 'Mount Point' , 'Network Disk' )ORDER BY [VForcast].DaysToCapacityAvg</pre>Obviously change out the DaysToCapacityAvg number in the WHERE clause to something more reasonable. I used 100000 to guarantee results in my environment.
DaysToCapacityAvg
awesome and thanks Kevin,
How do I add exceptions like:
WHERE Vendor = 'Windows'AND Caption Not Like '%VM%'AND Caption Not Like '%perf%'AND Caption Not Like '%test%'AND Caption Not Like '%Stage%'AND Caption Not Like '%DEV%'AND Caption Not Like '%QA%'
My Reply was spam? LOL