Hi,
I have a POCO class(say for ex, ClassA), which calls various private methods based on the payload type.
I need to capture the business transction for each of the these payloads.
If I create a custom rule for ClassA, I don't get the transactions for the rest of the methods.
Tried giving lower priority to custom rule for ClassA, and higher priority to custom rules for private methods.
I dont see any of the business transactions returned.
Any suggestions?
Thanks.
Hi,
If the private methods you are trying to create Custom Match Rule on is oart of on-going BT then new BTs will not be created. For example if you have a class definition like this
Class Test{ Private void Method1(){ Method2(); } Private Method2(){ Method3(); } Private Method3(){ DoSomething(); } }
And you create a POCO rule on
Class : Test
Method : Method1
Then creating other rules on same Class and different methods called by Method1 like Method2, Method3 will not yield new BTs are then are part of BT started for Method1
Let us know if you are talking about a different scenario. Please provide screenshots where necessary.
Thanks,
Raunak
What happens when I create a Rule on Method2, Method3.
But Method1 business transaction is Auto Discovered.
My code would be similar to this:
class Test { public void Method1() { if( someCondition) { Method2(); } else { Method3(); } } private Method2() { SomeFunc(); } private Method3() { DoSomething(); } }
How do we handle this scenario?
You have two options
1) Disable OOTB BT identification at Method1 and create POCOs on Method2 and Method3 to track them
2) Create Service End Points on these Methods
Ideally, you do not need to track these methods separately because they are already part of an ongoing BT and in case they are slowing down the BT will track it in form of snapshots.
You can also create InforMation Points on these methods in case you just want to track basic metrics like ART, Call/Min, errors etc
https://docs.appdynamics.com/display/PRO44/Information+Points
Thanks,
Raunak
To continue with this thread...
I have been facing a similar issue with this. I went ahead and tried the approach you suggested with adding service endpoints. I tried the similar appoach with method1/method2/method3 but for service endpoints and faced the same issue where method1 gets collected but not 2/3. Most likely this is because method1 contains method2/3. Should I expect to see all 3 methods shows up as seperate service endpoints?
Info point does show them seperate but I can not do data collectors on it or set up a custom dashboard.
There seems to be a lot of pros/cons for each of these features but not a solution that can provide everything.
Hi haysam,
I will run few tests to verify if SEP will not work in this scenario. But I will like to understand the reason behind trying to creating an entry point on already tracked code path.
In case you will like to collect data from these methods ( like from method parameter or return value) then Method Invocation Data Collector is way forward.
https://docs.appdynamics.com/display/PRO44/Data+Collectors
The collected data will show up in transaction snapshots.
Thanks,
Raunak
The idea was to have individual business transcations show up for different requests (e.g. when a request comes in, it can be branched into 1 of 10 "endpoints") the problem here is that when we excluded the parent BT, we did not see the children endpoints show up. If we chould show the custom BT for a pipeline, then we can create custom dashboards for them as well as set up alerts. Given that one BT will pick it up and not show the children BT makes us have to go through each one to determine where something broke.
Based on the documentation, it states that custom BT will take priority over the auto-detect BT. I can validate that this is not the case, even when I increase the priority for the custom BT as well as exclude the auto-detected BT. The only way for me to present those BT is by disabling auto-detection completely.
To confirm, info points do present the data that we are expecting. We are just a bit confused as to why the children BT are not showing up when we excluded the parent auto detected BT.
Hi Haysam,
Can you confirm the type of BT that is getting idenOOTB? OOTB ? Is it Asp.net/WCF/Web Services or anything else?
If you exclude the Parent BT, then you should be able to create a POCO rule and split it the way you want.
Also if the Parent BT was identified as Asp.Net then you can create a Asp.net Custom Match Rule with higher preference and that will take preference. But if you create a POCO rule then it will not get the preference.
Again if you could send out some screenshots of what you have tried that that has not worked we will be happy to help.
Thanks,
Raunak
BT: Asp.net
Here are the steps I did:
1. Verify that custom BT has a higher priority than the auto-discovery rule. (custom-BT-With-Higher-Priority.png)
2. Verify that auto-discovery is enabled for asp.net (auto-detect-on.png)
3. run test that uses the custom BT. This did not show up in the business transcation list. (Bt-With-auto-detect-on.png)
4. Turn off auto-detect for asp.net requests Disable-auto-discovery.png)
5. run the same test again that uses the custom BT.
6. Notice that it now shows up... (Custom-Bt-After-Disable.png)
Now the question is why does it show up only after I have disabled auto-detect? I have verified that no other BT in that list uses this chain. And based on AppD documentation, it should show up regardless.
Let me know if you need anything else. We should look more into this to understand the root cause of the problem.
Thanks
I had excluded the Auto discovered Endpoint and created POCO rules for the child BT with higher priority.
Asp.net Custom Match Rule for parent BT with lower priority.
This did not work.
Hi,
Had a quick discussion with the team and seems like you might be hitting limitation as described in the following document
You may want to increase the node value but I suggest you review my previous update which should give you deeper insight.
Thanks,
Raunak
I just have one service endpoint created, that should not be an issue.