@@ -419,15 +419,14 @@ apollo.client.monitor.jmx.enabled = true
419419apollo.client.monitor.exception-queue-size = 30
420420
421421# 4.指定导出指标数据使用的对应监控系统的Exporter类型,如引入apollo-plugin-client-prometheus则可填写prometheus进行启用,
422- # 可填配置取决于用户引入的MetricsExporter的SPI
422+ # 取决于SPI MetricsExporter的实现
423423apollo.client.monitor.external.type = prometheus
424424
425425# 5.指定Exporter从Monitor中导出状态信息转为指标数据的频率,默认为10秒导出一次,
426426apollo.client.monitor.external.export-period = 20
427427```
428428
429429
430- =======
431430#### 1.2.4.10 ConfigMap缓存设置
432431
433432> 适用于2.4.0及以上版本
@@ -1427,7 +1426,7 @@ interface是`com.ctrip.framework.apollo.spi.ConfigServiceLoadBalancerClient`。
14271426## 7.2 指标输出到Prometheus
14281427> 适用于2.4 . 0 及以上版本
14291428
1430- 在 2.4 . 0 版本及以上的java客户端中,增加了指标收集,导出的支持,默认支持 Prometheus ,用户可以自行扩展接入不同的监控系统 。
1429+ 可支持导出指标到 Prometheus ,或者基于 SPI 编写不同的实现来接入不同的监控系统 。
14311430
14321431引入客户端插件
14331432```xml
@@ -1548,14 +1547,20 @@ apollo_client_thread_pool_completed_task_count{thread_pool_name="AbstractConfig"
15481547## 7.3 指标输出到自定义监控系统
15491548> 适用于2.4 . 0 及以上版本
15501549
1551- 需要写 1 个 Exporter , 继承AbstractApolloClientMetricsExporter , 并实现里面的
1550+ 用户需要自行编写 MetricsExporter , 继承AbstractApolloClientMetricsExporter , 实现里面的
15521551doInit (初始化方法),
15531552isSupport (external- type配置调用方法),
15541553registerOrUpdateCounterSample (注册更新Counter 指标方法),
15551554registerOrUpdateGaugeSample (注册更新Gauge 指标方法),
15561555response (导出所需类型指标数据方法)
1556+ 并配置相关SPI 文件
15571557
1558- ### skyWalking为例
1558+ MetricsExporter 加载流程图
1559+ ! [Exporter load by apollo client](https: // cdn.jsdelivr.net/gh/apolloconfig/apollo@master/doc/images/apollo-client-monitor-exporter-load.jpg)
1560+
1561+
1562+
1563+ ### 7.3 . 1 SkyWalking 案例
15591564通过配置
15601565```properties
15611566apollo. client. monitor. enabled= true
@@ -1566,7 +1571,8 @@ apollo.client.monitor.external.type=skywalking
15661571
15671572创建SkyWalkingMetricsExporter 类,继承AbstractApolloClientMetricsExporter
15681573
1569- 继承后大致代码如下
1574+ 继承后大致代码如下
1575+ 注意: 样例演示,切勿直接到生产直接使用,请根据公司内具体情况来实现
15701576
15711577```java
15721578public class SkyWalkingMetricsExporter extends AbstractApolloClientMetricsExporter {
@@ -1660,7 +1666,9 @@ public void init(List<ApolloClientMonitorEventListener> collectors, long collect
16601666 < artifactId> apm- toolkit- micrometer- 1.10 < / artifactId>
16611667< / dependency>
16621668```
1663- 根据Micrometer 的机制初始化SkywalkingMeterRegistry ,以及一些map用于存储指标数据
1669+ 根据Micrometer 的机制初始化SkywalkingMeterRegistry ,
1670+ 以及一些map(请注意可能的OOM 问题)用于存储指标数据
1671+
16641672```java
16651673private static final String SKYWALKING = " skywalking" ;
16661674private SkywalkingMeterRegistry registry;
@@ -1747,4 +1755,13 @@ public String response() {
17471755}
17481756```
17491757
1758+ 最后在项目目录下resources/ META - INF / services编写对应的spi文件,告诉框架来加载这个类
1759+ 文件名为com.ctrip.framework.apollo.monitor.internal.exporter. ApolloClientMetricsExporter
1760+ ```text
1761+ your.package. SkyWalkingMetricsExporter
1762+ ```
17501763至此,已经将Client 的指标数据接入SkyWalking 。
1764+
1765+ ### 7.3 . 2 Prometheus 案例
1766+
1767+ [PrometheusApolloClientMetricsExporter . java](https: // github.com/apolloconfig/apollo-java/blob/main/apollo-plugin/apollo-plugin-client-prometheus/src/main/java/com/ctrip/framework/apollo/monitor/internal/exporter/impl/PrometheusApolloClientMetricsExporter.java)
0 commit comments