Scoreboard

Version 1

    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!!