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
wrapper.conf
file and add java agent to java arguments:
wrapper.java.additional.8=-javaagent:$MULE_HOME/zorka/agent.jar=$MULE_HOME/zorka
wrapper.java.additional.8.stripquotes=TRUE
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. forcollecting performance statistics in Zabbix (or other monitoring system capable of collecting numeric data and displayingcharts;
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;
Example
In this example we'll monitor the following application:
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.
For now there are three kinds of activities traced: processing flows, executing (custom?) components and remote systems communication with dispatchers.
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 127.0.0.1 -p 10066 -k 'zorka.ls["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)