Mule ESB

Zorka has been tested with Mule ESB 3.4.0 working on Sun JDK 7 on Linux. Mule ESB uses Tanuki Software wrapper configured via $MULE_CONF/conf/wrapper.conf file. In order to configure zorka:

  • unpack zorka to $MULE_HOME;

  • edit file and add proper scripts to load:

scripts = jvm.bsh, zabbix.bsh, apps/muleesb.bsh
  • edit wrapper.conf file and add java agent to java arguments:$MULE_HOME/zorka/agent.jar=$MULE_HOME/zorka

Mule ESB specific settings

  • mule.trace = no - enables or disables tracing of Mule ESB components;

  • mule.flow.time = 1000 - minimum time a flow has to execute in order to submit trace to collector;

  • mule.component.time = 1000 - minimum time a component has to execute in order to submit trace to collector;

  • mule.dispatch.time = 1000 - minimum time dispatcher component has to execute in order to submit trace to collector;

  • mule.stats = yes - enables or disables JMX statistics for flows, components and dispatchers; this is useful eg. for collecting performance statistics in Zabbix (or other monitoring system capable of collecting numeric data and displaying charts;

By default all timing settings have the same value as global tracer.min.trace.time setting and stats are enabled.

Zabbix templates

The following mule-specific zabbix templates are available:

  • Template_Zorka_MuleESB.xml - monitors statistics maintained by Mule ESB engine itself;

  • Template_Zorka_MuleESB_ZorkaStats.xml - monitors statustics maintained by zorka agent instrumentation;


In this example we’ll monitor the following application:

Top level trace list

This is very simple flow (similiar to basic Hello World application) listens on HTTP port, responds with some greeting message and also writes response to a temporary file.

Top level trace list

For now there are three kinds of activities traced: processing flows, executing (custom?) components and remote systems communication with dispatchers.

Top level trace list

Some information have been attached to selected methods. New information or new trace types can be added at any time as whole Mule ESB tracing and instrumentation has been implemented as configuration script for Zorka.

Both summary statistics (stats) and statistics per component are maintained and can be picked up by Zabbix. This comes with all features of ZorkaStats like peak values or contention monitoring.

rlewczuk@kapsel:~$ zabbix_get -s -p 10066 -k '["java", "mule:*", "**", "**"]'
mule:type=ZorkaStats,name=MuleStats: components.basic-tutorial-1.0.0-SNAPSHOT:Basic_TutorialFlow1.Error-Spewing Java Component -> (calls=3, errors=0, time=22)
mule:type=ZorkaStats,name=MuleStats: dispatchers.basic-tutorial-1.0.0-SNAPSHOT:Basic_TutorialFlow1.Insecure Temporary File -> (calls=0, errors=0, time=0)
mule:type=ZorkaStats,name=MuleStats: filters.class org.mule.routing.filters.ExpressionFilter -> (calls=0, errors=0, time=0)
mule:type=ZorkaStats,name=MuleStats: flows.basic-tutorial-1.0.0-SNAPSHOT:Basic_TutorialFlow1 -> (calls=3, errors=0, time=251)
mule:type=ZorkaStats,name=MuleStats: stats.ALL -> (calls=9, errors=0, time=298)
mule:type=ZorkaStats,name=MuleStats: stats.COMPONENTS -> (calls=3, errors=0, time=22)
mule:type=ZorkaStats,name=MuleStats: stats.DISPATCHERS -> (calls=0, errors=0, time=0)
mule:type=ZorkaStats,name=MuleStats: stats.FILTERS -> (calls=0, errors=0, time=0)
mule:type=ZorkaStats,name=MuleStats: stats.FLOWS -> (calls=3, errors=0, time=251)
mule:type=ZorkaStats,name=MuleStats: stats.TRANSFORMERS -> (calls=3, errors=0, time=25)
mule:type=ZorkaStats,name=MuleStats: transformers.class org.mule.transformer.simple.SetPayloadTransformer -> (calls=3, errors=0, time=25)