On this page:
On this page:
The first generally available 4.4.x release is 22.214.171.124, which incorporates fixes to pre-release issues in 126.96.36.199 and 188.8.131.52.
The release notes are inclusive. All updates since 184.108.40.206 are noted in the 4.4.x Release Notes. The Product Announcements and Alerts page lists versions, along with release dates, across product versions.
The 4.4.x documentation reflects AppDynamics Application Intelligence Platform version 4.4.x. Changes between minor versions are noted in the release notes and indicated in-place in the documentation where applicable.
AppDynamics App iQ Platform Notes
The following updates apply to the common components of the AppDynamics App iQ Platform, including changes to the cross-product elements of the Controller UI.
- You can now find a tier, node, application, or business transaction by simply clicking the find button on the top of the Controller UI and entering the first few letters of the entity name. Once you have found the entity of interest, you can click it in the list of matching items in the search box to open the flow map for that entity.
Keep the following details in mind when using the Simple Search feature:
- The feature supports global search, not contextual search, so it is not limited to one application.
- The feature does not perform strict contains search. The searched entity is broken down into tokens, and Simple Search supports a “stats with” search within each token.
- Searches are not case sensitive.
- You need to have Events Service installed for Simple Search to work since data and indexes are created and stored in it.
- The look and feel of dashboards has been simplified and improved, especially for the Heap & Garbage Collection dashboard found under the Memory tab of Tiers & Nodes.
The Health List widget has been merged with the Health Status widget since both supported similar concepts. The functionality of the new Health Status widget is the same as the old one but with a few improvements. The Health Status widget can support bar, list, and status light circle visuals. The circle supports multiple health rule evaluations, and now has different aggregation displays. Old, existing Health List and Health Status widgets are converted to the new Health Status widget upon upgrade. For more information, see Widgets.
You now have more control on how you would like your metric values to be displayed. In the Metric Value widget, you can specify the formatting of metric numbers by abbreviating them, setting a decimal limit, and removing trailing zeros. For more information, see Widgets.
For the Time Series Graph widget, selecting “Tier / Node Health - Transaction Performance” as your Metric Category to view infrastructure metrics no longer provides data points since it now correctly corresponds to overall application performance metrics. To see infrastructure metrics, you must change the configuration to “Tier / Node Health - Hardware, JVM, CLR”. For more information, see Widgets.
- The AppDynamics Universal Agent is a deployment tool that automates the tasks of installing, running, and maintaining AppDynamics agents. The Universal Agent runs on Linux and Microsoft Windows systems, and is best used to manage agents in very large deployments. In this release, the Universal Agent adds support for managing the .NET Agent, Analytics Agent (for Transaction Analytics), and Network Agent. For more information, see AppDynamics Universal Agent.
- You can create and manage users, groups, and roles using RBAC REST APIs. For more information, see RBAC API.
- You can manage licenses for Network Visibility on the License page.
|ALERT-6||Action dialog UI freezes when an existing action within an email template is opened, saved, or edited|
|ALERT-17||Deep link URL provided by a custom action linked to an AppServer restart event is broken|
|ALERT-24||Health rule evaluation for a metric with rollup type=CURRENT takes first unit of time in the interval when it should take the last|
|ALERT-25||Health rule fires even when the machine agent availability metric is not reporting due to issue with association|
|ALERT-32||500 error occurs when you try to retrieve Export Actions with invalid application name|
|ALERT-122||Triggering issue with HTTP request actions on SaaS Controller is fixed by enabling logging of HTTP actions to the server log|
|ALERT-215||Health rules trigger false positive alerts due to inaccurate baseline values|
|ALERT-217||Recursive check on metric conditions fixes enforcement issue with the EUM license requirements when creating health rules|
|ALERT-236||No text field present under drop down "Servers/Node matching the following Criteria" for default health rules|
|ALERT-415||HTTPActionPlan double encodes query parameter|
|ALERT-505||Unable to save health rule if Group Count is selected|
|ALERT-538||Incidents remain open even after health rule returns to NORMAL|
|ALERT-569||Potential security issues detected in third-party libraries|
|ALERT-571||Events which trigger actions show actions triggered even if the action is set to disabled|
|ALERT-589||"Disk Usage is too high ..." health rule status does not get evaluated|
|DASH-582||Widget title is overwritten when opened for editing|
|DASH-952||Dashboard with Metric Value widget displays values as "_ _"|
|PLATCPS‑1095||License rule dialog does not filter out removed apps/machines when editing a license rule|
|RPTSVC-7||Absolute layout dashboard now uses the dashboard size to set the content page size|
|RPTSVC-104||Dashboard and Audit Reports do not show current timezone data|
|UIPLAT-589||Settings gear icon is unresponsive for Controllers with custom instance methods|
|UIPLAT-300||License rule name containing "&" is not selectable in the UI|
To use the Universal Agent to deploy the Analytics Agent on Linux, you must use machine-agent mode. Standalone mode is not supported for this use case.
- Using the auto-Java feature for deployment of the Java Agent with the Universal Agent is not supported on Windows 2008 SP2 32-bit and 64-bit.
- To install the .NET Agent with the Universal Agent use a local repository for the .NET Agent distribution file. Downloading the .NET Agent from the Controller is not supported.
- For JMX functionality to work, set a Currently monitored statistic set to an option other than None in IBM WebSphere.
Application Performance Management Notes
You can set up a trust called federated friendship between business applications in different accounts on one or more Controllers. When business applications from the friend accounts make entry and exit calls to one another, they show up in flow maps as federated cross application flow.
Federated cross application flow works with Java and .NET agents that are version 4.4 or later.
- In live preview mode, the number of methods and classes that can be returned by an agent are now limit-bounded. The limits are:
- Maximum number of classes: 1000
- Maximum number of methods: 300
C/C++ Agent Enhancements
- You can override the default business transaction start time using the
appd_bt_override_start_time_msmethod. The default start time is epoch time (January 1, 1970 UTC). For more information, see C/C++ Agent SDK Reference.
Go Agent Enhancements
The Logging property in the Config struct lets you configure logging settings, such as where log files are written to and the maximum number of logging files to store on disk. For more information, see Go Agent SDK Reference.
Java Agent Enhancements
You can register the spring-mvc-naming-scheme node property to configure naming of Spring MVC requests. See spring-mvc-naming-scheme node in App Agent Node Properties Reference for more information.
A new system property,
appdynamics.agent.ssl.keymanager.factory.algorithm, let's you set the algorithm pertaining to SSL Mutual Authentication between the Agent and Controller. To use the property, add the option to the JVM startup command, as in the following example:
The Java Agent automatically detects Mule ESB HTTP and JMS entry points for versions 3.6, 3.7, 3.8, and 3.9. It also discovers Mule ESB HTTP exit points for the same versions.
- The agent now supports Java 9. See Java Supported Environments for complete support information.
- The Java Agent adds support for JMX Metrics for Kafka Broker.
- The Java Agent adds support for Eclipse Vert.x versions 3.4.1 and 3.4.2.
- Backend support added for Ning Asynchronous HTTP clients version 1.x (
NingAsyncHttpClient) and 2.x (
Previously, with the -Dappdynamics.agent.reuse.nodeName property enabled, the Java Agent wrote log information to a buffer. After registering with the Controller, it wrote the buffered logs to a log directory created upon registration. If registration failed, however, the buffered log messages were lost, making it difficult to troubleshoot startup and registration issues.
Now, prior to registration, agent logs are written to stdout by default, and you have the additional option of having them written to a log file instead. Writing to a log file enables you to troubleshoot agent startup problems in case registration fails. See Instrument JVMs in a Dynamic Environment for more information.
.NET Agent Enhancements
The .NET Micro Agent no longer requires the AppDynamics .NET Agent Coordinator Service. You can install the .NET Micro Agent directly on Azure App Services and Azure Service Fabric.
- When the .NET Micro Agent is installed on Azure App Services and Azure Service Fabric, it installs the project files to
- The .NET Agent includes correlation support for Service Remoting in Azure Service Fabric.
The .NET Agent supports the
Taskreturn type for Method Invocation Data Collectors.
- The .NET Agent includes the following backend and remote service updates:
- Improved naming for Azure Table and Azure Blob backends.
- Support for the MongoDB version 2.2 sync API.
- Support for the Redis StackExchange client.
- .NET Agent requires Universal C Runtime. If the installer warns you that it is not installed on your Windows server, take one of these steps:
Node.js Agent Enhancements
- You can configure your logging settings to log to STDOUT by setting the outputType parameter in logging settings. For more information, see Node.js Agent Logging.
- In Process Snapshots, you can view data on asynchronous activities in the Node.js event loop for N|Solid processes. For more information, see N|Solid Monitoring Data.
- For the txn.addSnapshotData and txn.addAnalyticsData methods, the key and value arguments are no longer coerced to string. Numeric values are properly passed as integers, floats, etc.
- BrokerURL is no longer supported as a backend identification name for Kafka consumer backends. If using it as a naming property, you will need to change the configuration to use another identifying property.
|APMPLAT‑138||Last JVM start time showing current date on node list dashboard|
|APMPLAT-524||Application List Flow View doesn't show EUM application|
|APMPLAT-540||Frequent logging with "Invalid principal name: ANONYMOUS" for hotspot learning|
|APMPLAT-727||Clicking the All Other Traffic BT in Tier Snapshots navigates to different All Other Traffic BT|
|APMPLAT‑923||Metric browser log scale rendering is broken when values contain non zero, zero, and no data|
|APMPLAT-978||Business transaction configuration UI for .NET incorrectly indicates Perl-style regular expression support|
|APMPLAT-1366||Rest API calls failing due to encoding issue|
|APMPLAT-1552||Business Transaction list slow response when searching/filtering|
|APMPLAT-1569||500 ISE exception appears when a read-only user tries to exclude a service endpoint on the SEP Dashboard|
|APMPLAT-1573||Same value for current and average value in dashboard|
|APMPLAT‑1602||Duplicate "All Other Traffic" per tier on business transaction limit reached|
|APMPLAT-1754||Machine agent keeps consuming license even though the machine instance has been deleted|
|APMPLAT-1854||Creating rule in Live Preview for POCO BT, the Name text box loses focus|
|APMPLAT-1855||Exceptions list illegible due to overlaid text|
|APMPLAT-2061||Machine Snapshot with Archive enabled do not show as Archived in Controller GUI|
|APMPLAT‑2064||RBAC: Configure Service Endpoint not working at application/tier level|
|APMPLAT-2117||Improved performance needed for hasEUMADDs|
|APMPLAT-2236||'Deleting' message needed when events are being deleted|
|APMPLAT-2245||Application dashboard performance issues due to getMobileApplicationsCount|
|APMPLAT‑2355||Unable to download JVM Crash Logs with 403 forbidden error|
|APMPLAT-2415||Application import did not import enabled POJO Business Transaction Match Rule|
|DOTNET-570||Coordinator service hangs during restart|
|JAVA-543||Ignore logged messages does not work with ignore exception|
|JAVA-696||Merge delimiter is not used for ADO.NET/WebService/WCF/MongoDB Backend detection|
|JAVA-761||NPE for instrumenting webObject|
|JAVA-896||HTTP backends not being identified with BsonSerializationException|
|JAVA-909||End-to-end latency is not reported for Tibco BW Process|
|JAVA-928||Incorrect exit call count reported for exits based on Sun HttpURLConnection class in some cases|
|JAVA-1196||Exception chain not differentiable from list in snapshot view in UI due to repeating same exception name|
|JAVA-1210||Instrumentation broken for TibcoHttpEntryPointInterceptor|
|JAVA-1278||Neutralization Error for com.singularity.snapshot.CallStackSampler|
|JAVA-1333||Custom DB classes instrumented, but do now show up in snapshots or flow maps|
- If you enable Kafka consumer entry points for the Java Agent, the flow map shows the data flow in reverse from the node to the Kafka cluster.
- Inactive nodes do not get marked as historical despite appdynamics.jvm.shutdown.mark.node.as.historical being set to true.
- Business transaction retention settings are not affected by the business.transaction.retention.period value in the Admin Console.
Database Visibility Notes
- In the Execution Plan Window, the cached plans for SQL Server are rendered as diagrams for better readability.
|DBMON-39||Unable to see transaction snapshot for Microsoft SQL Database|
|DBMON-240||Run-Duration sorting should be numeric|
|DBMON-388||Collecter UI shows "agent is currently not reporting data"|
|DBMON-1028||Missing executions and avg response time for SQL Server 2005 sp4|
|DBMON‑1228||Database URL is broken after selecting custom time range|
End-User Monitoring Updates
- To perform automatic injection for .NET, you no longer need to set the attribute
<head>element of the master or the
- The Xamarin Agent, in addition to reporting native app crashes, now also reports uncaught exceptions. You can view the stacktraceintheCrash Details dialog, which will include the class and methods called. If you are in debug mode, you can also view the file names and line numbers in the stack trace.
- The usage stats for connection types given in the Usage Stats tab of the Mobile Dashboard are now based on network requests, not app opens.
- In addition to reporting crashes, network requests, usage stats, and sessions, Mobile RUM now also reports a number of non-fatal issues that don't cause crashes but negatively impact the user experience. The primary app issue is known as "application not responding" or ANR, but the list of non-fatal issues extends to security issues, UI issues, and exceptions. For this version, Mobile RUM will only support the non-fatal issues such as ANRs and exceptions.
Browser Synthetic Monitoring
- You can install and run Synthetic Private Agents on internal networks to monitor internal websites or services that aren't visible to the public Internet. You can also use Synthetic Private Agents to test from specific locations or within your premises. Synthetic Private Agents require a separate license allocation from Hosted Synthetic Agents.
- Synthetic jobs can now check the availability of resources. You can set the session state to "Warning" or "Failed" when a resource is missing, and configure alerts accordingly. See Configure Availability Rules to learn how.
You can choose a mobile browser to run a script or URL measurement. The synthetic job runs Chrome in the mobile emulation mode with the profile properties for the selected mobile browser.
|The EUM Installer fails on Windows when the Database password has the character '^'|
|BRUM-8||The EUM Installer fails to connect to the Events Service over HTTPS configured with custom CA certificates|
|BRUM-9||Uninstalling the EUM Server on Unix machines can in some cases remove the Controller installation|
|BRUM-10||EUM Upgrade: Silent EUM upgrade doesn't take into account the mysql.dbHostName parameter in a split-host setup|
|BRUM-272||Some IP addresses resolve to a country named "Asia/Pacific Region"|
|BRUM-308||The EUM Installer does not preserve a customer's root certificate|
|BRUM-829||Validating large mapping files causes an "Out of Memory Error" (OOME) on the Geo Server|
|BRUM-942||When configuring applications, the App Server Agents incorrectly fetch non-business applications, such as EUM apps|
|BRUM-1089||The EUM license does not get pushed to the EUM Processor until you create an application|
|BRUM-1141||Upgrading to the 220.127.116.11 JS Agent resulted in an increase of AJAX CORS errors|
|BRUM-1184||The Getting Started page cannot send and verify a test page because of a "403 Forbidden" error|
|BRUM-1269||Events service URL converted to http from https|
|MRUM-650||The Controller's registration heartbeat that keeps apps and accounts alive is unreliable|
|MRUM-1036||The cURL query to get the last 50 Proguard mapping file gives the first 50|
Browser Synthetic Monitoring
|SYNTH-59||The synthetic session details dialog should always display a visual complete time for each page|
|SYNTH-1158||Some types of failures have ambiguous error messages|
|SYNTH-1159||Sessions stall when synthetic scripts open a second window and then close it.|
|EUMUI-108||The server time in browser snapshots is greater than the overall end user response time|
|EUMUI-529||The "Synthetic Requests per Minute" needs to be removed from the "Browser App List"|
|EUMUI-680||The "Getting Started" wizard for creating EUM apps fails to check for existing APM application names|
|EUMUI-725||Unable to export records on EUM_WEB_ANALYZE page|
|EUMUI-965||The "Browser Sessions > Charts" tab uses the wrong unit of measurement for the "Least Available Jobs" widget|
|EUMUI-993||The frequency dropdown misleads customers into thinking that jobs can be scheduled at 1-4 minute intervals|
Infrastructure Visibility Notes
Integrated Network Visibility
With Integrated Network Visibility, you can
- Answer the key question quickly and easily: Is the network to blame for any performance issues in my application?
- Identify the root cause of performance issues in the application, the network, or in application/network interactions (i.e., how an application or server utilizes the network).
- Pinpoint the traffic flows, individual nodes, and transport connections where network or application/network issues are occurring.
- Collect detailed metrics that show how the network is performing and how well your application uses network connections and resources.
- Collect and report targeted troubleshooting information to network, IT, DevOps, and other teams.
Network Visibility is supported on Linux hosts with Java App Server agents. See Integrated Network Visibility.
Server Visibility Enhancements
- Starting in November 2017, APM Advanced and APM Peak Edition licenses include one Server Visibility unit that covers one OS instance. Standalone licenses for Server Visibility are also available; AppDynamics sells each standalone license for Server Visibility in packs of 3, covering 3 OS instances. See License Entitlements and Restrictions.
- Server tagging makes it easy to query, filter, and compare related servers using custom metadata. You can tag related servers based on OS, location, tier, owner, or any other relevant criteria. Server tags provide additional context to server metrics.
Server tagging is currently available for Linux, Windows, and Solaris. See Server Tagging.
<machine-agent-home>/extensions/ServerMonitoring) has the following changes:
- The following settings enable you to configure the rate at which the Standalone Machine Agent collects specific sets of metrics on Linux hosts:
memoryMonitorConfig– memory metrics
cpusMonitorConfig– CPU metrics
blacklistSelectorRegexsetting has been updated to exclude Docker volumes by default. This change was introduced to prevent high data loads that can occur from monitoring a lot of ephemeral Docker volumes.
- The following settings enable you to configure the rate at which the Standalone Machine Agent collects specific sets of metrics on Linux hosts:
Server Visibility Resolved Issues
|SERVER-1198||Service Availability generates alerts even if DNS lookup is down|
|SERVER-1202||Service Availability trims response data even after maxDownloadSize is increased in Controller|
|SERVER-1208||Standalone Machine Agent throws exception when Docker Visibility is enabled: "chroot: can't change root directory to '/hostroot': No such file or directory"|
|SERVER-1211||Fix to support turning off process monitoring when too many processes slow down performance on Standalone Machine Agent|
|SERVER‑1928||Service Availability - Custom Filters not Working correctly|
Standalone Machine Agent Resolved Issues
|SERVER-806||4.2.1 machine agent stopped reporting metrics when NFS volume became stale|
|SERVER-1210||JVM Crash Guard does not report crashes after App Server Agent is killed (Machine Agent does not detect kill event)|
|SERVER-1213||Memory Utilization metrics are not reported correctly on Windows|
|SERVER‑1370||appdynamics-machine-agent.pid not present in /var/run/appdynamics|
|SERVER-1551||Standalone Machine Agent does not handle backslash character correctly on Solaris 11|
|SERVER-1639||Metric Browser > Server & Infrastructure does not show Custom Metrics folder|
|SERVER-1640||Machine agent fails to collect raw data|
|SERVER-1696||<use-simple-hostname>true</use-simple-hostname> not working as intended|
|SERVER-1710||Linux Machine Agent cannot handle /proc/partition files that have a lot of partition entries|
|SERVER-2120||Standalone Machine Agent cannot collect OS metrics on Red Hat Enterprise Linux 7.4|
Server Visibility Known Issues
- If a metric name contains colons or pipe characters (
|), the Metric Browser interprets the name as hierarchically separated. These characters could appear in a process name, a disk or partition name, a mount point, or a network interface name.
- A machine agent enabled for the 4.1 Server Monitoring Beta will not work with a 4.4 Controller. To continue using Server Visibility (previously Server Monitoring), upgrade both the machine agent and the Controller.
- If the machine that a Machine Agent is monitoring goes to sleep, monitored processes might be duplicated on the Controller. Because the process has a new start time, the Controller interprets it a new process. When the configured process count is reached, the Controller marks the duplicated processes as terminated and purges them.
- (Windows only) You must have .NET Compatibilty Mode enabled for Server Visibility to work correctly on a server with a .NET APM agent installed.
- Server Visibility does not support the following on Solaris:
- Solaris zones
- Unicode characters
- The following Health Rule is disabled by default in this release:
Disk Usage is too high on at least one partition.
This wildcard health rule can result in high resource consumption and health rule evaluation times on the Controller. If this rule is critical for your environment, the recommended practice is to create your own custom Health Rules and apply specific rules for specific volumes on specific servers. For more information, see the following Support Advisory: https://community.appdynamics.com/t5/FEZ-Knowledge-Base/Server-Visibility-Support-Advisory/ta-p/22408
Docker Visibility Known Issues
- The Standalone Machine Agent running inside the container sometimes reports a few extra volumes for the host machine. This can result in a higher total volume for the aggregate volume metrics.
- There might be gaps in the container network I/O metrics. This happens because the Docker API resets the accumulated network I/O metric data for every 4.2 GB of data sent or received. When the data is reset, the Standalone Machine Agent calculates negative I/O values and does not report a data point for that time window.
- If the agent started monitoring the current container after the beginning of the selected time range in the Controller, the Controller might show metric data prior to the container start time. This metric data will include metrics from a previously monitored container. This behavior occurs when the Controller flag "sim.machines.reuse.enabled" is enabled.
- If the agent started monitoring the current container before the beginning of the selected time range in the Controller, the data is correct for the current container.
- If a container stops running while it is being monitored, the Tiers & Nodes Dashboard > Server tab will show data for the stopped container rather than for the underlying server.
- (Fixed in 4.4.2 App Agent and 4.4.2 Standalone Machine Agent) When multiple containers within a Kubernetes pod are monitored by the Standalone Machine Agent, the data can be inconsistent.
- In some cases, container monitoring is suspended when some containers that are currently being monitored are stopped. This issue has been observed on Docker API version 1.24. The suggested workarounds in this case are to
- Restart the Standalone Machine Agent (Docker Visibility will start monitoring the containers), or
- Upgrade to Docker CC/EE v17.03 or Docker Engine v1.13.
Standalone Machine Agent Known Issues
- Reset Machine Agent action on the AppDynamics Agents window is not available for 4.4 Machine Agents.
- (Windows only) The JavaHardwareMonitor extension and the ServerMonitoring extension (introduced in 4.2) assign network names differently. If you have any health rules based on JavaHardwareMonitor names, and you want to use these rules with the ServerMonitoring extension, you will need to update the names that these rules are based on.
Application Analytics Notes
Enhancements and Updates
- View Analytics Agent status and pipeline health for transaction and log analytics data. See View Analytics Agent Health.
Visualization and Widgets
- Funnel widget improvements include:
The ability to display the performance overlay on the funnel bar and show how many of the participating events in the step are in normal or slow or in error category. This is the Show Health option in the properties pane.
Ability to see the underlying events related to abandoners (drop-offs) at each stage of the funnel.
Visual layout improvements
- Property panes have been added to the Analytics widgets to provide more control over the widget appearance.
- The transaction Live Stream widget is no longer supported.
- You can now import your existing job files to create CLM source rules. See Migrate Log Analytics Job Files to Source Rules.
- You can create matching rules to dynamically specify which agents are in an Agent Scope. See Agent Scopes for Configuration Log Management.
- To prevent performance issues, safeguards have been added to the Grok/regex processing stage in the log analytics pipeline.
Business Outcomes are a way to monitor and correlate the data flow across multiple event sources. See Business Outcomes.
Experience Level Management
Experience Level Management (XLM) enables you to configure and schedule regular reports measuring performance against established service or experience levels. See Experience Level Management.
Upgrading the Analytics Agent
If you are running the Analytics Agent as a standalone binary, see this topic: Upgrade Analytics Agent.
If you are running the Analytics Agent through the Standalone Machine Agent, See Upgrade the Standalone Machine Agent for instructions.
If you have been collecting log analytics data:
- Preserve the old watermark file so that you can copy it to the corresponding location in the new <analytics-agent-home> directory structure.
- Preserve your pre-existing job files so that you can copy them to the corresponding location in the new <analytics-agent-home> directory structure.
Field Names for Data Collectors
In versions prior to 4.3, Analytics used the actual HTTP parameter name to display the fields collected by Data Collectors. Beginning in 4.3, Analytics is using the configured display name for such fields.
When you upgrade to 4.3 or 4.4 agents, new HTTP parameter data will appear under the display name. If you had previously configured the display name to be different from the actual parameter name, your historical data and new data collected by the 4.3 or 4.4 agents for a single HTTP parameter will be split between the two field names.
Enabling Transaction Analytics
Beginning with 4.3 agents, you should enable Transaction Analytics exclusively using the Analytics Configuration UI. The Analytics Configuration UI allows for enabling Analytics at the Application level. You should no longer use the deprecated
analytics-dynamic-service-enabled node property.
analytics-dynamic-service-enablednode property through the Agent Configuration UI (updating the
analytics-dynamic-service-enablednode property directly) it will have no affect on version 4.3 or higher Java Agents.
Version 4.2 and earlier app server agents use the
analytics-dynamic-service-enabled node property to enable Transaction Analytics. Using the node property directly allowed for disabling and enabling the Analytics Dynamic Service at the application, tier, and node levels. The Analytics Configuration UI allows for setting this property only at the Application level. Therefore, Java Agents 4.3 and higher are not be able to disable or enable the Analytics Dynamic Service at the tier and node levels.
Although the Analytics Dynamic Service configurations can be directly changed through the application import and the Analytics Dynamic Service import REST API, manipulating the Analytics Dynamic Service configurations through either of those mechanisms only updates the Analytics Dynamic Service configurations and not the corresponding
analytics-dynamic-service-enabled property. Therefore, if you use one of these import mechanisms to enable or disable the Analytics Dynamic Service and you have a mixture of old (pre 4.3) and new (4.3 and higher) agents, you must manually set the associated
analytics-dynamic-service-enabled property to match the Analytics Dynamic Service configuration value. The analytics-dynamic-service-enabled node property can also be set as part of the Application Import and has its own Import REST API (accessed at POST /setAgentProperty). See: Import Application Analytics Dynamic Service Configuration at Configuration Import and Export API.
|ANALYTICS-1339||Analytics table widget should retain column width in Custom Dash|
|ANALYTICS-1375||Scrolling analytics searches in Chrome results in jumping straight to the bottom of the page|
|ANALYTICS-1395||No validation when zooming in on analytics query|
|ANALYTICS-1424||Analytics UI : hide/unhide does not work for custom fields having special characters|
|ANALYTICS-1442||Page Name column wrapped up on dashboard and report on Analytics -> Custom Widget Builder|
|ANALYTICS-1754||Browser Analytics: Timestamp field needs to be fixed|
|ANALYTICS-1981||Data collectors populating incorrect values in analytics|
|ANALYTICS-2301||Type ahead auto completion only works for the first 100 entries|
Proxy settings in admin.jsp requires controller restart
Funnel widget steps do not allow drop-down selection of more than 100 records
|ANALYTICS-3379||Unrecognised field "error_details" for Analytics widget in custom dashboard|
|ADQL returning only the first element from the data collector list|
- To deploy the Analytics Agent on Linux using the Universal Agent, you must use machine-agent mode.
- Windows: You can not delete a log file with the "del" command while the analytics agent is collecting log data from the file.
- For Analytics Searches:
- In Basic mode, regular expressions and the NOT logical operator are not supported for free text search.
- In Basic mode, quotes and commas have no special meaning.
- Saved Searches from 4.1 can be imported multiple times if you click 'Import from 4.1' button multiple times.
- Due to timing issues, full information for business transactions may not appear immediately when running a Transaction Analytics search.
- If you have deployed EUM such that you are using an on-premises Events Service for transaction and log analytics data, and the SaaS Events Service for your EUM data, you can not query the browser or mobile request data using the Analytics API.
- When defining Business Outcomes, you can not delete the same field from one milestone and add it to a different milestone in the same Save action. To workaround this issue, delete the field from the first milestone and save the definition. Then edit the Business Outcome again and add the field to the second milestone and save the definition.
AppDynamics On-Premises Platform Notes
The following notes describe updates to the AppDynamics on-premises platform, including the Controller, Events Service, and EUM Server components.
The Enterprise Console (formally known as the Platform Administration Application) is the installer for the Controller and Events Service. You can use it to install and manage the entire lifecycle of new or existing AppDynamics Platforms and components. The application provides a GUI and command line interface that you can use to perform the following tasks:
- Manage multiple platforms at the same time using the application
- Discover, install, and upgrade Controllers, Event Services, and MySQL nodes
- Manage High Availability (HA pair) lifecycle without the use of the CLI based HA-toolkit or sudo privileges
- Perform failover management
- Manage Controller and Events Service lifecycle
- Utilize GUI & CLI support
- Manage AppServer and database configurations
See Enterprise Console for more details.
- The default values for Event and request segment data (RSD) rate limits have been set to 7,000 and 30,000, respectively. This will reduce the need to update the values as the new default values are based upon realistic expectations.
- The default value for the flag,
application.diagnostic.data.purge.enabled, has been set to true. You can update the flag value in the Controller Settings. This setting helps with clearing up disk storage space by purging stale entites and their metrics.
- The EUM Server product installation now allows you to install the EUM Server and a MySQL database instance on a single host.
- If you have migrated your EUM Server from version 4.3.x or earlier to version 4.4, you must migrate the MySQL instance previously stored on the Controller host to the EUM server host. For instructions, contact your AppDynamics Sales or Professional Services team.
- The IllegalStateException error generated when the Controller is not connected to an Events Service is now throttled to once per minute. There is also a change in logging messages, where EJBException is now a ControllerTimerTaskBean exception, when the Events Service is not configured.
- You can upgrade your Platform with the Enterprise Console. The Enterprise Console simplifies the upgrade process by allowing you to discover and upgrade Controllers, Controller HA pairs, and Events Service thought its GUI. You can pick and choose the platform or service to upgrade once your Enterprise Console is installed or upgraded. The Enterprise Console supports Controller (standalone and HA-pair) and Events Service upgrades starting from 4.1 and higher to the latest version. If you are on an earlier version like 3.x or 4.0.x, and would like to upgrade to 4.4, you would need to use the package installers and first upgrade to 4.1. Then use the Enterprise Console to upgrade to 4.4. See Upgrade Platform Components for more details.
|ECONSOLE-270||Mac OSX Platform Admin 18.104.22.168 installer is corrupt due to Oracle JRE changes|
|ECONSOLE-711||References to the 4.2 Platform Admin remain after upgrading to 4.3|
|ECONSOLE-938||Controller 4.3.3 Installer fails with varfile usage|
|ECONSOLE-968||Installer does not check for overlap between MySQL data directory and other installation directories|
|ECONSOLE-1052||"Port number xxx conflicts" for the TCP/Unicast port error|
|METADATA-624||Unable to create user with username "root" in 4.3|
|METADATA-1284||Unable to delete custom role due to Controller permission migration|
|METADATA‑1432||Obsolete child metric to virtual metric relationships are not invalidated and removed from the metadata cache when updating virtual metrics|
|METRICSVC-374||Multiple time-slices for rollup breaks custom dashboard widgets|
|UIPLAT-233||4.3 Controller login page loads very slowly on IE|
- A known issue prevents the Controller database from starting at installation time if another instance of MySQL is running on the machine. Certain Linux operating system distributions include MySQL. If the bundled MySQL instance is running, you will need to shut it down to complete the AppDynamics Controller installation.
- To run multiple Events Services on a Windows box, copy the bits to multiple directories and install them as service. A unique suffix to the Events Service service name will be auto generated based on the directory path of the bits. The executor on Windows does not support changing the process name in properties files.
Deprecation and End of Life (EOL) Notices
- The AppDynamics Java Agent will no longer support monitoring Java applications running in the Java Development Kit 5. See Desupport Notice: Java Development Kit 5.
Mobile RUM: Dynamic Info Points are no longer available for Android apps.
End-User Monitoring: The option View Dark Mode has been removed from the Geo Dashboard.
- Server Visibility (formerly Server Monitoring): The "Disk Usage is too high on at least one partition" health rule is now disabled. See Support Advisory: "Disk Usage is Too High" Health Rule is Disabled in Release 4.3 and Higher.
- The Controller UI is no longer supported on IE 9. IE users are advised to use IE 10+ versions when using the Controller UI.
- The Controller Package Installer is no longer supported. The Enterprise Console application supports most of your platform deployment needs, including installing a Controller and Events Service.
|ANALYTICS-4104||Custom User Data Missing From ADQL Data Grid|
|METADATA-1905||Flow map loads very slowly after upgrade|
|APMPLAT-3167||Wrong name and exit type for DynamoDb remote services after upgrade|
- Enterprise Console 22.214.171.12431
|ANALYTICS-3772||Scheduled queries observed in SaaS instances run every 15 mins with excessive duration and no metrics|
|ANALYTICS-4516||Metric jobs fail with java.util.concurrent.CancellationException|
|BRUM-1957||Controller threads leaking, resulting in out of memory errors|
|DBMON-1483||Deploying a large number of DB Agents causes agent pool saturation|
|ECONSOLE-1932||Backup Controller upgrade fails due to keystore file mismatch between primary and secondary Controllers|
|DBMON-1511||Database Agent causing excessive CPU utilization|
If a 4.4.1 artifact has been updated, the version number of the updated artifact and its availability date are listed below. The version number corresponds to that shown on the download portal (http://download.appdynamics.com).
Version 4.4.1 applies updates to:
- Enterprise Console
- C/C++ Agent
- Node.js Agent
- .NET Agent
- Java Agent
- Database Agent
- Universal Agent
- Application Analytics
- Server Visibility
- Network Visibility
- Browser Real User Monitoring
- Mobile Real User Monitoring
- Browser Synthetic Monitoring
- The Controller JRE has been upgraded to version 8u152 to fix sporadic JRE crashes.
- Enterprise Console: The MySQL upgrade requires glibc2 (2.12 or later) and libnuma libraries to be present on Linux.
- You can edit your platform name from the Enterprise Console UI.
- MySQL has been upgraded to 5.7.20 to address security vulnerabilities.
|ECONSOLE-1876||Controller installation fails on OS with Non English Locale|
|ECONSOLE-1932||4.2 to 4.4 High Availability Console upgrade failed|
- You can use account level configurations to enable dashboard/widget limits on large numbers of JMX instances or nodes instrumented in one application while returning widget data. This also includes threshold checks for business transactions, errors, servers, and backend data. This applies to the JMX type metric in a widget's “Type of Nodes” menu. The “All Nodes in the Application” option becomes disabled if the number of nodes exceeds the threshold. An error is returned if the number of any threshold is exceeded on the backend. This should help prevent outages.
|APMPLAT-1819||REST API skips reporting of some events|
|APMPLAT-2846||Unable to scroll in Instrumentation screens using Chrome|
|APMPLAT-2595||Changes do not persist when adding new value in "Detect Errors based on Redirect Pages" table|
|PLATCPS-1571||In some cases, synchronization issues can cause agent license to be denied incorrectly|
- A proxyless version of the C/C++ agent is now available, which means you no longer need to run a proxy to install and use the agent. The proxy is replaced with a process called libagent.
- You can enable SSL for the proxyless C/C++ agent.
- The /opt/appdynamics-sdk-native/sdk_lib/ directory path has been modified to /opt/appdynamics-cpp-sdk/. You may need to update your include and library paths to reflect the new library and header file locations.
- You can set the following properties:
- reuseNode: set to True to enable reusing node names. This property is useful for monitoring environments where there are many nodes with short life spans.
- nodeReusePrefix: set to the string that prefixes the node name when reuseNode is set to true. The Controller uses this prefix to generate node names dynamically.
- certificateFile: set to the directory path of the SSL certificate.
Version 126.96.36.1997 – Jan 31, 2018
- All versions of Microsoft ASP.NET Core are supported on the full framework, most recently ASP.NET Core 2.0.
WebJobs using Azure queues and Service Bus triggers are supported.
|DOTNET-934||.NET Agent does not start automatically on machine startup due to Coordinator service crash|
|DOTNET-972||.NET RabbitMQ Instrumentation can cause high CPU and (in rare cases) a race condition leading to application errors|
Version 188.8.131.525 – Jan 31, 2018
|DOTNET-758||Agent internal method (Reflection.Invoke) shows up on callgraphs for no dependency instrumentation|
|DOTNET-924||Azure Cloud Services package - Node naming behavior changed in 4.3, reverting to 4.2 behavior|
|DOTNET-929||Getter chain like GetType().Name not working on Parameters in POCO for splitting|
|DOTNET-1164||Azure Extension using JSON Config is instrumenting all the .net processes running on Azure instance|
|DOTNET-1168||Private methods are not visible while doing the Live Preview Class Method Browser|
|DOTNET-1221||EUM automatic injection: Response type other than 'html/text' should not be scanned by HtmlAgilityPack|
|DOTNET-1303||ASP.NET Core 2.0 on the .NET Full Framework crashes|
|JAVA‑1397||When monitoring Glassfish Jersey transactions with custom rule, Java Agent detects BTs in live preview but not when custom rule is saved|
|JAVA‑1503||Nodes do not get marked as historical in some cases|
- When using CyberArk for Database Visibility, you can customize the application name in your CyberArk manager. Previously, the application name was set to AppDynamics and could not be customized.
|DBMON-1244||When a backend is linked to a collector for an Oracle cluster, UI shows individual nodes instead of one Collector|
|DBMON-1390||Not showing insert/update query for Mongo DB|
- Previously, a rulebook could include the sim-enabled property, which specified whether Server Visibility is enabled. The default value of this setting was
true. This default overrode the Machine Agent bundle configuration setting, which is
falseby default. This release changes the priority of default, so that the machine agent bundle configuration (
false) default prevails over the rulebook default. See Enable Server Visibility for more information.
|UNIAGENT-244||The Universal Agent does not report that .NET Agent start failed configuration|
|UNIAGENT-293||default.json has misleading comment|
|UNIAGENT-294||config.xml not correctly patched with empty XML|
|UNIAGENT-306||Ability to control dotnet-compatibility-mode attribute in rulebook required|
|UNIAGENT-308||Default to default.json configuration file rather than first available|
- ADQL - Support for the datetime data type is added for the BETWEEN keyword.
- Business Outcomes - The default value of the analytics.business.outcomes.flowmap.enabled property is now set to true. With this change, a flow map detailing the business workflow is automatically displayed upon selecting a Business Outcome event. Use the Controller Settings to change the default behavior.
|ANALYTICS-3948||Drilldown into Analytics Widget causes HTTP 404 error|
|SERVER-1985||Servers drop down is empty while editing the service monitoring configuration|
You can now copy IPs and ports for individual connections from the Network Dashboard. This makes it easy to forward this information to operations and other personnel when troubleshooting an issue. To copy IPs and ports:
- Click on a link to open the link popup and go to the Connections tab.
- Select the connections of interest (use ctrl-click to select multiple connections).
- Right-click on the selection and choose Copy IP addresses to clipboard.
Browser Real User Monitoring
|BRUM-903||XHR requests that take longer than 30 seconds are not reported in some cases|
EUM application configuration updates can be extremely slow to propagate to some geographic regions
|BRUM-1957||Fix to prevent thread leaks in 4.4 Controller|
Mobile Real User Monitoring
The Android SDK includes new APIs for disabling and enabling screenshots from being taken for blocks of code. Calling the method
blockScreenshots will disable screenshots until you call the method
unblockScreenshots. You can also call screenshotsBlocked to determine whether screenshots are being blocked by this new API.
|MRUM-1017||iOS Agent generates a Main Thread Checker warning under Xcode9|
|MRUM-1167||Some Xamarin network requests are not getting sampled|
|MRUM‑1322||The iOS SDK Screenshot triggers the exceptions "ADEumScreenshotOperationsController" and "ADEumApplicationWillResignActive"|
|MRUM‑1345||Repair Crash in iOS Agent when using File URLs with URLSession|
|MRUM‑1346||On Windows Android Studio, the task ":app:clean" fails when running an instrumented app|
|MRUM‑1511||iOS Agent generates a "Main Thread Checker" warning under Xcode 9 during an ANR|
Browser Synthetic Monitoring
The hardware has been upgraded for the Synthetic Host Agent locations listed below. In these locations, synthetic jobs will run faster, time out less often, and consume fewer license blocks. The increase in speed depends on what your jobs do, but testing has shown speed increases of 10–40%.
- Ashburn, VA, USA
- Boardman, OR, USA
- Dublin, Ireland
- Frankfurt, Germany
- Mumbai, India
- San Francisco, CA, USA
- Sao Paulo, Brazil
- Seoul, South Korea
- Sydney, Australia
- Tokyo, Japan
- If Synthetic jobs embed credentials in a URL (e.g.,
http://user:email@example.com/), the credentials will be redacted from the session results. Page names that include credentials will become inactive, and new pages without the credentials will be created. If you have reached the limit for registered pages, you will need to remove the orphaned page before you'll see data for the new page.
You can find this update in the following:
- Enterprise Console (Version 184.108.40.20606 – March 31, 2018)
- Controller (Version 220.127.116.11)
Fix to delete unassociated machine instances and prevent excessive thread pool consumption on Controller
Machine Agent name check is case-sensitive, which prevents some agents from registering with Controller
In some cases, Service Availability data takes a long time to load in the Controller UI
Fix to ensure that Controller processes string values from Machine Agent
This release introduces the ABAP SAP Agent, the AppDynamics app agent for monitoring SAP Applications. For documentation on this agent, see SAP Agent Monitoring Using AppDynamics.
Version 4.4.2 applies updates to:
- Platform (18.104.22.16870 - March 2, 2018)
- Controller (SaaS: 22.214.171.124)
- End User Monitoring (126.96.36.19990 - March 22, 2108)
- Analytics (188.8.131.527 - March 2, 2018)
- Dynamic Languages (4.4.2)
- C/C++ Agent (184.108.40.206 - March 2, 2018)
- Java Agent (220.127.116.1163 – March 2, 2018)
- Java Agent (18.104.22.16894 – March 6, 2018)
- .NET Agent (22.214.171.1245 - March 2, 2018)
- Network Visibility (126.96.36.1999 - March 2, 2018)
- Standalone Machine Agent and Server Visibility (188.8.131.522 - March 2, 2018)
- Database Visibility (184.108.40.2068 - March 2, 2018)
Platform (220.127.116.1170 - March 2, 2018)
- The Enterprise Console now supports incremental replication, which is required in cases where the database replication on the secondary Controller of an HA pair is lagging behind the primary Controller by more than three days.
- You can now change the data directory path on the Controller Database Configurations page of the Enterprise Console.
|APMPLAT-2682||REST API for retrieving tier information does not work when tier name includes forward slash ('/')|
|APMPLAT-3153||Exclude Rules do not work when EJB name contains "$$$"|
|DASH-1225||Heap Usage in Memory tab for a node shows incorrect value in Internet Explorer|
|ECONSOLE-1928||Fixes to install-init.sh shipped with Enterprise Console|
|ECONSOLE-1940||High Availability: Enterprise Console shows incorrect status for secondary controller|
|ECONSOLE-1953||Fix to ensure that recommended custom settings in domain.xml are retained when Controller is upgraded|
|ECONSOLE-2005||4.4 upgrade of on-premise Controller failed due to very large domain.xml file|
|METADATA-1612||Failed to find corresponding principal in MDS due to mismatched IDs in mapping table|
|METADATA-1893||Cannot view License and Databases in UI or log in as new user after Controller upgrade from 18.104.22.168 to 22.214.171.124|
|METADATA-3424||On-premise v4.1 to v4.4 controller upgrade failed to create mds_* MySQL schemas|
|PLATCPS-1680||Getting ERROR Checking SAML while logged into the controller using SAML|
Controller (SaaS: 126.96.36.199)
- SaaS Controllers have a new Settings menu (https://portal.appdynamics.com/status/saas/. There you can see incident and maintenance reports for your environment, among other information. ) option, Show SAAS Status. Clicking the option takes you to the service status page for your SaaS account,
End User Monitoring (188.8.131.5290 - March 22, 2108)
- The iOS SDK and Android SDK now have APIs for blocking and unblocking screenshot capture for blocks of code. See Block/Unblock Screenshots (iOS/Android) for more information.
|EUMUI-1439||Browser sessions data missing due to UI error|
|MRUM-1454||Android runtime dependency injector interferes with authenticating Maven repositories|
|MRUM-1467||Android NDK cannot find plugin property in newer Gradle plugins|
|SYNTH-1803||Missing resources in Chrome measurement due to undetected frames|
Analytics (184.108.40.2067 - March 2, 2018)
- The Event Details page has been enhanced to include Device Model, Device OS, Devices, Job Name, and Screenshot Timestamp fields. These values are derived from the associated EUM synth session event.
|ANALYTICS-3841||ADQL Query Incorrectly Updated When Sort Order Is Modified In Existing Visualization Widget|
|ANALYTICS-4232||Analytics Agent Field Mapping Contains Blank String|
|ANALYTICS-4453||Group By with Null or Empty Field throws off count|
|ANALYTICS-4540||Snapshot operations do not run when Events Service is set up for HTTPS|
Dynamic Languages (4.4.2)
Node.js v 9.0.0 is now supported.
|DLNATIVE-927||NodeJS agent with default configuration does not work with cluster module|
|DLNATIVE-967||Inconsistent node-level metrics observed for some time resolutions on specific application|
C/C++ Agent (220.127.116.11 - March 2, 2018)
- Occasionally, the appd_sdk_term call hangs when communicating with the controller in previous versions of the agent. This issue is fixed in 4.4.2.
|DLNATIVE-1034||Deadlock in appd_sdk_term()|
Java Agent (18.104.22.16863 – March 2, 2018)
- The following attributes were added to the sensitive URL filter:
- match-filter: the operator used to filter URLs. Valid operators include EQUALS, STARTSWITH, CONTAINS.
- match-pattern: the URL sub-string that you want to filter for
Correlation is supported for Kafka.
|JAVA-1478||JMS Receive BTs are marked as POJO BTs and JMS BT disable/enable options are not honored|
|JAVA-2127||RabbitMQ Message Properties get changed when correlation is enabled|
Java Agent (22.214.171.12494 – March 6, 2018)
|JAVA-3192||Agent not starting with JDK 1.9 as JRE runtime version|
.NET Agent (126.96.36.1995 - March 2, 2018)
|DOTNET-1246||EUM auto-injection causes page-loading failure for custom resource handler BT|
Network Visibility (188.8.131.529 - March 2, 2018)
- The following metrics are now available in the Metric Browser > Application Infrastructure Performance > Host > Interface:
- # Receive Drops – Number of packets dropped while receiving by all interfaces on the host
- # Transmit Drops – Number of packets dropped while transmitting by all interfaces on the host
- You can now install the Network Agent as an extension using the 4.4.2 Standalone Machine Agent installer. This option is available on Linux 32-bit and 64-bit ZIP installers only.
|NETWORK-2111||High number of duplicate "update infra_netviz_callchain_interconnect" error log messages get generated in some conditions|
Standalone Machine Agent and Server Visibility (184.108.40.2062 - March 2, 2018)
|SERVER-2204||Docker names being parsed incorrectly|
|SERVER-2255||Standalone Machine Agent cannot collect metrics for blackhole networks or NICs names with asterisk('*')|
|SERVER-2291||In Kubernetes deployment, Standalone Machine Agent reports incorrect image ID and image name for the containers|
|SERVER-2344||Docker Visibility – Some parts of Controller UI show container ID (with no context) rather than container name|
|SERVER-2459||Server page shows data for 13 hours, not selected time range of 1 day (observed on SaaS Controller)|
Database Visibility (220.127.116.118 - March 2, 2018)
|DBMON-1348||Too many SSH connections for DB agent to DB host|
|DBMON-1436||Incorrect active connection count for MongoDB cluster|
|DBMON-1443||Error in agent registration after a collector is updated|
|DBMON-1452||The query to get Oracle query detail statistics should take dbId as a parameter|
|DBMON-1460||Schema dropdown list should be fetched based on server ID for Oracle RAC|
"Query is Blocked by" card REST call always uses isDBCluster= false
Note: Version 4.4.3 is in limited release status, with early availability of the AppDynamics .NET Agent only. Availability of Version 4.4.3 for other AppDynamics App iQ Platform components is pending.
.NET Agent (18.104.22.1689 - March 30, 2018)
- Microsoft Orleans is supported on the .NET and .NET microservices agents.
- .NET Core on Windows is supported on the .NET microservices agent.
AppDynamics NuGet Packages
The following NuGet packages are now available. If you have used a previous version of an AppDynamics NuGet package, you will need to upgrade to the new version. See Upgrade AppDynamics.WindowsAzure NuGet Package.
|AppDynamics.Agent.Distrib.Micro.Windows||AppDynamics NuGet package for .NET. This package should not be installed directly and is intended for download and file distribution. This package is used for Azure Service Fabric deployments. See Install AppDynamics for Azure Service Fabric for instructions.|
|AppDynamics.Agent.Windows||AppDynamics .NET Core microservices agent for Windows. Recommended for standalone installations. See Install the .NET Core Microservices Agent for Windows for deployment instructions. NOTE: This package does not support .NET Framework, only .NET Core for Windows.|
|AppDynamics .NET agent for Azure Cloud Services. See Install AppDynamics for Azure Cloud Services.|
AppDynamics .NET microservices agent for Azure App Service. This package is intended for applications deployed to Azure App Service (Azure Web Apps and Azure API Apps). See Install the AppDynamics .NET Microservices Agent and Install AppDynamics for Azure App Service for instructions.
Browser RUM's new SPA2 monitoring has been tested and certified to correctly auto-instrument Angular 1-5 and React single-page applications (SPAs). SPA2 monitoring should also support auto-instrumentation for other SPA frameworks. For more information, see Monitor Single-Page Applications.