4 Replies Latest reply: Aug 21, 2013 7:06 AM by emarksrpi86 RSS

Conditional Alerting on Multiple WPM Transactions  (Dependencies)

emarksrpi86

I have web transactions A, B, and C

 

I created a group G containing all 3 transactions

 

I am trying to alert on the following cases only (dependencies)

Transaction A, B and C are Down

Transaction A and C are down but B is up

Transactiions B and C are down but A is UP

Transaction A is down but B and C are Up


What would be the best way to do this?

 
  • Re: Conditional Alerting on Multiple WPM Transactions  (Dependencies)
    borgan

    I would try using four separate condition groups, all under an "ANY" qualifier. Each individual condition group would consist of the series of simple conditions you designated, all under an "ALL" qualifier. In this way, anytime either one or more of the specific condition groups is true, you would get alerted. To make sure you get the Trigger construction correct, I would add the four condition groups at the same time, then come back to each one and add as many simple conditions as needed, defining them as you go.

     

    Hope that helps.

    • Re: Conditional Alerting on Multiple WPM Transactions  (Dependencies)
      emarksrpi86

      So shouldl the following work??   It doesnt seem to.

       

      Type of Property to Monitor: Transaction

       

      Trigger Alert when Any of the following

           Trigger Alert when All of the following

             Status is equal to Down

             Name is equal to A

             Name is equal to B

             Name is Equal to C

          Trigger Alert when All of the following

             Status is equal to Down

             Name is equal to A

             Name is Equal to C

              Trigger Alert when All of the following

              Status is equal to Up

              Name is equal to B

      Trigger Alert when All of the following

             Status is equal to Down

             Name is equal to B

             Name is Equal to C

              Trigger Alert when All of the following

              Status is equal to Up

              Name is equal to B

      Trigger Alert when All of the following

             Status is equal to Down

             Name is equal to A

              Trigger Alert when All of the following

              Status is equal to Up

              Name is equal to B

              Name is equal to C

      • Re: Conditional Alerting on Multiple WPM Transactions  (Dependencies)
        jiri.tomek

        Hello,

        this kind of alert can't work for one reason - alert conditions are always evaluated against single object (transaction) at a time. If you have "Name = A and Name = B", condition can never be true because transaction is either A or B but not both.

         

        As you have transactions in a group, you could in theory alert on whole group's status if your conditions would be simpler, such as  "if any transaction is down, alert" or "if all transactions are down, alert". You don't have such simple requirement so probably the only way is to use custom SQL alert.

         

        1) In Advanced Alert Manager select "Custom SQL Alert" in "Type of Property to Monitor".

        2) In field "Set up your Trigger Query" that appears select "Group"

        3) Into editable query field enter following SQL statement:

        WHERE   
        (
          EXISTS (SELECT x.GroupMemberName FROM (SELECT a.GroupMemberName, a.GroupMemberStatusName FROM [Containers_AlertsAndReportsData] a WHERE a.GroupID = [Containers_AlertsAndReportsData].GroupID) x
          WHERE x.GroupMemberName = 'A' AND x.GroupMemberStatusName IN ('Down'))
          AND
          EXISTS (SELECT x.GroupMemberName FROM (SELECT a.GroupMemberName, a.GroupMemberStatusName FROM [Containers_AlertsAndReportsData] a WHERE a.GroupID = [Containers_AlertsAndReportsData].GroupID) x
          WHERE x.GroupMemberName = 'B' AND x.GroupMemberStatusName IN ('Down'))
          AND
          EXISTS (SELECT x.GroupMemberName FROM (SELECT a.GroupMemberName, a.GroupMemberStatusName FROM [Containers_AlertsAndReportsData] a WHERE a.GroupID = [Containers_AlertsAndReportsData].GroupID) x
          WHERE x.GroupMemberName = 'C' AND x.GroupMemberStatusName IN ('Down'))
        )
        OR
        (
          EXISTS (SELECT x.GroupMemberName FROM (SELECT a.GroupMemberName, a.GroupMemberStatusName FROM [Containers_AlertsAndReportsData] a WHERE a.GroupID = [Containers_AlertsAndReportsData].GroupID) x
          WHERE x.GroupMemberName = 'A' AND x.GroupMemberStatusName IN ('Down'))
          AND
          EXISTS (SELECT x.GroupMemberName FROM (SELECT a.GroupMemberName, a.GroupMemberStatusName FROM [Containers_AlertsAndReportsData] a WHERE a.GroupID = [Containers_AlertsAndReportsData].GroupID) x
          WHERE x.GroupMemberName = 'B' AND x.GroupMemberStatusName NOT IN ('Down'))
          AND
          EXISTS (SELECT x.GroupMemberName FROM (SELECT a.GroupMemberName, a.GroupMemberStatusName FROM [Containers_AlertsAndReportsData] a WHERE a.GroupID = [Containers_AlertsAndReportsData].GroupID) x
          WHERE x.GroupMemberName = 'C' AND x.GroupMemberStatusName IN ('Down'))
        )
        OR
        (
          EXISTS (SELECT x.GroupMemberName FROM (SELECT a.GroupMemberName, a.GroupMemberStatusName FROM [Containers_AlertsAndReportsData] a WHERE a.GroupID = [Containers_AlertsAndReportsData].GroupID) x
          WHERE x.GroupMemberName = 'A' AND x.GroupMemberStatusName NOT IN ('Down'))
          AND
          EXISTS (SELECT x.GroupMemberName FROM (SELECT a.GroupMemberName, a.GroupMemberStatusName FROM [Containers_AlertsAndReportsData] a WHERE a.GroupID = [Containers_AlertsAndReportsData].GroupID) x
          WHERE x.GroupMemberName = 'B' AND x.GroupMemberStatusName IN ('Down'))
          AND
          EXISTS (SELECT x.GroupMemberName FROM (SELECT a.GroupMemberName, a.GroupMemberStatusName FROM [Containers_AlertsAndReportsData] a WHERE a.GroupID = [Containers_AlertsAndReportsData].GroupID) x
          WHERE x.GroupMemberName = 'C' AND x.GroupMemberStatusName IN ('Down'))
        )
        OR
        (
          EXISTS (SELECT x.GroupMemberName FROM (SELECT a.GroupMemberName, a.GroupMemberStatusName FROM [Containers_AlertsAndReportsData] a WHERE a.GroupID = [Containers_AlertsAndReportsData].GroupID) x
          WHERE x.GroupMemberName = 'A' AND x.GroupMemberStatusName IN ('Down'))
          AND
          EXISTS (SELECT x.GroupMemberName FROM (SELECT a.GroupMemberName, a.GroupMemberStatusName FROM [Containers_AlertsAndReportsData] a WHERE a.GroupID = [Containers_AlertsAndReportsData].GroupID) x
          WHERE x.GroupMemberName = 'B' AND x.GroupMemberStatusName NOT IN ('Down'))
          AND
          EXISTS (SELECT x.GroupMemberName FROM (SELECT a.GroupMemberName, a.GroupMemberStatusName FROM [Containers_AlertsAndReportsData] a WHERE a.GroupID = [Containers_AlertsAndReportsData].GroupID) x
          WHERE x.GroupMemberName = 'C' AND x.GroupMemberStatusName NOT IN ('Down'))
        )
        GROUP BY Containers_AlertsAndReportsData.GroupID, Containers_AlertsAndReportsData.GroupName
        

         

        Alert definition window will look like this:

        group_alert.png

         

        This definition should alert on condition that you specified in your original post. Each section in outer-most (...) is one of lines "A,B and C are Down" etc. Each section starting with "EXISTS" is "A is Down" or "C is Up" etc. For "is Up" I used "x.GroupMemberStatusName NOT IN ('Down')" because I assume that by "Up" you mean "Not Down" so also warning and critical statuses are considered "Up". If you want any other status to be considered as "Down", such as "Unknown", you can just extend all "NOT IN ('Down')" and "IN ('Down')" to "NOT IN ('Down','Unknown')" and "IN ('Down', 'Unknown')".

         

        If you need to add another transaction in to condition or another combination of statuses into condition, you can just add another sections to SQL query.

         

        This alert will alert on the whole group so it works only for transactions that are in a group.

         

        Let us know if you have any issues with setting this up.