Hi There - I have installed an AppDynamics agent (4.2.152) to monitor only existing windows service there. There is no IIS installed on the server.
And in our controller when I go to Tiers & Nodes, it does showed up those servers but the AppAgentStatus is sitting at 0% all the time. I have edited the config as well (see below)
by putting the standalone service in it but that also didn’t help.
<tier name="ProdApp" />
Then I followed up someone’s advice to enable the SOAP headers but the agent doesn’t like this settings in the config and overwrote it itself.
<property name="enable-soap-header-correlation" Type="Boolean" value="True"/>
It is quite urgent for us and is holding to monitor the sevices in our production systems.
To instrument stand alone applications, you need to create custom entry points for the applications in case your application is not using any OOTB(Out of the Box) instrumentors. You can refer to following document.
As you mentioned that you are not seeing the servers under tier and nodes, please check if servers are listed under machine agent tietrs.
If you do not have information about class name and method name that you can use to create POCO entry point. You can use "find-entry-points" node level proprty to dump the call stacks for calls(assuming you are making some exit call). Please refer the document below for details around this property.
Following guide will help you to instrument the stand alone application.
How does AppDynamics detect new Business Transactions?
AppDynamics detects new Business Transactions by recognizing a particular set of "entry" methods in the callstack of the executing application. When one of these methods is hit, a new Business Transaction starts and all methods executing downstream of this method are instrumented.
No Business Transactions were detected in my application, now what?
In cases where no recognized Business Transaction entry methods are hit, we can enable the agent node property named find-entry-points to find some. With find-entry-points enabled, AppDynamics will log a callstack to the
BusinessTransaction.log each time a recognized outgoing call is made. For example, any HTTP/ASMX/WCF/Remoting service, DB, or MQ call. You can find the BusinessTransactions.log in the agent logs folder.
We can then review these callstacks to determine which method will make a suitable "entry" point to begin a Business Transaction.
Callstack example shows what code is running in the application
The following callstack is an example of what we might find in the BusinessTransactions.log after enabling find-entry-points. It should be read from the bottom up. That is, methods furthest down executed first. Look for callstacks following
Thread Empty_Name >> which means they are not part of any existing BT.
... BusinessTransactions Logging request stack for Thread Empty_Name >>AppDynamics.Agent.ManagedAPI.ps.kkAppDynamics.Agent.Interceptors.ww.jvAppDynamics.Agent.MethodExecutionEnv.MethodBeginSystem.Data.SqlClient.ExecuteReader() <---AppDynamics recognized this as an exit and logged the callstack.MyCompany.MyClass.DataAccess.FindCustomerData()MyCompany.MyClass.BusinessLogic.TransformCustomerData()MyCompany.MyClass.UI.btnFindCustomerData_OnClick()System.Windows.Forms.Button.OnClick()System.Windows.Form.ButtonBase.WindProc(...)System.Windows.Forms.NativeWindow.Callback(...)
We can see that this is a Windows Forms application where a particular button was clicked to find customer data. Once that button was clicked, an outgoing database call was made which AppDynamics recognized. From this point, AppDynaimcs code was executed to log the callstack to the BusinessTransaction.log file.
Which application method would make a good Business Transaction entry point?
Remember, methods executed first are at the bottom of the callstack. Looking at methods that executed before the database call, we can see that MyCompany.MyClass.UI.btnFindCustomerData_OnClick() is custom developed code that would make a suitable starting point for this unique Business Transaction to begin. All methods which execute after this method are also tracked as part of this Business Transaction. If we use a method that executed before this one, for instance System.Windows.Forms.Button.OnClick(), every application button click would be tracked as part of the same business transaction, which is not ideal for troubleshooting. We want to make sure separate code paths are tracked as separate Business Transactions.
OK I've found a suitable Business Transaction entry point method, now what?
Once we've found a suitable BT entry point, we can configure a .NET Class/Method Custom Match Rule to let AppDynamics know that this method marks the start of a new Business Transaction. Once you've created the Custom Match Rule, you'll need to wait a minute or two for the rule to be brought down to the agent, then restart the application for the change to go into effect. Once in effect, you should see your Business Transaction show up in the controller.
Hi Ashutosh - Thank you for your reply. You have sent heaps of info which I would be needing days to go through..
Sorry What I was saying was that we are monitoring multiples of hundreds of servers and sevices via AppDynamics and last week only i configured the other server which showed up nicely after the first only instalation,right. But for these particular sevice it is just set the AppAgentStatus=0%, the servers does shows up in the Tiers & Nodes tab and machin agent status is catching up and right now whilst typing it is sitting at 88%. So my another quesiton is that to hve AppAgentStatus other then 0% does the Machin Agent status needs to be at 100%?
And like other service/IIS WS are all cool on other servers but just not this one..
Unlike IIS based applications, we need to define Custom Match Rules of type .Net Class/Method to get BTs identified.
The info Ashutosh sent across will help you to identity appropriate classes/methods on which you can create Custom Match rule.
The steps are pretty straight forward
1) Enable "find-entry-points" node level property on the tier at Controller UI -> Refer Ashutosh's comment on how to do that
2) Genrate load on the Window Services specially on transactions which will make some kind of exit call
3) Now investigate Business Transaction Logs and identify appropriate Class/Method for Custom Match Rules
4) After creating appropriate rules recycle Agent Coordinator Service and WIndows Services
Result : You should see BTs showing up
Also I see you have support portal/ helpcente access. You can create a new ticket their if you face issues or have any questions you need immediate answers for.
Hi Raunak - As you said that we have access to support portal/ helpcente access. Would you be able to send me the link for that as I need to lodge a ticket there for some other topic.
Here is the link to file a case for support https://www.appdynamics.com/support/
It is not necessary to be public only, access modifier can be anything for the method on which you are creating entry point rule. Let us know if you face any issue on this.
Thanks for the quick reply.
If i give private or internal methods appdynamics not able track it(transaction not detecting).
If i understood correclty you are not able to see the private methods during the Live Proview ? please correct me if it is not the case also and kindly provide us the any screen shot to understand the issue further.
If above understnding is correct, kindly confirm what is the .Net Agent version you are using ? As this issue is resolved in the 4.4.1 .Net Agent version. So kindly install the latest .Net Agent version and then check the behaviour.
Let us know if you have any question on this.