Motivation for a Mulesoft Plugin

published

Though Mule is supported by appdynamics, the display of BTs and backends does not often display the design of Mulesoft flows and steps in the way administrators and developers work within mulesoft. This plugin takes advantage of the mulesoft notification framework to add decorations to transactions within mulesoft in order to help a user troubleshooting issues map what they know of the transactions to information made available within appdynamics.

The following capabilities are added with the mulesoft agent plugin:

  • Custom Metrics of Mulesoft Analytics for Flows and Routers
  • Custom Data within Snapshots to show flow and step execution
  • Custom Data within Analytics to allow for queries on Mule Flow statistics
  • Custom Events within the application to show Mulesoft Application install/start/stop/failure events
  • An entry point is available for future extension in case a mule connector does not correlate OOTB in appdynamics

Custom Metrics

Custom Metrics are published from Mulesoft's internal analytics collection mechanism, directly into the controller as node level custom metrics

Outbound Router Metrics
Flow Metrics

Custom Data

An example of the Custom Data collected in Snapshots

Snapshot Custom Data

An example of the Custom Data collected in Analytics

Analytics Custom Data

Custom Events

An example of the Custom Events reported to the Application

Listing of Custom Events

Details of one Custom Event

Custom Event Details

Installation Instructions

Required

  • Agent version 21.4+
  • Mulesoft version 4.3.0+
  • Java 8+

Deployment steps

  • Copy AppD-MuleAgentTracer-<version>.jar file under <agent-install-dir>/ver.x.x.x.x/sdk-plugins
  • OPTIONALLY: add the following config options as well to the wrapper.conf
  wrapper.java.additional.92=-DAppDynamicsForceMulesoftStatisticsCollection=false
  wrapper.java.additional.93=-DAppDynamicsFlattenNameMulesoftStatisticsCollection=false
  • Restart the mule JVM
  • Edit MuleMetricCollection.properties file in <agent-install-dir>/ver.x.x.x.x/sdk-plugins
    to use the flow statistics white list and black list properties. Some organizations have thousands of flows
    and will not want to monitor all of them, this feature may or may not be needed for your deployment
 com.appdynamics.mulesoft.agent.metric.blackListRegex=regex test # to skip collection on match
 com.appdynamics.mulesoft.agent.metric.whiteListRegex=regex test # to collect on match else skip (applied after blacklist)

Flow data may come back in ways that are not intuitive to the developers creating flows and subflows. A review of this reference
may help before considering something a "bug" https://docs.mulesoft.com/mule-runtime/4.3/about-flows

If errors in the agent log file resembling these lines:

[appdynamics-analytics-autodata-writer1] 11 May 2024 13:20:34,039  WARN AnalyticsAutoDataTransform - Enqueuing transformed CollectionData failed since publish queue is full. This operation has failed [18000] time(s).
[appdynamics-analytics-autodata-writer1] 11 May 2024 13:20:34,040  WARN AnalyticsAutoDataTransform - Enqueuing transformed CollectionData failed since publish queue is full. This operation has failed [18100] time(s).
[appdynamics-analytics-autodata-writer1] 11 May 2024 13:20:54,198  WARN AnalyticsAutoDataTransform - Enqueuing transformed CollectionData failed since publish queue is full. This operation has failed [18200] time(s).
[appdynamics-analytics-autodata-writer1] 11 May 2024 13:25:15,542  WARN AnalyticsAutoDataTransform - Enqueuing transformed CollectionData failed since publish queue is full. This operation has failed [18300] time(s).
[appdynamics-analytics-autodata-writer1] 11 May 2024 13:26:54,198  WARN AnalyticsAutoDataTransform - Enqueuing transformed CollectionData failed since publish queue is full. This operation has failed [18400] time(s).

add this node property to mulesoft nodes: max-analytics-collectors-allowed=5000 (2000 is default, but that isn't enough in large environments)

View code on GitHub
  • Owner

  • Contributors

    +1Github contributor
  • Categories

  • Products

    AppDynamics
  • Programming Languages

    Java
  • License

    Apache License 2.0

Code Exchange Community

Get help, share code, and collaborate with other developers in the Code Exchange community.View Community
Disclaimer:
Cisco provides Code Exchange for convenience and informational purposes only, with no support of any kind. This page contains information and links from third-party websites that are governed by their own separate terms. Reference to a project or contributor on this page does not imply any affiliation with or endorsement by Cisco.