Skip to content

Commit 089f16f

Browse files
committed
feat(client): Add more observability in apollo config client
1 parent bd7fe56 commit 089f16f

File tree

44 files changed

+525
-700
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+525
-700
lines changed

apollo-client/src/main/java/com/ctrip/framework/apollo/internals/AbstractConfigFile.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,7 @@
1717
package com.ctrip.framework.apollo.internals;
1818

1919

20-
import static com.ctrip.framework.apollo.monitor.internal.tracer.MessageProducerComposite.APOLLO_CLIENT_CONFIGCHANGES;
21-
20+
import static com.ctrip.framework.apollo.monitor.internal.MonitorConstant.*;
2221
import com.ctrip.framework.apollo.build.ApolloInjector;
2322
import com.ctrip.framework.apollo.core.utils.DeferredLoggerFactory;
2423
import com.ctrip.framework.apollo.enums.ConfigSourceType;

apollo-client/src/main/java/com/ctrip/framework/apollo/internals/AbstractConfigRepository.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@
1616
*/
1717
package com.ctrip.framework.apollo.internals;
1818

19-
import static com.ctrip.framework.apollo.monitor.internal.tracer.MessageProducerComposite.APOLLO_CONFIG_EXCEPTION;
20-
19+
import static com.ctrip.framework.apollo.monitor.internal.MonitorConstant.*;
2120
import com.ctrip.framework.apollo.build.ApolloInjector;
2221
import com.ctrip.framework.apollo.util.factory.PropertiesFactory;
2322
import java.util.List;

apollo-client/src/main/java/com/ctrip/framework/apollo/internals/ConfigMonitorInitializer.java

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,15 @@
2222
import com.ctrip.framework.apollo.monitor.internal.DefaultConfigMonitor;
2323
import com.ctrip.framework.apollo.monitor.internal.collector.MetricsCollector;
2424
import com.ctrip.framework.apollo.monitor.internal.collector.MetricsCollectorManager;
25-
import com.ctrip.framework.apollo.monitor.internal.collector.internal.DefaultApolloExceptionCollector;
26-
import com.ctrip.framework.apollo.monitor.internal.collector.internal.DefaultApolloNamespaceCollector;
27-
import com.ctrip.framework.apollo.monitor.internal.collector.internal.DefaultApolloRunningParamsCollector;
28-
import com.ctrip.framework.apollo.monitor.internal.collector.internal.DefaultApolloThreadPoolCollector;
29-
import com.ctrip.framework.apollo.monitor.internal.collector.internal.DefaultMetricsCollectorManager;
25+
import com.ctrip.framework.apollo.monitor.internal.collector.impl.DefaultApolloClientExceptionCollector;
26+
import com.ctrip.framework.apollo.monitor.internal.collector.impl.DefaultApolloClientNamespaceCollector;
27+
import com.ctrip.framework.apollo.monitor.internal.collector.impl.DefaultApolloClientBootstrapArgsCollector;
28+
import com.ctrip.framework.apollo.monitor.internal.collector.impl.DefaultApolloClientThreadPoolCollector;
29+
import com.ctrip.framework.apollo.monitor.internal.collector.impl.DefaultMetricsCollectorManager;
3030
import com.ctrip.framework.apollo.monitor.internal.exporter.MetricsExporter;
3131
import com.ctrip.framework.apollo.monitor.internal.exporter.MetricsExporterFactory;
3232
import com.ctrip.framework.apollo.monitor.internal.tracer.MessageProducerComposite;
33-
import com.ctrip.framework.apollo.monitor.internal.tracer.MonitorMessageProducer;
33+
import com.ctrip.framework.apollo.monitor.internal.tracer.ClientMonitorMessageProducer;
3434
import com.ctrip.framework.apollo.tracer.internals.NullMessageProducer;
3535
import com.ctrip.framework.apollo.tracer.internals.cat.CatMessageProducer;
3636
import com.ctrip.framework.apollo.tracer.internals.cat.CatNames;
@@ -73,14 +73,13 @@ private static List<MetricsCollector> initializeCollectors(
7373
DefaultMetricsCollectorManager manager) {
7474
DefaultConfigManager configManager = (DefaultConfigManager) ApolloInjector.getInstance(
7575
ConfigManager.class);
76-
DefaultApolloExceptionCollector exceptionCollector = new DefaultApolloExceptionCollector();
77-
DefaultApolloThreadPoolCollector threadPoolCollector = new DefaultApolloThreadPoolCollector(
76+
DefaultApolloClientExceptionCollector exceptionCollector = new DefaultApolloClientExceptionCollector();
77+
DefaultApolloClientThreadPoolCollector threadPoolCollector = new DefaultApolloClientThreadPoolCollector(
7878
RemoteConfigRepository.m_executorService, AbstractConfig.m_executorService,
7979
AbstractConfigFile.m_executorService);
80-
DefaultApolloNamespaceCollector namespaceCollector = new DefaultApolloNamespaceCollector(
81-
configManager.m_configs, configManager.m_configLocks, configManager.m_configFiles,
82-
configManager.m_configFileLocks);
83-
DefaultApolloRunningParamsCollector startupCollector = new DefaultApolloRunningParamsCollector(
80+
DefaultApolloClientNamespaceCollector namespaceCollector = new DefaultApolloClientNamespaceCollector(
81+
configManager.m_configs, configManager.m_configFiles);
82+
DefaultApolloClientBootstrapArgsCollector startupCollector = new DefaultApolloClientBootstrapArgsCollector(
8483
m_configUtil);
8584

8685
List<MetricsCollector> collectors = Lists.newArrayList(exceptionCollector, namespaceCollector,
@@ -99,13 +98,13 @@ private static void initializeConfigMonitor(List<MetricsCollector> collectors,
9998
MetricsExporter metricsExporter) {
10099
DefaultConfigMonitor defaultConfigMonitor = (DefaultConfigMonitor) ApolloInjector.getInstance(
101100
ConfigMonitor.class);
102-
DefaultApolloExceptionCollector exceptionCollector = (DefaultApolloExceptionCollector) collectors.get(
101+
DefaultApolloClientExceptionCollector exceptionCollector = (DefaultApolloClientExceptionCollector) collectors.get(
103102
0);
104-
DefaultApolloNamespaceCollector namespaceCollector = (DefaultApolloNamespaceCollector) collectors.get(
103+
DefaultApolloClientNamespaceCollector namespaceCollector = (DefaultApolloClientNamespaceCollector) collectors.get(
105104
1);
106-
DefaultApolloThreadPoolCollector threadPoolCollector = (DefaultApolloThreadPoolCollector) collectors.get(
105+
DefaultApolloClientThreadPoolCollector threadPoolCollector = (DefaultApolloClientThreadPoolCollector) collectors.get(
107106
2);
108-
DefaultApolloRunningParamsCollector startupCollector = (DefaultApolloRunningParamsCollector) collectors.get(
107+
DefaultApolloClientBootstrapArgsCollector startupCollector = (DefaultApolloClientBootstrapArgsCollector) collectors.get(
109108
3);
110109
defaultConfigMonitor.init(namespaceCollector, threadPoolCollector, exceptionCollector,
111110
startupCollector, metricsExporter);
@@ -118,7 +117,7 @@ public static MessageProducerComposite initializeMessageProducerComposite() {
118117

119118
// The producer that comes with the client
120119
if (m_configUtil.isClientMonitorEnabled()) {
121-
producers.add(new MonitorMessageProducer());
120+
producers.add(new ClientMonitorMessageProducer());
122121
}
123122

124123
if (ClassLoaderUtil.isClassPresent(CatNames.CAT_CLASS)) {

apollo-client/src/main/java/com/ctrip/framework/apollo/internals/ConfigServiceLocator.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,7 @@
1616
*/
1717
package com.ctrip.framework.apollo.internals;
1818

19-
import static com.ctrip.framework.apollo.monitor.internal.tracer.MessageProducerComposite.APOLLO_CONFIG_EXCEPTION;
20-
import static com.ctrip.framework.apollo.monitor.internal.tracer.MessageProducerComposite.APOLLO_CONFIG_SERVICES;
21-
import static com.ctrip.framework.apollo.monitor.internal.tracer.MessageProducerComposite.APOLLO_META_SERVICE;
22-
19+
import static com.ctrip.framework.apollo.monitor.internal.MonitorConstant.*;
2320
import com.ctrip.framework.apollo.build.ApolloInjector;
2421
import com.ctrip.framework.apollo.core.ApolloClientSystemConsts;
2522
import com.ctrip.framework.apollo.core.ServiceNameConsts;

apollo-client/src/main/java/com/ctrip/framework/apollo/internals/DefaultConfig.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@
1616
*/
1717
package com.ctrip.framework.apollo.internals;
1818

19-
import static com.ctrip.framework.apollo.monitor.internal.tracer.MessageProducerComposite.APOLLO_CLIENT_CONFIGCHANGES;
20-
19+
import static com.ctrip.framework.apollo.monitor.internal.MonitorConstant.*;
2120
import com.ctrip.framework.apollo.core.utils.DeferredLoggerFactory;
2221
import com.ctrip.framework.apollo.enums.ConfigSourceType;
2322
import com.google.common.collect.Maps;

apollo-client/src/main/java/com/ctrip/framework/apollo/internals/DefaultConfigManager.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,16 @@
1616
*/
1717
package com.ctrip.framework.apollo.internals;
1818

19-
import static com.ctrip.framework.apollo.monitor.internal.collector.internal.DefaultApolloNamespaceCollector.NAMESPACE_MONITOR;
20-
import static com.ctrip.framework.apollo.monitor.internal.collector.internal.DefaultApolloNamespaceCollector.NAMESPACE_USAGE_COUNT;
19+
import static com.ctrip.framework.apollo.monitor.internal.collector.impl.DefaultApolloClientNamespaceCollector.APOLLO_CLIENT_NAMESPACE_USAGE;
2120

2221
import com.ctrip.framework.apollo.Config;
2322
import com.ctrip.framework.apollo.ConfigFile;
2423
import com.ctrip.framework.apollo.build.ApolloInjector;
2524
import com.ctrip.framework.apollo.core.enums.ConfigFileFormat;
26-
import com.ctrip.framework.apollo.monitor.internal.MonitorConstant;
27-
import com.ctrip.framework.apollo.monitor.internal.model.MetricsEvent;
25+
import com.ctrip.framework.apollo.enums.ConfigSourceType;
2826
import com.ctrip.framework.apollo.spi.ConfigFactory;
2927
import com.ctrip.framework.apollo.spi.ConfigFactoryManager;
28+
import com.ctrip.framework.apollo.tracer.Tracer;
3029
import com.google.common.collect.Maps;
3130
import java.util.Map;
3231

@@ -62,10 +61,9 @@ public Config getConfig(String namespace) {
6261
}
6362
}
6463
}
65-
66-
MetricsEvent.builder().withName(NAMESPACE_USAGE_COUNT)
67-
.putAttachment(MonitorConstant.NAMESPACE, namespace)
68-
.withTag(NAMESPACE_MONITOR).push();
64+
if(!ConfigSourceType.NONE.equals(config.getSourceType())) {
65+
Tracer.logEvent(APOLLO_CLIENT_NAMESPACE_USAGE, namespace);
66+
}
6967

7068
return config;
7169
}

apollo-client/src/main/java/com/ctrip/framework/apollo/internals/DefaultInjector.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@
1919
import com.ctrip.framework.apollo.exceptions.ApolloConfigException;
2020
import com.ctrip.framework.apollo.monitor.api.ConfigMonitor;
2121
import com.ctrip.framework.apollo.monitor.internal.DefaultConfigMonitor;
22-
import com.ctrip.framework.apollo.monitor.internal.exporter.internals.DefaultMetricsExporterFactory;
22+
import com.ctrip.framework.apollo.monitor.internal.exporter.impl.DefaultMetricsExporterFactory;
2323
import com.ctrip.framework.apollo.monitor.internal.collector.MetricsCollectorManager;
24-
import com.ctrip.framework.apollo.monitor.internal.collector.internal.DefaultMetricsCollectorManager;
24+
import com.ctrip.framework.apollo.monitor.internal.collector.impl.DefaultMetricsCollectorManager;
2525
import com.ctrip.framework.apollo.monitor.internal.exporter.MetricsExporterFactory;
2626
import com.ctrip.framework.apollo.spi.ApolloInjectorCustomizer;
2727
import com.ctrip.framework.apollo.spi.ConfigFactory;

apollo-client/src/main/java/com/ctrip/framework/apollo/internals/LocalFileConfigRepository.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@
1616
*/
1717
package com.ctrip.framework.apollo.internals;
1818

19-
import static com.ctrip.framework.apollo.monitor.internal.tracer.MessageProducerComposite.APOLLO_CONFIG_EXCEPTION;
20-
19+
import static com.ctrip.framework.apollo.monitor.internal.MonitorConstant.*;
2120
import com.ctrip.framework.apollo.core.utils.DeferredLoggerFactory;
2221
import com.ctrip.framework.apollo.enums.ConfigSourceType;
2322
import java.io.File;

apollo-client/src/main/java/com/ctrip/framework/apollo/internals/RemoteConfigLongPollService.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
*/
1717
package com.ctrip.framework.apollo.internals;
1818

19-
import static com.ctrip.framework.apollo.monitor.internal.MonitorConstant.NAMESPACE;
20-
import static com.ctrip.framework.apollo.monitor.internal.tracer.MessageProducerComposite.APOLLO_CONFIG_EXCEPTION;
19+
import static com.ctrip.framework.apollo.monitor.internal.MonitorConstant.*;
20+
import static com.ctrip.framework.apollo.monitor.internal.collector.impl.DefaultApolloClientNamespaceCollector.APOLLO_CLIENT_NAMESPACE_TIMEOUT;
2121

2222
import com.ctrip.framework.apollo.build.ApolloInjector;
2323
import com.ctrip.framework.apollo.core.ConfigConsts;
@@ -31,8 +31,6 @@
3131
import com.ctrip.framework.apollo.core.utils.ApolloThreadFactory;
3232
import com.ctrip.framework.apollo.core.utils.StringUtils;
3333
import com.ctrip.framework.apollo.exceptions.ApolloConfigException;
34-
import com.ctrip.framework.apollo.monitor.internal.collector.internal.DefaultApolloNamespaceCollector;
35-
import com.ctrip.framework.apollo.monitor.internal.model.MetricsEvent;
3634
import com.ctrip.framework.apollo.spi.ConfigServiceLoadBalancerClient;
3735
import com.ctrip.framework.apollo.tracer.Tracer;
3836
import com.ctrip.framework.apollo.tracer.spi.Transaction;
@@ -219,9 +217,7 @@ private void doLongPollingRefresh(String appId, String cluster, String dataCente
219217
transaction.setStatus(ex);
220218
long sleepTimeInSecond = m_longPollFailSchedulePolicyInSecond.fail();
221219
if (ex.getCause() instanceof SocketTimeoutException) {
222-
MetricsEvent.builder().withName(DefaultApolloNamespaceCollector.NAMESPACE_TIMEOUT)
223-
.putAttachment(NAMESPACE, assembleNamespaces())
224-
.withTag(DefaultApolloNamespaceCollector.NAMESPACE_MONITOR).push();
220+
Tracer.logEvent(APOLLO_CLIENT_NAMESPACE_TIMEOUT,assembleNamespaces());
225221
}
226222
logger.warn(
227223
"Long polling failed, will retry in {} seconds. appId: {}, cluster: {}, namespaces: {}, long polling url: {}, reason: {}",

apollo-client/src/main/java/com/ctrip/framework/apollo/internals/RemoteConfigRepository.java

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,10 @@
1616
*/
1717
package com.ctrip.framework.apollo.internals;
1818

19-
import static com.ctrip.framework.apollo.monitor.internal.MonitorConstant.NAMESPACE;
20-
import static com.ctrip.framework.apollo.monitor.internal.MonitorConstant.TIMESTAMP;
21-
import static com.ctrip.framework.apollo.monitor.internal.collector.internal.DefaultApolloNamespaceCollector.NAMESPACE_MONITOR;
22-
import static com.ctrip.framework.apollo.monitor.internal.tracer.MessageProducerComposite.APOLLO_CLIENT_CONFIGS;
23-
import static com.ctrip.framework.apollo.monitor.internal.tracer.MessageProducerComposite.APOLLO_CLIENT_CONFIGMETA;
24-
import static com.ctrip.framework.apollo.monitor.internal.tracer.MessageProducerComposite.APOLLO_CLIENT_VERSION;
25-
import static com.ctrip.framework.apollo.monitor.internal.tracer.MessageProducerComposite.APOLLO_CONFIGSERVICE;
26-
import static com.ctrip.framework.apollo.monitor.internal.tracer.MessageProducerComposite.APOLLO_CONFIG_EXCEPTION;
19+
import static com.ctrip.framework.apollo.monitor.internal.MonitorConstant.*;
20+
import static com.ctrip.framework.apollo.monitor.internal.collector.impl.DefaultApolloClientNamespaceCollector.APOLLO_CLIENT_NAMESPACE_FIRST_LOAD_SPEND;
21+
import static com.ctrip.framework.apollo.monitor.internal.collector.impl.DefaultApolloClientNamespaceCollector.NAMESPACE_MONITOR;
22+
import static com.ctrip.framework.apollo.monitor.internal.collector.impl.DefaultApolloClientNamespaceCollector.APOLLO_CLIENT_NAMESPACE_NOT_FOUND;
2723

2824
import com.ctrip.framework.apollo.Apollo;
2925
import com.ctrip.framework.apollo.build.ApolloInjector;
@@ -40,7 +36,6 @@
4036
import com.ctrip.framework.apollo.enums.ConfigSourceType;
4137
import com.ctrip.framework.apollo.exceptions.ApolloConfigException;
4238
import com.ctrip.framework.apollo.exceptions.ApolloConfigStatusCodeException;
43-
import com.ctrip.framework.apollo.monitor.internal.collector.internal.DefaultApolloNamespaceCollector;
4439
import com.ctrip.framework.apollo.monitor.internal.model.MetricsEvent;
4540
import com.ctrip.framework.apollo.tracer.Tracer;
4641
import com.ctrip.framework.apollo.tracer.spi.Transaction;
@@ -124,10 +119,12 @@ public Properties getConfig() {
124119
if (m_configCache.get() == null) {
125120
long start = System.currentTimeMillis();
126121
this.sync();
127-
MetricsEvent.builder().withName(DefaultApolloNamespaceCollector.NAMESPACE_FIRST_LOAD_SPEND).withTag(
128-
NAMESPACE_MONITOR)
129-
.putAttachment(NAMESPACE, m_namespace)
130-
.putAttachment(TIMESTAMP, System.currentTimeMillis() - start).push();
122+
Tracer.logEvent(APOLLO_CLIENT_NAMESPACE_FIRST_LOAD_SPEND+m_namespace,
123+
String.valueOf(System.currentTimeMillis() - start));
124+
// MetricsEvent.builder().withName(APOLLO_CLIENT_NAMESPACE_FIRST_LOAD_SPEND).withTag(
125+
// NAMESPACE_MONITOR)
126+
// .putAttachment(NAMESPACE, m_namespace)
127+
// .putAttachment(TIMESTAMP, System.currentTimeMillis() - start).push();
131128
}
132129
return transformApolloConfigToProperties(m_configCache.get());
133130
}
@@ -278,8 +275,8 @@ private ApolloConfig loadApolloConfig() {
278275
appId, cluster, m_namespace);
279276
statusCodeException = new ApolloConfigStatusCodeException(ex.getStatusCode(),
280277
message);
281-
MetricsEvent.builder().withName(DefaultApolloNamespaceCollector.NAMESPACE_NOT_FOUND).withTag(
282-
NAMESPACE_MONITOR).putAttachment(NAMESPACE, m_namespace).push();
278+
Tracer.logEvent(APOLLO_CLIENT_NAMESPACE_NOT_FOUND,m_namespace);
279+
283280
}
284281
Tracer.logEvent(APOLLO_CONFIG_EXCEPTION, ExceptionUtil.getDetailMessage(statusCodeException));
285282
transaction.setStatus(statusCodeException);

0 commit comments

Comments
 (0)