Custom instrumentation
By default, Site24x7 APM Insight agent captures all your application transactions, known classes and methods, and web frameworks. In certain cases, methods or frameworks, apart from the default ones, are not captured, so as to minimize the agent overload on the application.
To view all your methods and frameworks and to obtain granularity in your debugging process, you can instrument your custom methods or frameworks - this process, is called as Custom instrumentation in the monitoring lingo.
Custom instrumenation can be helpful:
- When you want to obtain 100% visibility into all your application methods and frameworks
- When you see an 'Un instrumented block of code' while checking transaction traces. In such cases, you can instrument the method or class, that was not picked by the agent to check it's performance
- When the framework is not supported or instrumented by default.
For the above mentioned circumstances, you can deploy custom instrumentation.
This method is supported only for Java and .NET Core agents. You can custom instrument your Ruby and Node.js applications via agent APIs.
Also, these configurations are specific to APM Insight applications and this will be applied across all instances. For instance specific custom instrumentation,you can use Java agent API or .NET agent API, depending upon your application platform.
How to custom instrument methods, classes, or frameworks?
- Log in to Site24x7 > APM Insight > Your application
- Navigate to Edit application > Custom Instrumentation
- You can enter the input file in Text or JSON format. The format for both types are given below.
For both JSON and Text type, use the below format for specifying the fully qualified classname:
Java classes Format - com/site24x7/apminsight/agent/JavaAgent
Dotnet classes Format - Com.Site24x7.Apminsight.Agent.DotAgent
Format:{"Fully qualified ClassName":{"MethodName1" : "ComponentName", "MethodName2" : "ComponentName" }}Example:{
"com.sample.web.tasks.ModelUpdateHandler":
{"doHandle":"MODEL_UPDATE",
"update":"MODEL_UPDATE"}
}
For type Text:
Format:
Fully qualified ClassName : methodNames separated by comma(,) : Component Name
Example:
com.sample.web.tasks.ModelUpdateHandler : doHandle,update : MODEL_UPDATE
com.sample.web.services.SystemCheck : doCheck, isHealthy :
com.sample.web.store.DataModifier : : MODIFIER
com.sample.web.utils.FileUtils : :
- Before and after custom intrumentation