|
|
|
@ -1,5 +1,5 @@ |
|
|
|
/* |
|
|
|
/* |
|
|
|
* Copyright 2012-2019 the original author or authors. |
|
|
|
* Copyright 2012-2020 the original author or authors. |
|
|
|
* |
|
|
|
* |
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
|
* you may not use this file except in compliance with the License. |
|
|
|
* you may not use this file except in compliance with the License. |
|
|
|
@ -25,6 +25,7 @@ import org.apache.catalina.Container; |
|
|
|
import org.apache.catalina.Context; |
|
|
|
import org.apache.catalina.Context; |
|
|
|
import org.apache.catalina.Manager; |
|
|
|
import org.apache.catalina.Manager; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import org.springframework.beans.factory.DisposableBean; |
|
|
|
import org.springframework.boot.context.event.ApplicationStartedEvent; |
|
|
|
import org.springframework.boot.context.event.ApplicationStartedEvent; |
|
|
|
import org.springframework.boot.web.context.WebServerApplicationContext; |
|
|
|
import org.springframework.boot.web.context.WebServerApplicationContext; |
|
|
|
import org.springframework.boot.web.embedded.tomcat.TomcatWebServer; |
|
|
|
import org.springframework.boot.web.embedded.tomcat.TomcatWebServer; |
|
|
|
@ -38,12 +39,14 @@ import org.springframework.context.ApplicationListener; |
|
|
|
* @author Andy Wilkinson |
|
|
|
* @author Andy Wilkinson |
|
|
|
* @since 2.1.0 |
|
|
|
* @since 2.1.0 |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public class TomcatMetricsBinder implements ApplicationListener<ApplicationStartedEvent> { |
|
|
|
public class TomcatMetricsBinder implements ApplicationListener<ApplicationStartedEvent>, DisposableBean { |
|
|
|
|
|
|
|
|
|
|
|
private final MeterRegistry meterRegistry; |
|
|
|
private final MeterRegistry meterRegistry; |
|
|
|
|
|
|
|
|
|
|
|
private final Iterable<Tag> tags; |
|
|
|
private final Iterable<Tag> tags; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private volatile TomcatMetrics tomcatMetrics; |
|
|
|
|
|
|
|
|
|
|
|
public TomcatMetricsBinder(MeterRegistry meterRegistry) { |
|
|
|
public TomcatMetricsBinder(MeterRegistry meterRegistry) { |
|
|
|
this(meterRegistry, Collections.emptyList()); |
|
|
|
this(meterRegistry, Collections.emptyList()); |
|
|
|
} |
|
|
|
} |
|
|
|
@ -57,7 +60,8 @@ public class TomcatMetricsBinder implements ApplicationListener<ApplicationStart |
|
|
|
public void onApplicationEvent(ApplicationStartedEvent event) { |
|
|
|
public void onApplicationEvent(ApplicationStartedEvent event) { |
|
|
|
ApplicationContext applicationContext = event.getApplicationContext(); |
|
|
|
ApplicationContext applicationContext = event.getApplicationContext(); |
|
|
|
Manager manager = findManager(applicationContext); |
|
|
|
Manager manager = findManager(applicationContext); |
|
|
|
new TomcatMetrics(manager, this.tags).bindTo(this.meterRegistry); |
|
|
|
this.tomcatMetrics = new TomcatMetrics(manager, this.tags); |
|
|
|
|
|
|
|
this.tomcatMetrics.bindTo(this.meterRegistry); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private Manager findManager(ApplicationContext applicationContext) { |
|
|
|
private Manager findManager(ApplicationContext applicationContext) { |
|
|
|
@ -80,4 +84,9 @@ public class TomcatMetricsBinder implements ApplicationListener<ApplicationStart |
|
|
|
return null; |
|
|
|
return null; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
|
|
public void destroy() { |
|
|
|
|
|
|
|
this.tomcatMetrics.close(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|