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

Group Status (swql, sql)

$
0
0

Groups are useful in pulling together similar information.   For example for an application we can put in the nodes, interfaces, volumes, luns, and other aspects of a application.

The bad part is that we can’t display this in a clean way.   The All groups widget has no filter.  A way around this is to use a group custom property and tag the groups.   For example, all application groups have been tagged with isApp=1.

 

Now it’s a simple matter of displaying the status of the apps (swql).

 

SELECT

g.name as [Application]

,concat('/Orion/images/StatusIcons/Small-', g.StatusDescription,'.gif') AS [_IconFor_Application]

,concat('/Orion/NetPerfMon/ContainerDetails.aspx?NetObject=C:',g.ContainerID) as [_linkfor_Application]

,gs.total as [Total]

,gs.up as [Up]

,case when gs.up>0 then '/Orion/images/StatusIcons/Small-up.gif' end as [_Iconfor_Up]

,gs.warning as [Warning]

,case when gs.warning>0 then '/Orion/images/StatusIcons/Small-warning.gif' end as [_Iconfor_Warning]

,gs.critical as [Critical]

,case when gs.critical>0 then '/Orion/images/StatusIcons/Small-critical.gif' end as [_Iconfor_Critical]

,gs.down as [Down]

,case when gs.down>0 then '/Orion/images/StatusIcons/Small-down.gif' end as [_Iconfor_Down]

 

 

FROM Orion.Groups g

join (

SELECT

cm.ContainerID

,count(*) as [total]

,sum(case when cm.Status=1 then 1 else 0 end) as [up]

,sum(case when cm.Status=3 then 1 else 0 end) as [warning]

,sum(case when cm.Status=14 then 1 else 0 end) as [critical]

,sum(case when cm.Status=2 then 1 else 0 end) as [down]

FROM Orion.ContainerMembers cm

group by cm.ContainerID

order by cm.ContainerID asc

) gs on gs.containerid=g.ContainerID

 

 

where g.CustomProperties.isApp=1

order by g.Name

 

 

This is good, but still takes up too much screen real estate.  I wanted something concise and to the point – without the need for any scrolling.  Unfortunately, swql does not have the proper constructs – we’ll have to resort to sql.

select 

max(column1) as C1,

max(column2) as C2,

max(column3) as C3,

max(column4) as C4

from (

select linenumber

,case colnumber when 1 then node else NULL end as column1,

case colnumber when 2 then node else NULL end as column2,

case colnumber when 3 then node else NULL end as column3,

case colnumber when 4 then node else NULL end as column4

from

(select concat('<img src="/orion/images/statusicons/Small-',si.StatusName,'.gif"/>',

'<a href="/Orion/NetPerfMon/ContainerDetails.aspx?NetObject=C:',cast(tmp.ContainerID as varchar),'">',tmp.Name+'</>') [Node]

,((rownumber-1) / 4) + 1 as linenumber

,((rownumber-1) % 4)+1 as colnumber

from (select c.name, c.ContainerID, c.status,rownumber = ROW_NUMBER() over (order by c.name asc) from Containers c join ContainerCustomProperties cp on cp.ContainerID=c.ContainerID where cp.isApp=1) tmp 

join StatusInfo si on si.StatusId=tmp.Status) tmp1

group by linenumber, tmp1.colnumber, tmp1.node) tmp2

group by tmp2.linenumber

 

For a NOC view, it's going to be simplified.  They don't need to know the memory or other issues.  Just is the group up or not.

select 

max(column1) as C1,

max(column2) as C2,

max(column3) as C3,

max(column4) as C4

from (

select linenumber

,case colnumber when 1 then node else NULL end as column1,

case colnumber when 2 then node else NULL end as column2,

case colnumber when 3 then node else NULL end as column3,

case colnumber when 4 then node else NULL end as column4

from

(select

case when tmp.Status=1 then

concat('<img src="/orion/images/statusicons/Small-Up.gif"/>',

'<a href="/Orion/NetPerfMon/ContainerDetails.aspx?NetObject=C:',cast(tmp.ContainerID as varchar),'">',tmp.Name+'</>')

else

concat('<img src="/orion/images/statusicons/Small-Down.gif"/>',

'<a href="/Orion/NetPerfMon/ContainerDetails.aspx?NetObject=C:',cast(tmp.ContainerID as varchar),'">',tmp.Name+'</>')

end as [Node]

,((rownumber-1) / 4) + 1 as linenumber

,((rownumber-1) % 4)+1 as colnumber

from (select c.name, c.ContainerID, c.status,rownumber = ROW_NUMBER() over (order by c.name asc) from Containers c join ContainerCustomProperties cp on cp.ContainerID=c.ContainerID where cp.isApp=1) tmp 

join StatusInfo si on si.StatusId=tmp.Status) tmp1

group by linenumber, tmp1.colnumber, tmp1.node) tmp2

group by tmp2.linenumber

 

Thank you,

amit


Viewing all articles
Browse latest Browse all 1956

Trending Articles



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