Open for Voting

Node Outage Duration

I'd like to propose the calculation and retention of a Node Outage Duration metric and also mask this using a Service Hours profile.

We currently use a SQL query to calculate Node Outage Durations based on the elapsed time between a Node Down event and the corresponding Node Up event. This requires us to retain a huge Event Log for a 90 day visibility.

Our minimum requirement would be for a table which contains Node ID, Node Down Event Timestamp, Node Up Event Timestamp and Outage Duration retained for 90 days.  We've tried using the Hourly/Weekly/Daily availability stats to calculated crude outage durations but we can't mask out non-service hours without a timestamp.

Better still, if a Node (or parent Group) had a defined 'service hours' profile then different outage durations and availabilities could be calculated for SLA reporting purposes.

When a Node Detail view is displayed, a current or previous Service Hours vs. Total Outage Duration could be displayed.

In anticipation.

Parents
  • 11.5.2 is now gathering this information and populating a table NetObjectDowntime, but not ready for primetime...

    SELECT TOP 1000 EntityId,NodeId,DateTimeFrom,DateTimeUntil,State,EntityType

    FROM [dbo].[NetObjectDowntime] where nodeid=X and EntityType = 'Orion.Nodes'

    2011201110/9/2015 4:16 PM10/15/2015 1:02 AM1Orion.Nodes2011201110/15/2015 1:02 AM10/15/2015 1:04 AM3Orion.Nodes2011201110/15/2015 1:04 AM10/15/2015 1:46 PM2Orion.Nodes2011201110/15/2015 1:46 PM10/16/2015 2:24 AM1Orion.Nodes2011201110/16/2015 2:24 AM10/16/2015 5:03 AM1Orion.Nodes2011201110/16/2015 5:03 AMNULL1

    Orion.Nodes

    1735173510/9/2015 4:16 PM10/16/2015 2:24 AM1Orion.Nodes1735173510/16/2015 2:24 AM10/16/2015 5:03 AM1Orion.Nodes1735173510/16/2015 5:03 AM10/17/2015 6:54 PM1Orion.Nodes1735173510/17/2015 6:54 PM10/18/2015 2:02 PM3Orion.Nodes1735173510/18/2015 2:02 PMNULL1

    Orion.Nodes

    The resolution is at the 'second' level, so if a node goes into 'warning' for less than a second you get more rows than you might expect, and no obvious reason.

    [I'm seeing duplicate key errors on insert because of this -- which is how I found the table]

  • In NPM 12  (Note: I filter with a parameter from the Nodes.Custom table)

    SELECT

      NodesData.Caption,

      NodesData.IP_Address,

      NetObjectDowntime.DateTimeFrom,

      (CAST((DateDiff(MINUTE, NetObjectDowntime.DateTimeFrom, SYSUTCDATETIME()) /

      1440) AS nvarchar(200)) + ':' + CAST(((DateDiff(MINUTE,

      NetObjectDowntime.DateTimeFrom, SYSUTCDATETIME()) / 60) % 24) AS

      nvarchar(200)) + ':' + CAST((DateDiff(MINUTE, NetObjectDowntime.DateTimeFrom,

      SYSUTCDATETIME()) % 60) AS nvarchar(200))) AS OutageInDHM

    FROM

      NetObjectDowntime INNER JOIN

      NodesData

        ON NetObjectDowntime.NodeId = NodesData.NodeID INNER JOIN

      NodesCustomProperties

        ON NetObjectDowntime.NodeId = NodesCustomProperties.NodeID

    WHERE

      NetObjectDowntime.EntityType = 'Orion.Nodes' AND

      NetObjectDowntime.DateTimeUntil IS NULL AND

      NetObjectDowntime.State = 2 AND

      NodesCustomProperties.NodeType = 'RTR'

    ORDER BY

       NetObjectDowntime.DateTimeFrom

    CaptionIP_AddressDateTimeFromOutageInDHMSGCCONVNT-OFMDF-ISR-RTR0172.17.164.2546/1/2016 4:19:00 PM132:1:26MSDJACKSO-OFMDF-ISR-RTR0172.20.149.2546/1/2016 4:19:00 PM132:1:26COBHMTST-LABB-RTR0172.31.101.2546/1/2016 4:19:00 PM132:1:26WEDWHEELE-OFMDF-ISR-RTR0172.16.143.2546/19/2016 4:54:00 PM114:0:51WEDBLACKAS-OFMDF-ATA-RTR0172.16.47.2549/17/2016 9:00:23 PM23:20:45WEDELLWOO-OFMDF-ISR-RTR0172.16.10.110/6/2016 4:09:04 AM5:13:36MEDRAINSY-OFMDF-ISR-RTR0172.22.156.25410/8/2016 8:45:06 PM2:21:0NCNEWPNRM-OFMDF-ISR-RTR010.95.16.25410/9/2016 12:57:28 AM2:16:48WEDMOORPA-OFMDF-ISR-RTR0172.16.244.25410/10/2016 8:38:17 PM0:21:7
Comment
  • In NPM 12  (Note: I filter with a parameter from the Nodes.Custom table)

    SELECT

      NodesData.Caption,

      NodesData.IP_Address,

      NetObjectDowntime.DateTimeFrom,

      (CAST((DateDiff(MINUTE, NetObjectDowntime.DateTimeFrom, SYSUTCDATETIME()) /

      1440) AS nvarchar(200)) + ':' + CAST(((DateDiff(MINUTE,

      NetObjectDowntime.DateTimeFrom, SYSUTCDATETIME()) / 60) % 24) AS

      nvarchar(200)) + ':' + CAST((DateDiff(MINUTE, NetObjectDowntime.DateTimeFrom,

      SYSUTCDATETIME()) % 60) AS nvarchar(200))) AS OutageInDHM

    FROM

      NetObjectDowntime INNER JOIN

      NodesData

        ON NetObjectDowntime.NodeId = NodesData.NodeID INNER JOIN

      NodesCustomProperties

        ON NetObjectDowntime.NodeId = NodesCustomProperties.NodeID

    WHERE

      NetObjectDowntime.EntityType = 'Orion.Nodes' AND

      NetObjectDowntime.DateTimeUntil IS NULL AND

      NetObjectDowntime.State = 2 AND

      NodesCustomProperties.NodeType = 'RTR'

    ORDER BY

       NetObjectDowntime.DateTimeFrom

    CaptionIP_AddressDateTimeFromOutageInDHMSGCCONVNT-OFMDF-ISR-RTR0172.17.164.2546/1/2016 4:19:00 PM132:1:26MSDJACKSO-OFMDF-ISR-RTR0172.20.149.2546/1/2016 4:19:00 PM132:1:26COBHMTST-LABB-RTR0172.31.101.2546/1/2016 4:19:00 PM132:1:26WEDWHEELE-OFMDF-ISR-RTR0172.16.143.2546/19/2016 4:54:00 PM114:0:51WEDBLACKAS-OFMDF-ATA-RTR0172.16.47.2549/17/2016 9:00:23 PM23:20:45WEDELLWOO-OFMDF-ISR-RTR0172.16.10.110/6/2016 4:09:04 AM5:13:36MEDRAINSY-OFMDF-ISR-RTR0172.22.156.25410/8/2016 8:45:06 PM2:21:0NCNEWPNRM-OFMDF-ISR-RTR010.95.16.25410/9/2016 12:57:28 AM2:16:48WEDMOORPA-OFMDF-ISR-RTR0172.16.244.25410/10/2016 8:38:17 PM0:21:7
Children