Development Level Monitoring and AppDynamics
AppDynamics monitors your production applications in a way that is designed to provide maximum visibility with the least amount of overhead. Development level monitoring is a mode in which certain default limits on the data that AppDynamics collects are turned off, giving you additional visibility on application activities.
This default mode is production-level monitoring and applies limits to the retention of certain types of information. In a testing environment or other environments where overhead is not an issue, you can enable development level monitoring. Development mode is intended for temporary use while setting up AppDynamics or for occasional application troubleshooting.
You apply development monitoring to a specific business transaction and originating node combination. An originating node is one or more of the nodes that serve as the entry points for the transaction.
Transactions originating on an enabled node are subject to development level monitoring on downstream nodes that participate in processing that business transaction. Note that this applies for that business application only, however. Processing for a continuing transaction in another business application is not monitored at the development level unless you have enabled development level monitoring at the continuing business application as well.
While development monitoring increases the retention of call graphs and SQL statement capture, certain limits still apply. The limits specify maximum thresholds for calls per minute, Java heap utilization, and snapshot segments generated across the Controller. If the thresholds are exceeded, development level monitoring is turned off. See Development Level Monitoring Limits.
Effects of Development Mode
Enabling development level monitoring affects the capture of the following information:
- Exit Calls—AppDynamics increases information collected for exit calls to backend systems. For database backends, the agent collects all SQL statements without per-transaction limits. The agent also collects all JDBC and ADO.NET calls attached to methods, even when the call duration is less than 10 ms.
- Snapshots—The agent attempts to take a snapshot for every transaction, ignoring the values for these agent node properties:
Development mode does not guarantee snapshots for every transaction since it was not designed to capture data on every request.
- Call Graphs—The agent captures full call graphs in development mode.
Enable Development Level Monitoring
You enable development level monitoring in the context of a particular business transaction/originating node combination. To avoid exceeding development mode limits described in Development Level Monitoring Limits, it is recommended that you enable development monitoring at the smallest scope possible.
To enable development level monitoring:
- In the business application for which you want to enable monitoring, click Configuration > Development Level Monitoring.
- Enable the Development Level Monitoring switch at the top of the page.
For agents <= 4.3, enabling development level monitoring applies globally, rather than for a particular business transaction. For agents >+ 4.3, you need to configure the business transaction and node to which the configuration applies, as described in the following step.
- Select the Business Transaction for which you want to enable development monitoring.
- Click the Enabled checkbox next to the originating nodes on which you want to enable development level monitoring.
Turn Off Development Level Monitoring
Even in pre-production environments, enabling development level monitoring would normally be a temporary measure done in select cases. When finished, turn off development level monitoring for the business application, as described here.
To turn off development level monitoring:
- In the business application for which you want to turn off development level monitoring, click Configuration > Development Level Monitoring.
- Use the Development Level Monitoring switch at the top of the page to turn off develop level monitoring. The switch turns off such monitoring for all business transactions in the business application.
Development mode may also be turned off automatically.
Development Level Monitoring Limits
The following agent-applied and Controller-applied limits prevent excessive resource consumption during development mode.
App Agent Limits
These limits apply for an App Agent:
- For each node, a maximum of 500 calls per minute. (See dev-mode-suspend-cpm.)
- For each JVM, the maximum heap utilization percentage of 90%. (See heap-storage-monitor-devmode-disable-trigger-pct.)
If a limit is exceeded, an agent log event is generated indicating that the development mode has been turned off because limits were exceeded
The Controller monitors the number of snapshot segments collected during development monitoring across business transactions. A snapshot segment corresponds to the processing activities for a business transaction on a particular tier. A single business transaction that traverses many tiers can generate more data than several business transactions that only traverse a few tiers.
When the threshold of 5000 snapshot segments per minute is exceeded, the Controller turns off development mode for the top contributing business transactions. The Controller turns off development mode on as many business transactions as are needed to reduce the snapshot segment contribution by 20%.
For example, if a single business transaction is accountable for 25% of the snapshot segments when the threshold is exceeded, only it is turned off. As another example, given the following business transactions and the percentage of snapshot segments, they each contributed when the threshold was exceeded, the first two are turned off:
- BT1: 17%
- BT2: 16%
- BT3: 15%
- BT4: 15%
- BT5: 13%
- BT6: 12%
- BT7: 12%
You cannot configure this Controller limit.