This discussion has been locked. The information referenced herein may be inaccurate due to age, software updates, or external references.
You can no longer post new replies to this discussion. If you have a similar question you can start a new discussion in this forum.

Conditional Alerting on Multiple WPM Transactions (Dependencies)

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?

  • 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.

  • 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

  • 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.

  • You come through with a solution as always!

    Thanks!