This is a revision of my previous post on Coda Hale Metrics available here.
Goal: Integrate Metrics (v 3.1.0) and Spring (v 4.1.x) in a JEE environment.
Metrics-spring resides here. Code snippets to help you get started below:
1. Add the following dependency in pom.xml
3. Define metrics.xml and include it in your main spring configuration file.
4. Define HealthCheck classes and annotate methods with @Timed as per Metrics documentation. And we are done!
Navigate to: http://hostname:port/<webappname>/metrics/admin to view "Operational Menu"
The output metrics is dumped in JSON format. You can parse it and pass it to your favorite graphing library.
Note: All metrics are reported via Console. You can easily enable other reporters in metrics.xml.
Goal: Integrate Metrics (v 3.1.0) and Spring (v 4.1.x) in a JEE environment.
Metrics-spring resides here. Code snippets to help you get started below:
1. Add the following dependency in pom.xml
<dependency>
<groupid>io.dropwizard.metrics</groupid>
<artifactid>metrics-servlets</artifactid>
<version>3.1.0</version>
</dependency>
<dependency>
<groupid>com.ryantenney.metrics</groupid>
<artifactid>metrics-spring</artifactid>
<version>3.0.3</version>
</dependency>
..
Other metrics dependencies
2. Add the following in web.xml
<servlet>
<servlet-name>metrics-admin</servlet-name>
<servlet-class>com.codahale.metrics.servlets.AdminServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>metrics-admin</servlet-name>
<url-pattern>/metrics/admin/*</url-pattern>
</servlet-mapping>
3. Define metrics.xml and include it in your main spring configuration file.
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:metrics="http://www.ryantenney.com/schema/metrics"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.ryantenney.com/schema/metrics
http://www.ryantenney.com/schema/metrics/metrics-3.0.xsd">
<!-- Registry should be defined in only one context XML file -->
<metrics:metric-registry id="metrics" />
<metrics:health-check-registry id="healthCheck" />
<!-- annotation-driven must be included in all context files -->
<metrics:annotation-driven metric-registry="metrics"
health-check-registry="healthCheck" />
<!-- (Optional) Registry should be defined in only one context XML file -->
<metrics:reporter type="console" metric-registry="metrics"
period="1m" />
<bean
class="org.springframework.web.context.support.ServletContextAttributeExporter">
<property name="attributes">
<map>
<entry key="com.codahale.metrics.servlets.MetricsServlet.registry">
<ref bean="metrics" />
</entry>
<entry key="com.codahale.metrics.servlets.HealthCheckServlet.registry">
<ref bean="healthCheck" />
</entry>
</map>
</property>
</bean>
</beans>
4. Define HealthCheck classes and annotate methods with @Timed as per Metrics documentation. And we are done!
Navigate to: http://hostname:port/<webappname>/metrics/admin to view "Operational Menu"
The output metrics is dumped in JSON format. You can parse it and pass it to your favorite graphing library.
Note: All metrics are reported via Console. You can easily enable other reporters in metrics.xml.
No comments:
Post a Comment