22
22
import com .alipay .lookout .client .DefaultLookoutClient ;
23
23
import com .alipay .lookout .core .config .LookoutConfig ;
24
24
import com .alipay .lookout .remote .model .LookoutMeasurement ;
25
+ import com .alipay .lookout .remote .report .AddressService ;
26
+ import com .alipay .lookout .remote .step .LookoutRegistry ;
25
27
import com .alipay .lookout .report .MetricObserver ;
26
28
import com .alipay .lookout .starter .LookoutClientProperties ;
27
- import com .alipay .lookout .starter .support .reg . DropWizardMetricsRegistryFactory ;
28
- import com .alipay .lookout .starter .support .reg . LookoutServerRegistryFactory ;
29
- import com .alipay .lookout .starter .support .reg . MetricsRegistryFactory ;
30
- import com .alipay .lookout .starter .support .reg .PrometheusMetricsRegistryFactory ;
29
+ import com .alipay .lookout .starter .support .actuator . LookoutSpringBootMetricsImpl ;
30
+ import com .alipay .lookout .starter .support .actuator . SpringBootActuatorRegistry ;
31
+ import com .alipay .lookout .starter .support .reader . LookoutRegistryMetricReader ;
32
+ import com .alipay .lookout .starter .support .reg .* ;
31
33
import org .slf4j .Logger ;
32
34
import org .slf4j .LoggerFactory ;
33
35
import org .springframework .beans .BeansException ;
34
36
import org .springframework .beans .factory .BeanFactory ;
35
37
import org .springframework .beans .factory .BeanFactoryAware ;
36
38
import org .springframework .beans .factory .annotation .Autowired ;
39
+ import org .springframework .boot .actuate .autoconfigure .MetricsDropwizardAutoConfiguration ;
40
+ import org .springframework .boot .actuate .endpoint .MetricReaderPublicMetrics ;
41
+ import org .springframework .boot .actuate .metrics .CounterService ;
42
+ import org .springframework .boot .actuate .metrics .GaugeService ;
43
+ import org .springframework .boot .autoconfigure .AutoConfigureBefore ;
37
44
import org .springframework .boot .autoconfigure .AutoConfigureOrder ;
45
+ import org .springframework .boot .autoconfigure .condition .ConditionalOnBean ;
38
46
import org .springframework .boot .autoconfigure .condition .ConditionalOnClass ;
47
+ import org .springframework .boot .autoconfigure .condition .ConditionalOnMissingBean ;
39
48
import org .springframework .boot .context .properties .EnableConfigurationProperties ;
40
49
import org .springframework .context .annotation .Bean ;
41
50
import org .springframework .context .annotation .Configuration ;
52
61
@ AutoConfigureOrder (-100 )
53
62
@ Configuration
54
63
@ EnableConfigurationProperties (LookoutClientProperties .class )
64
+ @ AutoConfigureBefore (MetricsDropwizardAutoConfiguration .class )
55
65
public class LookoutAutoConfiguration implements BeanFactoryAware {
56
66
private static final Logger logger = LoggerFactory
57
67
.getLogger (LookoutAutoConfiguration .class );
@@ -76,9 +86,22 @@ public LookoutConfig lookoutConfig(LookoutClientProperties lookoutClientProperti
76
86
}
77
87
78
88
@ Bean
89
+ @ ConditionalOnMissingBean
79
90
@ ConditionalOnClass (name = "com.alipay.lookout.remote.step.LookoutRegistry" )
80
- public MetricsRegistryFactory lookoutServerRegistryFactory () {
81
- return new LookoutServerRegistryFactory (metricObservers );
91
+ public AddressService lookoutAddressService (LookoutConfig config ) {
92
+ return LookoutRegistry .getAddressService (config );
93
+ }
94
+
95
+ @ Bean
96
+ @ ConditionalOnClass (name = "com.alipay.lookout.remote.step.LookoutRegistry" )
97
+ public MetricsRegistryFactory lookoutServerRegistryFactory (AddressService addressService ) {
98
+ return new LookoutServerRegistryFactory (metricObservers , addressService );
99
+ }
100
+
101
+ @ Bean
102
+ @ ConditionalOnClass (name = "org.springframework.boot.actuate.metrics.Metric" )
103
+ public SpringBootActuatorRegistryFactory springBootActuatorServerRegistryFactory () {
104
+ return new SpringBootActuatorRegistryFactory ();
82
105
}
83
106
84
107
@ Bean
@@ -130,6 +153,30 @@ public Registry registry(List<MetricsRegistryFactory> metricsRegistryFactoryList
130
153
return lookoutClient .getRegistry ();
131
154
}
132
155
156
+ @ Bean
157
+ @ ConditionalOnMissingBean ({ LookoutSpringBootMetricsImpl .class , CounterService .class ,
158
+ GaugeService .class })
159
+ public LookoutSpringBootMetricsImpl lookoutMetricServices (Registry lookoutMetricRegistry ) {
160
+ logger .info ("Spring Boot Metrics binding to SOFALookout Implementation!" );
161
+ return new LookoutSpringBootMetricsImpl (lookoutMetricRegistry );
162
+ }
163
+
164
+ @ Bean
165
+ @ ConditionalOnMissingBean
166
+ @ ConditionalOnBean (SpringBootActuatorRegistryFactory .class )
167
+ public LookoutRegistryMetricReader lookoutRegistryMetricReader (SpringBootActuatorRegistryFactory springBootActuatorRegistryFactory ,
168
+ LookoutConfig lookoutConfig ) {
169
+ SpringBootActuatorRegistry springBootActuatorRegistry = springBootActuatorRegistryFactory
170
+ .get (lookoutConfig );
171
+ return new LookoutRegistryMetricReader (springBootActuatorRegistry );
172
+ }
173
+
174
+ @ Bean
175
+ @ ConditionalOnBean (LookoutRegistryMetricReader .class )
176
+ public MetricReaderPublicMetrics lookoutPublicMetrics (LookoutRegistryMetricReader lookoutRegistryMetricReader ) {
177
+ return new MetricReaderPublicMetrics (lookoutRegistryMetricReader );
178
+ }
179
+
133
180
protected LookoutConfig buildLookoutConfig (LookoutClientProperties lookoutClientProperties ) {
134
181
LookoutConfig lookoutConfig = new LookoutConfig ();
135
182
lookoutConfig .setProperty (LOOKOUT_ENABLE , lookoutClientProperties .isEnable ());
@@ -153,5 +200,4 @@ protected LookoutConfig buildLookoutConfig(LookoutClientProperties lookoutClient
153
200
}
154
201
return lookoutConfig ;
155
202
}
156
-
157
203
}
0 commit comments