cancel
Showing results for 
Search instead for 
Did you mean: 
Create Post
Level 7

Filter Active Alerts on Dashboard

Jump to solution

Not sure if this is possible, but right now I have Node Alarms on the summary dashboard with Filter Nodes (SQL), filled in to only show the nodes I want. Works great, Dashboard is extremely useful and I'm watching it most of the day.

Soon we are going to a fully redundant network. In theory, Node Alarms won't exist because nothing will go down. BGP Neighbors will be lost and links will go down, but the Node will always be pingable.

We have an alert setup for "Alert me when a neighbor goes down" which works, but shows up on the All Active Alerts screen (we also have email alerts setup for "neighbor down"). Alerts can be searched, acknowledged etc on this page.

If I add "Active Alerts" to the dashboard, it works, but I'm unable to filter or search. Edit only allows changing the title and subtitle.

How can I only see the Active Alerts that I want to see instead of all alerts on the customized dashboard?

I understand I can keep a tab open for active alerts, but would really like to have a one-stop awesome, useful dashboard.

NPM 12.0

Thanks,

Wayne

Labels (1)
1 Solution

I wrote a SWQL resource that does this for me a while ago, tailoring it would require you to be comfortable in SWQL but it can be made to show or not show anything you want.

pastedImage_0.png

SELECT

o.AlertConfigurations.Name AS [ALERT NAME]

,'/Orion/NetPerfMon/ActiveAlertDetails.aspx?NetObject=AAT:' + ToString(o.AlertObjectID) AS [_LinkFor_ALERT NAME]

,CASE

WHEN o.AlertConfigurations.Severity = 2 THEN '/Orion/images/ActiveAlerts/Critical.png'

WHEN o.AlertConfigurations.Severity = 3 THEN '/Orion/images/ActiveAlerts/Serious.png'

WHEN o.AlertConfigurations.Severity = 1 THEN '/Orion/images/ActiveAlerts/Warning.png'

WHEN o.AlertConfigurations.Severity = 0 THEN '/Orion/images/ActiveAlerts/InformationalAlert.png'

WHEN o.AlertConfigurations.Severity = 4 THEN '/Orion/images/ActiveAlerts/Notice.png'

END AS [_iconfor_ALERT NAME]

,o.EntityCaption AS [ALERT OBJECT]

,o.EntityDetailsURL AS [_LinkFor_ALERT OBJECT]

,case

WHEN o.RelatedNodeCaption=EntityCaption THEN 'Self'

When o.RelatedNodeCaption!=EntityCaption THEN RelatedNodeCaption

End as [RELATED NODE]

,o.RelatedNodeDetailsURL AS [_LinkFor_RELATED NODE]

,ToLocal(o.AlertActive.TriggeredDateTime) AS [ALERT TRIGGER TIME]

,'/Orion/images/StatusIcons/Small-' + p.StatusIcon AS [_IconFor_RELATED NODE]

,CASE

when minutediff(o.AlertActive.TriggeredDateTime,GETUTCDATE())>1440 then (tostring(round(minutediff(o.AlertActive.TriggeredDateTime,GETUTCDATE())/1440.0,1)) + ' Days')

when minutediff(o.AlertActive.TriggeredDateTime,GETUTCDATE())>60 then (tostring(round(minutediff(o.AlertActive.TriggeredDateTime,GETUTCDATE())/60.0,1)) + ' Hours')

else (tostring(minutediff(o.AlertActive.TriggeredDateTime,GETUTCDATE())) + ' Minutes')

end as [Time Active]

,aa.AcknowledgedBy

,ah.Message as [Note]

From Orion.AlertActive aa

join Orion.AlertObjects o on aa.alertobjectid=o.alertobjectid

LEFT join Orion.Nodes p on p.nodeid=relatednodeid

left join orion.alerthistory ah on ah.AlertActiveID=aa.AlertActiveID and ah.EventType in (2,3)

--where (o.AlertConfigurations.Name like '%${SEARCH_STRING}%' or o.RelatedNodeCaption like '%${SEARCH_STRING}%' or o.EntityCaption like '%${SEARCH_STRING}%' or ah.Message like '%${SEARCH_STRING}%')

ORDER by o.AlertActive.TriggeredDateTime DESC

-Marc Netterfield

    Loop1 Systems: SolarWinds Training and Professional Services

- Marc Netterfield, Github

View solution in original post

26 Replies
Level 8

My issue is that I had an issue with seeing the note added wen the acknowledgement was made, this led to me delving in to CONCAT and SQL to create a new dashboard for my team. I did not want to lose too much functionality from the main alert page as well.  I also decided to break up the alerts in to separate tables, but removing a simple "WHERE" line can put them all on one.

Unacknowledged is at the top.  Only thing I could not figure out was coding an ACK button, so the ling takes you to the "Active Alert Details" Page in a new tab where you can click a real ACK button.

Notice the big thing for me was being able to see the ACH Notes on the right column.

if anyone knows how to code the ACK button like on the Active Alert Page, I would LOVE to try and add it here.

New Alert Dash.jpg

Note I forgot to change the DESC for the top one to ALL UNACKNOWLEDGED.  It's not just Volumes.  Only acknowledged ones were separated to Nodes, Volumes and Other.

Also, make sure when adding the columns from the EDIT tab you set anything with hyperlinks to "Allow HTML Tags" so it shows a link and hover.

Hovering over a link does the same thing the Active Alert Page does and clicking a link takes you to the same pages.

hover1.jpg

Here are the SQL Scripts I use in the "SELECT DATASOURCE" portion of the Edit and set it to ADVANCED DATABASE QUERY (SQL, SWQL) and set it to SQL..

datasource.jpg

UNACKNOLWEDGED - For the first table

---------------------------------

  1. SELECT
  2. CONVERT(char(10),AlertStatusView.TriggerTimeStamp,121) AS Date,
  3. CAST(DATEADD(HOUR,-5,AlertStatusView.TriggerTimeStamp) AS time(0)) AS Time,
  4. DATEADD(HOUR,-5,AlertStatusView.LastUpdate) AS LastUpdate,
  5. DATEADD(HOUR,-5,AlertStatusView.TriggerTimeStamp) AS TriggerTime,
  6. CONCAT('<a href="https://thwack.solarwinds.com/Orion/View.aspx?NetObject=N:',NodesData.nodeid,'">',NodesData.caption,'</a>') as 'Caption',
  7. CONCAT('<a href="',AlertObjects.EntityDetailsUrl,'">',AlertObjects.EntityCaption,'</a> on <a href="https://thwack.solarwinds.com/Orion/View.aspx?NetObject=N:',NodesData.nodeid,'">',NodesData.caption,'</a>') as 'AlertMessageUrl',
  8. CONCAT('<a href="https://thwack.solarwinds.com/Orion/NetPerfMon/ActiveAlertDetails.aspx?NetObject=AAT:',AlertStatusView.AlertObjectID,'#" target="_blank">','Acknowledge','</a>') as 'Active Object',
  9. NodesData.IP_Address,
  10. AlertObjects.RelatedNodeCaption,
  11. NodesData.IP_Address,
  12. AlertStatusView.ObjectName,
  13. AlertStatusView.AlertMessage,
  14. AlertStatusView.AcknowledgedBy,
  15. AlertStatusView.Notes,
  16. AlertConfigurations.Severity
  17. ,CASE
  18. WHEN AlertConfigurations.Severity = 5 THEN 'Notice'
  19. WHEN AlertConfigurations.Severity = 4 THEN '<font color="Blue">Informational Alert</font>'
  20. WHEN AlertConfigurations.Severity = 3 THEN 'Serious'
  21. WHEN AlertConfigurations.Severity = 2 THEN '<font color="Red"><strong>Critical</strong></font>'
  22. WHEN AlertConfigurations.Severity = 1 THEN '<font color="909500"><strong>Warning</strong></font>'
  23. END AS [_iconfor_Active Alerts]
  24. FROM AlertStatusView
  25. INNER JOIN AlertObjects ON AlertObjects.AlertObjectID = AlertStatusView.AlertObjectID
  26. INNER JOIN NodesData ON NodesData.NodeID = AlertObjects.RelatedNodeID
  27. JOIN AlertConfigurations ON AlertConfigurations.AlertRefID = AlertStatusView.AlertDefID
  28. WHERE Acknowledged = '0

ACKNOLWEDGED - For the lower table  (To show ALL just remove [ AND AlertStatusView.ObjectType='Node' ] from Line 37

---------------------------------

  1. SELECT
  2. CONVERT(char(10),AlertStatusView.TriggerTimeStamp,121) AS Date,
  3. CAST(DATEADD(HOUR,-5,AlertStatusView.TriggerTimeStamp) AS time(0)) AS Time,
  4. DATEADD(HOUR,-5,AlertStatusView.LastUpdate) AS LastUpdate,
  5. DATEADD(HOUR,-5,AlertStatusView.TriggerTimeStamp) AS TriggerTime,
  6. CONCAT('<a href="https://thwack.solarwinds.com/Orion/View.aspx?NetObject=N:',NodesData.nodeid,'">',NodesData.caption,'</a>') as 'Caption',
  7. CONCAT('<a href="',AlertObjects.EntityDetailsUrl,'">',AlertObjects.EntityCaption,'</a> on <a href="https://thwack.solarwinds.com/Orion/View.aspx?NetObject=N:',NodesData.nodeid,'">',NodesData.caption,'</a>') as 'AlertMessageUrl',
  8. CONCAT('<a href="https://thwack.solarwinds.com/Orion/NetPerfMon/ActiveAlertDetails.aspx?NetObject=AAT:',AlertStatusView.AlertObjectID,'#" target="_blank">','Acknowledge','</a>') as 'Active Object',
  9. NodesData.IP_Address,
  10. AlertConfigurations.Severity,
  11. AlertObjects.RelatedNodeCaption,
  12. NodesData.IP_Address,
  13. AlertStatusView.ObjectName,
  14. AlertStatusView.AlertMessage,
  15. AlertStatusView.AcknowledgedBy,
  16. AlertStatusView.Notes,
  17. AlertStatusView.ObjectType
  18. ,CASE
  19. WHEN AlertConfigurations.Severity = 5 THEN 'Notice'
  20. WHEN AlertConfigurations.Severity = 4 THEN '<font color="Blue">Informational Alert</font>'
  21. WHEN AlertConfigurations.Severity = 3 THEN 'Serious'
  22. WHEN AlertConfigurations.Severity = 2 THEN '<font color="Red"><strong>Critical</strong></font>'
  23. WHEN AlertConfigurations.Severity = 1 THEN '<font color="909500"><strong>Warning</strong></font>'
  24. END AS [_iconfor_Active Alerts]
  25. ,CASE
  26. WHEN AlertStatusView.ObjectType = 'Volume' THEN
  27. CONCAT('<a href="',AlertObjects.EntityDetailsUrl,'">',AlertObjects.EntityCaption,'</a> on <a href="https://thwack.solarwinds.com/Orion/View.aspx?NetObject=N:',NodesData.nodeid,'">',NodesData.caption,'</a>')
  28. WHEN AlertStatusView.ObjectType = 'Node' THEN
  29. CONCAT('<a href="https://thwack.solarwinds.com/Orion/View.aspx?NetObject=N:',NodesData.nodeid,'">',NodesData.caption,'</a> is down')
  30. ELSE
  31. CONCAT('<a href="',AlertObjects.EntityDetailsUrl,'">',AlertObjects.EntityCaption,'</a> on <a href="https://thwack.solarwinds.com/Orion/View.aspx?NetObject=N:',NodesData.nodeid,'">',NodesData.caption,'</a>')
  32. END AS [AlertMsgURL]
  33. FROM AlertStatusView
  34. INNER JOIN AlertObjects ON AlertObjects.AlertObjectID = AlertStatusView.AlertObjectID
  35. INNER JOIN NodesData ON NodesData.NodeID = AlertObjects.RelatedNodeID
  36. JOIN AlertConfigurations ON AlertConfigurations.AlertRefID = AlertStatusView.AlertDefID
  37. WHERE Acknowledged = '1' AND AlertStatusView.ObjectType='Node'

ALL        = Line 37 ::  WHERE Acknowledged = '1'

Volumes = AND AlertStatusView.ObjectType='Volume'

Other    = AND AlertStatusView.ObjectType != 'Volume' AND AlertStatusView.ObjectType != 'Node'

Hopefully this helps.  There are a few things that SolarWinds does not currently have that I had to find a way around.  The other being a dashboard that shows large numbers for issues.

IE : each is clickable to take you to the list of items represented under each such as the "2" under Node Status-Down

dashboard.jpg

Level 9

Do you have the query for those resources you created at the bottom of the post the traffic lights, thanks. gjp1971

0 Kudos
Level 8

I do. Now I will admit, I am not the best SQL query person, but I was able to get these to work, so feel free to modify as needed to your specs or make it more efficient.  I don't have headers on the job that runs on the DB Server, but added them here between ====='s .   A few things to note:

1 : Custom Pollers are used  for COMM ROOM temps, so those near the bottom are looking at those

2 : A "Custom Property" for each of these below on Nodes.

3 : I update that custom property on the main SolarWinds server

4 : I have it show the Custom Property on the map for each by creating a template for each with a RED / YELLOW / GREEN square then use  ${AppDown} for example.

============================================================

NODE STATUS

============================================================

UPDATE NodesCustomProperties  

SET Count1_Up =

(SELECT COUNT(*) FROM NodesData WHERE Status = '1') 

Where NodeID = 5592;

UPDATE NodesCustomProperties 

SET  Count2_Down =

(SELECT COUNT(*) FROM NodesData WHERE Status = '2') 

Where NodeID = 5592;

UPDATE NodesCustomProperties 

SET  Count3_Warn =

(SELECT COUNT(*) FROM NodesData WHERE Status = '3') 

Where NodeID = 5592;

============================================================

APPLICATION STATUS

============================================================

UPDATE NodesCustomProperties

SET AppUp =

(SELECT COUNT(*) FROM APM_CurrentApplicationStatus WHERE Availability = '1')

Where NodeID = 5592;

UPDATE NodesCustomProperties

SET AppDown =

(SELECT COUNT(*) FROM APM_CurrentApplicationStatus WHERE Availability = '2')

Where NodeID = 5592;

UPDATE NodesCustomProperties

SET AppWarn =

(SELECT COUNT(*) FROM APM_CurrentApplicationStatus WHERE Availability = '3')

Where NodeID = 5592;

============================================================

HARDWARE SWITCH STATUS

============================================================

UPDATE NodesCustomProperties

SET HardwareUp =

(select COUNT(*) from HWH_HardwareItem WHERE Status = '1' AND IsDisabled = '0')

Where NodeID = 5592;

UPDATE NodesCustomProperties

SET HardwareWarn =

(select COUNT(*) from HWH_HardwareItem WHERE Status = '3' AND IsDisabled = '0')

Where NodeID = 5592;

UPDATE NodesCustomProperties

SET HardwareCritical =

(select COUNT(*) from HWH_HardwareItem WHERE Status = '14' AND IsDisabled = '0')

Where NodeID = 5592;

============================================================

CURRENT VOLUME STATUS - SERVERS

============================================================

UPDATE NodesCustomProperties

SET VolumesHealthy=

(select COUNT (*) from VolumesPercentDiskUsedForecastCapacity WHERE CurrentValue < '90' AND InstanceCaption NOT LIKE '%memory' AND InstanceCaption NOT LIKE '%RAM' AND InstanceCaption NOT LIKE '/%')

Where NodeID = 5592;

UPDATE NodesCustomProperties

SET VolumesWarning=

(select COUNT (*) from VolumesPercentDiskUsedForecastCapacity WHERE  CurrentValue > '90' AND  CurrentValue < '95' AND InstanceCaption NOT LIKE '%memory' AND InstanceCaption NOT LIKE '%RAM' AND InstanceCaption NOT LIKE '/%')

Where NodeID = 5592;

UPDATE NodesCustomProperties

SET VolumesCritical=

(select COUNT (*) from VolumesPercentDiskUsedForecastCapacity WHERE  CurrentValue > '95' AND InstanceCaption NOT LIKE '%memory' AND InstanceCaption NOT LIKE '%RAM' AND InstanceCaption NOT LIKE '/%')

Where NodeID = 5592;

============================================================

CURRENT VOLUME STATUS - AXV, MAXV, ESXI

============================================================

UPDATE NodesCustomProperties

SET AXVVolumesHealthy=

(select COUNT (*) from VolumesPercentDiskUsedForecastCapacity WHERE CurrentValue < '90' AND InstanceCaption NOT LIKE '%memory' AND InstanceCaption NOT LIKE '%RAM' AND InstanceCaption LIKE '/%')

Where NodeID = 5592;

UPDATE NodesCustomProperties

SET AXVVolumesWarning=

(select COUNT (*) from VolumesPercentDiskUsedForecastCapacity WHERE  CurrentValue > '90' AND  CurrentValue < '95'  AND InstanceCaption NOT LIKE '%memory' AND InstanceCaption NOT LIKE '%RAM' AND InstanceCaption LIKE '/%')

Where NodeID = 5592;

UPDATE NodesCustomProperties

SET AXVVolumesCritical=

(select COUNT (*) from VolumesPercentDiskUsedForecastCapacity WHERE  CurrentValue > '95' AND InstanceCaption NOT LIKE '%memory' AND InstanceCaption NOT LIKE '%RAM' AND InstanceCaption LIKE '/%')

Where NodeID = 5592;

============================================================

CURRENT ACCESS POINTS STATUS

============================================================

UPDATE NodesCustomProperties

SET AccessPointUp =

(SELECT COUNT(*) FROM Wireless_AccessPoints WHERE Status= '1')

Where NodeID = 5592;

UPDATE NodesCustomProperties

SET AccessPointDown =

(SELECT COUNT(*) FROM Wireless_AccessPoints WHERE Status= '2')

Where NodeID = 5592;

UPDATE NodesCustomProperties

SET AccessPointWarn =

(SELECT COUNT(*) FROM Wireless_AccessPoints WHERE Status= '4')

Where NodeID = 5592;

============================================================

CURRENT LOCKED OUT USERS

============================================================

UPDATE NodesCustomProperties

SET LockOutGood =

(SELECT ComponentStatisticData FROM APM_CurrentStatistics WHERE  ApplicationID = '15106' AND ComponentStatisticData < '14' )

Where NodeID = 5592;

UPDATE NodesCustomProperties

SET LockOutWarn =

(SELECT ComponentStatisticData FROM APM_CurrentStatistics WHERE  ApplicationID = '15106' AND ComponentStatisticData > '14' AND ComponentStatisticData < '25')

Where NodeID = 5592;

UPDATE NodesCustomProperties

SET LockOutCrit =

(SELECT ComponentStatisticData FROM APM_CurrentStatistics WHERE  ApplicationID = '15106' AND ComponentStatisticData > '24' )

Where NodeID = 5592;

UPDATE NodesCustomProperties SET LockOutGood = '-' Where LockOutGood IS NULL AND NodeID = 5592;

UPDATE NodesCustomProperties SET LockOutWarn = '-' Where LockOutWarn IS NULL AND NodeID = 5592;

UPDATE NodesCustomProperties SET LockOutCrit = '-' Where  LockOutCrit IS NULL AND NodeID = 5592;

============================================================

COM ROOM TEMP

============================================================

UPDATE NodesCustomProperties SET TempCrit=(

select COUNT(*)

from CustomPollerAssignmentView (NOLOCK)

WHERE

   CustomPollerID IN (

              'f64f0c6b-d92c-47f5-a33c-9b6acf3a5c6e',

              '7085e18f-c843-43ea-909a-e30b5ad4cd17',

              '08d646a9-7c6b-4a14-b905-9955858036b2',

              'd0224ddd-c11b-4a42-8cad-7d2f6a1a2522',

              'f64f0c6b-d92c-47f5-a33c-9b6acf3a5c6e',

              '79451d11-9dc2-4a02-a7ac-e5079c71f404',

              '239862d7-112c-4fd6-bb01-056f4cbd6e7f',

              '63cb31e4-ba3e-4619-af50-75381e078cf7',

              'b9d4d1d8-5847-4124-a41d-306a982b2f1e',

              '1538a719-9912-4991-97d4-b4a899aa39b5',

              '0a6bb83b-c074-402a-9b38-bec6ad35993a')

       AND CASE WHEN ISNUMERIC(CurrentValue) = 1 THEN CAST(CurrentValue AS DECIMAL(18,2)) ELSE 0 END >120

)

WHERE NodeID = 5592;

UPDATE NodesCustomProperties SET TempWarn=(

select COUNT(*)

from CustomPollerAssignmentView (NOLOCK)

WHERE

   CustomPollerID IN (

              'f64f0c6b-d92c-47f5-a33c-9b6acf3a5c6e',

              '7085e18f-c843-43ea-909a-e30b5ad4cd17',

              '08d646a9-7c6b-4a14-b905-9955858036b2',

              'd0224ddd-c11b-4a42-8cad-7d2f6a1a2522',

              'f64f0c6b-d92c-47f5-a33c-9b6acf3a5c6e',

              '79451d11-9dc2-4a02-a7ac-e5079c71f404',

              '239862d7-112c-4fd6-bb01-056f4cbd6e7f',

              '63cb31e4-ba3e-4619-af50-75381e078cf7',

              'b9d4d1d8-5847-4124-a41d-306a982b2f1e',

              '1538a719-9912-4991-97d4-b4a899aa39b5',

              '0a6bb83b-c074-402a-9b38-bec6ad35993a')

       AND CASE WHEN ISNUMERIC(CurrentValue) = 1 THEN CAST(CurrentValue AS DECIMAL(18,2)) ELSE 0 END  BETWEEN 105 AND 120

)

WHERE NodeID = 5592;

UPDATE NodesCustomProperties SET TempGood=(

select COUNT(*)

from CustomPollerAssignmentView (NOLOCK)

WHERE

   CustomPollerID IN (

              'f64f0c6b-d92c-47f5-a33c-9b6acf3a5c6e',

              '7085e18f-c843-43ea-909a-e30b5ad4cd17',

              '08d646a9-7c6b-4a14-b905-9955858036b2',

              'd0224ddd-c11b-4a42-8cad-7d2f6a1a2522',

              'f64f0c6b-d92c-47f5-a33c-9b6acf3a5c6e',

              '79451d11-9dc2-4a02-a7ac-e5079c71f404',

              '239862d7-112c-4fd6-bb01-056f4cbd6e7f',

              '63cb31e4-ba3e-4619-af50-75381e078cf7',

              'b9d4d1d8-5847-4124-a41d-306a982b2f1e',

              '1538a719-9912-4991-97d4-b4a899aa39b5',

              '0a6bb83b-c074-402a-9b38-bec6ad35993a')

       AND CASE WHEN ISNUMERIC(CurrentValue) = 1 THEN CAST(CurrentValue AS DECIMAL(18,2)) ELSE 0 END  <105

)

WHERE NodeID = 5592;

============================================================

CURRENT ACCESS POINTS STATUS

============================================================

UPDATE NodesCustomProperties

SET InterfaceUp =

(SELECT COUNT (*) FROM Interfaces where  Status='1')

Where NodeID = 5592;

UPDATE NodesCustomProperties

SET InterfaceWarn =

(SELECT COUNT (*) FROM Interfaces where  Status='3')

Where NodeID = 5592;

UPDATE NodesCustomProperties

SET InterfaceDown =

(SELECT COUNT (*) FROM Interfaces where  Status='2')

Where NodeID = 5592;

Level 10

Hi gjp1971mesverrum

I have been trying with little success in getting the Scoreboard to work and wondered if either of you could assist.

I have the custom properties defined.

I have the SQL job running to update these.

I can't for the life of me figure out what i have to do for the Network Atlas part, i can't seem to insert or know how to insert the variables that will pull up the counts of the map.

Can you advise on how this particluar part gets done?

0 Kudos
Level 10

gjp1971mesverrum

Its okay guys, helps if you read the manual - eventually figured it out

0 Kudos

I believe those are based on this post from one of my colleagues

Scoreboard


- Marc Netterfield, Github
Level 8

THERE IT IS!!! Thanks SO MUCH mesverrum !!

When I first saw this a few years ago I was not the admin for SolarWinds and saw it while just looking through Thwack.  Last year I started working on it and all I could remember was the RED / YELLOW / GREEN blocks with the numbers and was not able to remember what the title was.  While the scripting, etc was eventually figured out, there is no way I ever would have thought of it had it not been for my seeing that when your colleague first posted it! 

I want to make sure to give cscoengineer​ credit for the idea. 

Product Manager
Product Manager

Have you looked at the custom tile widget? It allows you to get a quick summary of status and alerts for a filtered set of entities.

pastedImage_0.png

0 Kudos
Level 10

@serena 

I'm looking through our list of widgets starting with "custom" and not seeing a tile option. I also don't see any options for tiles.

We have SAM, NPM, VMAN, WPM, and SRM.

Widgets in our environment

0 Kudos
Product Manager
Product Manager

Hi! you may be looking for what is actually called the Status Summary widget. There have been some tweaks to naming. 

serena_0-1584572150797.png

 

0 Kudos
Level 10

on NPM 12.1, Can't find this widget. Has this been discontinued?

0 Kudos
Product Manager
Product Manager

lmcbuilder  wrote:

on NPM 12.1, Can't find this widget. Has this been discontinued?

Nope the tile widget is alive and well. jblankjblank​ uses the summary tile widget on a daily basis on latest versions of NPM.

If anything I think it may not have existed in 12.1?  I dug around and the earliest mention of them in NPM was 12.3 right?

- Marc Netterfield, Github
0 Kudos
Level 8

I create new ID with limited node filter so automaticly I only sees specific devices. Hope this help.

0 Kudos

I wrote a SWQL resource that does this for me a while ago, tailoring it would require you to be comfortable in SWQL but it can be made to show or not show anything you want.

pastedImage_0.png

SELECT

o.AlertConfigurations.Name AS [ALERT NAME]

,'/Orion/NetPerfMon/ActiveAlertDetails.aspx?NetObject=AAT:' + ToString(o.AlertObjectID) AS [_LinkFor_ALERT NAME]

,CASE

WHEN o.AlertConfigurations.Severity = 2 THEN '/Orion/images/ActiveAlerts/Critical.png'

WHEN o.AlertConfigurations.Severity = 3 THEN '/Orion/images/ActiveAlerts/Serious.png'

WHEN o.AlertConfigurations.Severity = 1 THEN '/Orion/images/ActiveAlerts/Warning.png'

WHEN o.AlertConfigurations.Severity = 0 THEN '/Orion/images/ActiveAlerts/InformationalAlert.png'

WHEN o.AlertConfigurations.Severity = 4 THEN '/Orion/images/ActiveAlerts/Notice.png'

END AS [_iconfor_ALERT NAME]

,o.EntityCaption AS [ALERT OBJECT]

,o.EntityDetailsURL AS [_LinkFor_ALERT OBJECT]

,case

WHEN o.RelatedNodeCaption=EntityCaption THEN 'Self'

When o.RelatedNodeCaption!=EntityCaption THEN RelatedNodeCaption

End as [RELATED NODE]

,o.RelatedNodeDetailsURL AS [_LinkFor_RELATED NODE]

,ToLocal(o.AlertActive.TriggeredDateTime) AS [ALERT TRIGGER TIME]

,'/Orion/images/StatusIcons/Small-' + p.StatusIcon AS [_IconFor_RELATED NODE]

,CASE

when minutediff(o.AlertActive.TriggeredDateTime,GETUTCDATE())>1440 then (tostring(round(minutediff(o.AlertActive.TriggeredDateTime,GETUTCDATE())/1440.0,1)) + ' Days')

when minutediff(o.AlertActive.TriggeredDateTime,GETUTCDATE())>60 then (tostring(round(minutediff(o.AlertActive.TriggeredDateTime,GETUTCDATE())/60.0,1)) + ' Hours')

else (tostring(minutediff(o.AlertActive.TriggeredDateTime,GETUTCDATE())) + ' Minutes')

end as [Time Active]

,aa.AcknowledgedBy

,ah.Message as [Note]

From Orion.AlertActive aa

join Orion.AlertObjects o on aa.alertobjectid=o.alertobjectid

LEFT join Orion.Nodes p on p.nodeid=relatednodeid

left join orion.alerthistory ah on ah.AlertActiveID=aa.AlertActiveID and ah.EventType in (2,3)

--where (o.AlertConfigurations.Name like '%${SEARCH_STRING}%' or o.RelatedNodeCaption like '%${SEARCH_STRING}%' or o.EntityCaption like '%${SEARCH_STRING}%' or ah.Message like '%${SEARCH_STRING}%')

ORDER by o.AlertActive.TriggeredDateTime DESC

-Marc Netterfield

    Loop1 Systems: SolarWinds Training and Professional Services

- Marc Netterfield, Github

View solution in original post

Level 12

Great script marc!! I like to keep things in custom properties, so instead of “and” statements to filter -I decide to use a alert custom property.    Now what ever alert you want in the filtered alerts, just check the noc flag.  I also threw in number of triggers the alert has.

pastedImage_0.png

pastedImage_3.png

What I have seen are two custom properties (NOC1, NOC2).  NOC1 will be critical issues (Node down,Volume full, Memory full). NOC2 will be less critical (High CPU, High Memory, High IOPS, service down, hardware issues, etc).

Thanks
Amit

0 Kudos
Level 7

cscoengineer,

Could you post your swql query in filtering alerts by custom properties?

0 Kudos
Level 9

ckillpack@melaleuca.com here's how I adapted the query to use a custom property:

SELECT

     o.AlertConfigurations.Name AS [ALERT NAME],

     '/Orion/NetPerfMon/ActiveAlertDetails.aspx?NetObject=AAT:' + ToString(o.AlertObjectID) AS [_LinkFor_ALERT NAME],

     CASE

          WHEN o.AlertConfigurations.Severity = 2 THEN '/Orion/images/ActiveAlerts/Critical.png'

          WHEN o.AlertConfigurations.Severity = 3 THEN '/Orion/images/ActiveAlerts/Serious.png'

          WHEN o.AlertConfigurations.Severity = 1 THEN '/Orion/images/ActiveAlerts/Warning.png'

          WHEN o.AlertConfigurations.Severity = 0 THEN '/Orion/images/ActiveAlerts/InformationalAlert.png'

          WHEN o.AlertConfigurations.Severity = 4 THEN '/Orion/images/ActiveAlerts/Notice.png'

     END AS [_iconfor_ALERT NAME],

     o.EntityCaption AS [ALERT OBJECT],

     o.EntityDetailsURL AS [_LinkFor_ALERT OBJECT],

     CASE

          WHEN o.RelatedNodeCaption = EntityCaption THEN 'Self'

          WHEN o.RelatedNodeCaption != EntityCaption THEN RelatedNodeCaption

     END AS [RELATED NODE],

     o.RelatedNodeDetailsURL AS [_LinkFor_RELATED NODE],

     TOLOCAL(o.AlertActive.TriggeredDateTime) AS [ALERT TRIGGER TIME],

     '/Orion/images/StatusIcons/Small-' + p.StatusIcon AS [_IconFor_RELATED NODE],

     CASE

          WHEN MINUTEDIFF(o.AlertActive.TriggeredDateTime,GETUTCDATE()) > 1440

               THEN (TOSTRING(ROUND(MINUTEDIFF(o.AlertActive.TriggeredDateTime,GETUTCDATE())/1440.0,1)) + ' Days')

          WHEN MINUTEDIFF(o.AlertActive.TriggeredDateTime,GETUTCDATE()) > 60

               THEN (TOSTRING(ROUND(MINUTEDIFF(o.AlertActive.TriggeredDateTime,GETUTCDATE())/60.0,1)) + ' Hours')

          ELSE (TOSTRING(MINUTEDIFF(o.AlertActive.TriggeredDateTime,GETUTCDATE())) + ' Minutes')

     END AS [Time Active],

     aa.AcknowledgedBy,

     ah.Message as [Note]

FROM Orion.AlertActive AS aa

JOIN Orion.AlertObjects AS o ON aa.alertobjectid = o.alertobjectid

LEFT JOIN Orion.Nodes AS p ON p.nodeid = o.relatednodeid

LEFT JOIN Orion.alerthistory AS ah ON ah.AlertActiveID = aa.AlertActiveID AND ah.EventType IN (2,3)

LEFT JOIN Orion.AlertConfigurationsCustomProperties AS acp ON o.AlertID = acp.AlertID

WHERE acp.CUSTOMPROPERTYNAME = 'Networking'

     --AND (

          o.AlertConfigurations.Name LIKE '%${SEARCH_STRING}%'

          OR o.RelatedNodeCaption LIKE '%${SEARCH_STRING}%'

          OR o.EntityCaption LIKE '%${SEARCH_STRING}%'

          OR ah.Message LIKE '%${SEARCH_STRING}%')

ORDER by o.AlertActive.TriggeredDateTime DESC

Hi,

Is the Custom Property referenced here a Node Custom Property or an Alert Custom Property.

I haven't had any luck with any of the two.

0 Kudos

in this example it's looking for an alert custom property

---- relevant code

LEFT JOIN Orion.AlertConfigurationsCustomProperties AS acp ON o.AlertID = acp.AlertID

WHERE acp.CUSTOMPROPERTYNAME = 'Networking'

----

- Marc Netterfield, Github
0 Kudos