There is a dedicated script spring.bsh
distributed with zorka agent. It provides monitoring of various Spring components:
- Spring Web MVC - renderers, resolvers and controllers (trace attributes, statistics);
- Spring Webflow - actions (trace attributes, statistics);
- Spring Security - authentication (trace attributes, auditing, statistics);
- Spring Remoting - client requests (trace attributes, statistics);
- Spring HTTP client - requests (trace attributes, statistics);
Basic agent configuration
In order to enable Spring support add spring.bsh
script to the list of scripts loaded at startup, eg:
scripts = jvm.bsh, zabbix.bsh, apache/tomcat.bsh, spring.bsh
This will enable statistics collection, tracing (if tracer is enabled), auditing (if auditing is enabled). Tracing will collect basic arguments of instrumented methods (ones that are cheap to collect) but there are additional attributes (argument lists, attribute maps etc. - depending on method instrumented) that are deemed more expensive in collecting thus not enabled by default. These attributes can be enabled individually using spring.fetch.**
options or all at once using single spring.fetch.all
option. These attributes are useful for debugging but for production purposes its impact has to be evaluated (tested) as each set of them takes few few microseconds and depending on estimated traffic, there can be a lot of them (and potentiall lot of data to be stored in collector).
Tracing Spring Applications
Tracing for Spring components is enabled automatically when tracer is enabled. For most of instrumented method it just adds some additional attributes, for speciic methods (eg. remoting and HTTP clients) it defines new traces (in addition to collecting attributes). Spring configuration script also excludes certain Spring classes with 'hot' methods in order to reduce footprint.
Configuration options for Spring
The following spring-related properties in zorka.properties
can be set (along with default values):
spring.trace = ${tracer}
- enables or disables tracing and basic trace attributes for instrumentedmethods from Spring library;spring.trace.time = ${tracer.min.trace.time}
- minimum execution time for traced spring methods to besubmitted as separate trace;spring.stats = yes
- enables or disables statistics collection for Spring;spring.stats.mbean = zorka:type=ZorkaStats,name=Spring
- mbean name for Spring statistics generatedby zorka agent (NOT changing its default value is strongly recommended);spring.fetch.all = no
- enables fetching of additional attributes for instrumented Spring methods;spring.fetch.view.render.attrs = ${spring.fetch.all}
- enables fetching of view rendering dynamic attributes;spring.fetch.view.static.attrs = ${spring.fetch.all}
- enables fetching of view rendering static attributes;spring.fetch.remoting.args = ${spring.fetch.all}
- enables fetching spring remote calls arguments;spring.fetch.remoting.attrs = ${spring.fetch.all}
- enables fetching spring remote calls context attributes;spring.fetch.webmvc.modelmap = ${spring.fetch.all}
- enables fetching of web MVC model maps;spring.fetch.webflow.request.scope = ${spring.fetch.all}
- enables fetching of webflow request scope variables;spring.fetch.webflow.flash.scope = ${spring.fetch.all}
- enables fetching of webflow flash scope variables;spring.fetch.webflow.view.scope = ${spring.fetch.all}
- enables fetching of webflow view scope variables;spring.fetch.webflow.flow.scope = ${spring.fetch.all}
- enables fetching of webflow flow scope variables;