You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@servicecomb.apache.org by GitBox <gi...@apache.org> on 2018/01/03 13:59:43 UTC

[GitHub] WillemJiang closed pull request #22: [SCB-118] CN Prometheus Integration MD

WillemJiang closed pull request #22: [SCB-118] CN Prometheus Integration MD
URL: https://github.com/apache/incubator-servicecomb-website/pull/22
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/_data/navigation.yml b/_data/navigation.yml
index 848a0d2..bb6c190 100755
--- a/_data/navigation.yml
+++ b/_data/navigation.yml
@@ -92,9 +92,6 @@ t:
           - title: Zuul
             url: /users/edging-service/zuul/
 
-      - title: Metrics
-        url: /users/metrics/
-
       - title: Deployment
         children:
           - title: Run Mode
@@ -214,7 +211,15 @@ t:
             url: /cn/users/edging-service/zuul/
 
       - title: ??
-        url: /cn/users/metrics/
+        children:
+          - title: 0.5.0??????
+            url: /cn/users/metrics-in-0.5.0/
+          - title: 1.0.0-m1??????
+            url: /cn/users/metrics-in-1.0.0-m1/
+          - title: 1.0.0-m1??????????
+            url: /cn/users/metrics-write-file-extension-and-sample-in-1.0.0-m1/
+          - title: 1.0.0-m1???????????????
+            url: /cn/users/metrics-integration-with-prometheus-in-1.0.0-m1/
 
       - title: ??
         children:
diff --git a/_users/Metrics.md b/_users/Metrics.md
deleted file mode 100644
index d1257e9..0000000
--- a/_users/Metrics.md
+++ /dev/null
@@ -1,140 +0,0 @@
----
-title: "Metrics Monitor in 0.5.0"
-lang: en
-ref: metrics
-permalink: /users/metrics/
-excerpt: "Metrics Monitor in 0.5.0"
-last_modified_at: 2017-12-29T14:01:43-04:00
-redirect_from:
-  - /theme-setup/
----
-
-{% include toc %}
-??????0.5.0??????????Metrics??????????????Preview?????????????????????????ServiceComb????(dev-subscribe@servicecomb.incubator.apache.org)?
-
-## ??
-??????????????????????????????????????
-
-![MonolithicArch](/assets/images/MonolithicArch.png)
-
-????????????????????????????????????????
-
-![MicroserviceArch](/assets/images/MicroserviceArch.png)
-
-????????????????????????????????????CI/CD??????????????????????????????????????????????????????????
-
-## ??
-0.5.0???Metrics??Java Chassis?Invocation???????????Hystrix??TPS?Latency???????????CPU???????????????????????????Metrics???  
-????????SLF4J????????????????????????????Logger??????????Metrics?????????????????????????????????[????](https://stackoverflow.com/questions/9652032/how-can-i-create-2-separate-log-files-with-one-log4j-config-file)?????????Log4j????????????[????](https://stackoverflow.com/questions/36643692/log4j2-multiple-appenders-the-same-output-is-written-to-multiple-files)??????????Log4j2???????????  
-Logger????LoggerFactory.getLogger????????
-```java
-static final Logger log = LoggerFactory.getLogger("${Logger?}");
-log.trace("${Metric??}");
-```
-*???????log??????trace
-
-????????Logger??????Metrics???   
-
-| Logger?                                  | Metric??              |
-| :--------------------------------------- | :-------------------- |
-| averageServiceExecutionTime              | Producer?????????     |
-| averageTimeInQueue                       | Producer????????????  |
-| countInQueue                             | Producer????????????? |
-| cpuLoad                                  | ??CPU???              |
-| cpuRunningThreads                        | ????????              |
-| heapCommit?heapInit?heapMax?heapUsed     | ??Heap????            |
-| nonHeapCommit?nonHeapInit?nonHeapMax?nonHeapUsed | ??NonHeap????         |
-| latency                                  | ??????                |
-| tps                                      | ??????Transaction per seconds?  |
-| maxLifeTimeInQueue                       | Producer????????????? |
-| minLifeTimeInQueue                       | Producer????????????? |
-| totalRequestsPerProvider                 | Producer????          |
-| totalRequestsPerConsumer                 | Consumer????          |
-| totalFailedRequestsPerProvider           | Producer??????        |
-| totalFailRequestsPerConsumer             | Consumer??????        |
-
-## ????
-??microservice.yaml?????????
-```yaml 
-APPLICATION_ID: demo
-service_description:
-  name: demoService
-  version: 0.0.1
-
-servicecomb:
-  metrics:
-    #metrics????????????????????
-    polltime: 5
-    #??metric???????????????????1
-    round_places: 1
-    file:
-      #????????
-      enabled: true
-      #??????????plugin_id
-      name_prefix: bmi.calculator
-```
-
-## ????
-* ???provider??????bizkeeper-provider???TPS?Latency???
-```yaml
-APPLICATION_ID: demo
-service_description:
- name: demoService
- version: 0.0.1
-cse:
- handler:
-   chain:
-     Provider:
-       default: bizkeeper-provider
-```
-
-## ????
-
-???averageServiceExecutionTime??????Log4j??????
-```properties
-#??Logger??averageServiceExecutionTime
-log4j.category.averageServiceExecutionTime=TRACE, averageServiceExecutionTimeLogger
-#???????????Logger?
-log4j.additivity.averageServiceExecutionTime=false
-#??RollingFileAppender
-log4j.appender.averageServiceExecutionTimeLogger=org.apache.log4j.RollingFileAppender
-log4j.appender.averageServiceExecutionTimeLogger.File=/target/averageServiceExecutionTime.log
-log4j.appender.averageServiceExecutionTimeLogger.MaxFileSize=10MB
-log4j.appender.averageServiceExecutionTimeLogger.MaxBackupIndex=10
-log4j.appender.averageServiceExecutionTimeLogger.layout=org.apache.log4j.PatternLayout
-log4j.appender.averageServiceExecutionTimeLogger.layout.ConversionPattern=%m%n
-log4j.appender.averageServiceExecutionTimeLogger.append=true
-```
-
-???Log4j2??????
-```xml
-<!--Log4j2????????-->
-<Properties>
-  <Property name="maxFileSize">10MB</Property>
-  <Property name="maxFileCount">10</Property>
-  <Property name="filePath">/target</Property>
-  <Property name="filePrefix">bmi.calculator</Property>
-</Properties>
-
-<Appenders>
-  <RollingFile name="averageServiceExecutionTime" fileName="${filePath}${filePrefix}.averageServiceExecutionTime.dat"
-    filePattern="${filePath}${filePrefix}.averageServiceExecutionTime-%i.dat">
-    <PatternLayout pattern="%m%n"/>
-    <SizeBasedTriggeringPolicy size="${maxFileSize}"/>
-    <DefaultRolloverStrategy max="${maxFileCount}"/>
-  </RollingFile>
-</Appenders>
-
-<Loggers>
-  <Logger name="averageServiceExecutionTime" level="trace" additivity="false">
-    <AppenderRef ref="averageServiceExecutionTime"/>
-  </Logger>
-</Loggers>
-```
-
-??Metric??????????????????????????
-
-## ????
-?????????????????metrics?????0.5.0??????Operation???Metrics???
-
-![Metrics??](/assets/images/metrics-output.png)
diff --git a/_users/cn/Metrics.md b/_users/cn/metrics-in-0.5.0.md
similarity index 100%
rename from _users/cn/Metrics.md
rename to _users/cn/metrics-in-0.5.0.md
diff --git a/_users/cn/metrics-in-1.0.0-m1.md b/_users/cn/metrics-in-1.0.0-m1.md
new file mode 100644
index 0000000..70e5ed1
--- /dev/null
+++ b/_users/cn/metrics-in-1.0.0-m1.md
@@ -0,0 +1,194 @@
+---
+title: "1.0.0-m1??????"
+lang: cn
+ref: metrics
+permalink: /cn/users/metrics-in-1.0.0-m1/
+excerpt: "1.0.0-m1??????"
+last_modified_at: 2017-12-30T10:01:43-04:00
+redirect_from:
+  - /theme-setup/
+---
+
+{% include toc %}
+??????0.5.0??????????Metrics?1.0.0-m1???????????????????????ServiceComb????(dev-subscribe@servicecomb.incubator.apache.org)??????????
+
+## ??
+??????????????????????????????????????
+
+![MonolithicArch](/assets/images/MonolithicArch.png)
+
+????????????????????????????????????????
+
+![MicroserviceArch](/assets/images/MicroserviceArch.png)
+
+????????????????????????????????????CI/CD??????????????????????????????????????????????????????????
+
+## 1.0.00-m1????
+?0.5.0???????[0.5.0??????](/cn/users/metrics-in-0.5.0/)?????????
+1.metrics?foundation-metrics?????????????????????  
+2.??ThreadLocal?????????????????????????????  
+3.Metrics??????????????????????????????  
+4.??????????????????????????????  
+5.??foundation-metrics????????????????????????  
+
+????0.5.0?????1.0.0-m1????????????????????Metrics???????  
+
+| Module?             | ??                              |
+| :------------------ | :------------------------------ |
+| metrics-core        | Metric???????????Metrics??????  |
+| metrics-common      | Metric?????????Metric DTO?????? |
+| metrics-extension   | ??Metric???????                 |
+| metrics-integration | ??Metric?????????               |
+| metrics-sample      | ??Metric?????                   |
+
+?????????????
+![MetricsDependency.png](/assets/images/MetricsDependency.png)
+
+### ????????Hystrix?handler-bizkeeper????????????????????
+1.0.0-m1?????Hystrix?????TPS?Latency???????Java Chassis Bizkeeper Handler????????????????foundation-common??EventBus???????metrics-core??DefaultEventListenerManager???????????????????
+  
+| ????????                               | ??                        |
+| :------------------------------------- | :------------------------ |
+| InvocationStartedEventListener         | Consumer???Producer????   |
+| InvocationStartProcessingEventListener | Producer????????????      |
+| InvocationFinishedEventListener        | Consumer?????Producer???? |
+
+*?????Java Chassis?Reactor????Vertx????Producer???Invocation????????????????????????????Invocation?????????LifeTimeInQueue????????waitInQueue????????????????????????????????????Consumer????????????????InvocationStartProcessingEvent?
+
+????????????Java Chassis?RestInvocation?HighwayServerInvoke?HighwayClient?VertxHttpMethod???????????Metrics?EventBus??????????????????????????
+
+### ??Netflix Servo??Metric????
+Netflix Servo???????????Monitor??????????  
+
+| Monitor?     | ??            |
+| :----------- | :------------ |
+| BasicCounter | ????????????? |
+| StepCounter  | ???????       |
+| MinGauge     | ????????      |
+| MaxGauge     | ????????      |
+
+*???Servo???0.10.1
+
+### ????
+?????Metric????????  
+1.???????????????????????Consumer??????Metric??????????
+2.?????????????????????????????????????????????????????????????Servo?????????[?Polling Intervals?](https://github.com/Netflix/servo/wiki/Getting-Started)?  
+?1.0.0-m1?????servicecomb.metrics.window_time????????servo.pollers???
+
+## Metric??
+?1.0.0-m1????????Operation???Metric????????  
+
+| Group       | Level                    | Catalog  | Metrics         | Item           |
+| :---------- | :----------------------- | :------- | :-------------- | :------------- |
+| servicecomb | instance                 | system   | cpu             | load           |
+| servicecomb | instance                 | system   | cpu             | runningThreads |
+| servicecomb | instance                 | system   | heap            | init           |
+| servicecomb | instance                 | system   | heap            | max            |
+| servicecomb | instance                 | system   | heap            | commit         |
+| servicecomb | instance                 | system   | heap            | used           |
+| servicecomb | instance                 | system   | nonHeap         | init           |
+| servicecomb | instance                 | system   | nonHeap         | max            |
+| servicecomb | instance                 | system   | nonHeap         | commit         |
+| servicecomb | instance                 | system   | nonHeap         | used           |
+| servicecomb | instance/operationName   | producer | waitInQueue     | count          |
+| servicecomb | instance/operationName   | producer | lifeTimeInQueue | average        |
+| servicecomb | instance/operationName   | producer | lifeTimeInQueue | max            |
+| servicecomb | instance/operationName   | producer | lifeTimeInQueue | min            |
+| servicecomb | instance/operationName   | producer | executionTime   | average        |
+| servicecomb | instance/operationName   | producer | executionTime   | max            |
+| servicecomb | instance/operationName   | producer | executionTime   | min            |
+| servicecomb | instance/operationName   | producer | producerLatency | average        |
+| servicecomb | instance/operationName   | producer | producerLatency | max            |
+| servicecomb | instance/operationName   | producer | producerLatency | min            |
+| servicecomb | instance/operationName   | producer | producerCall    | total          |
+| servicecomb | instance/operationName   | producer | producerCall    | tps            |
+| servicecomb | instance/operationName   | consumer | consumerLatency | average        |
+| servicecomb | instance/operationName   | consumer | consumerLatency | max            |
+| servicecomb | instance/operationName   | consumer | consumerLatency | min            |
+| servicecomb | instance/operationName   | consumer | consumerCall    | total          |
+| servicecomb | instance/operationName   | consumer | consumerCall    | tps            |
+
+*operationName?????Operation????????Java Chassis MicroserviceQualifiedName???????.SchemaID.?????????
+
+## ????
+### ????
+??microservice.yaml?????????  
+```yaml 
+APPLICATION_ID: demo
+service_description:
+  name: demoService
+  version: 0.0.1
+
+servicecomb:
+  metrics:
+    #???????servo.pollers???????????
+    #???????????????,??????????5000,10000?????????????????5000?windowTimeIndex?0???????10000?windowTimeIndex?1?????
+    window_time: 5000
+```
+*????????????????????????????????  
+![TimeWindowComment.png](/assets/images/TimeWindowComment.png)
+
+### ????
+?????metrics-core?????  
+```xml
+    <dependency>
+      <groupId>io.servicecomb</groupId>
+      <artifactId>metrics-core</artifactId>
+      <version>1.0.0-m1</version>
+    </dependency>
+```
+
+## ????
+???Metrics???????????????Metrics???  
+### ???????
+????????metrics-core????Springmvc????????  
+```java
+@RestSchema(schemaId = "metricsEndpoint")
+@RequestMapping(path = "/metrics")
+public class DefaultMetricsPublisher implements MetricsPublisher {
+
+  private final DataSource dataSource;
+
+  public DefaultMetricsPublisher(DataSource dataSource) {
+    this.dataSource = dataSource;
+  }
+
+  @RequestMapping(path = "/appliedWindowTime", method = RequestMethod.GET)
+  @Override
+  public List<Long> getAppliedWindowTime() {
+    return dataSource.getAppliedWindowTime();
+  }
+
+  @RequestMapping(path = "/", method = RequestMethod.GET)
+  @Override
+  public RegistryMetric metrics() {
+    return dataSource.getRegistryMetric();
+  }
+
+  @RequestMapping(path = "/{windowTimeIndex}", method = RequestMethod.GET)
+  @Override
+  public RegistryMetric metricsWithWindowTimeIndex(@PathVariable(name = "windowTimeIndex") int windowTimeIndex) {
+    return dataSource.getRegistryMetric(windowTimeIndex);
+  }
+}
+```
+???????microservice.yaml????rest provider????  
+```yaml
+cse:
+  service:
+    registry:
+      address: http://127.0.0.1:30100
+  rest:
+    address: 0.0.0.0:8080
+```
+??????http://localhost:8080/metrics ????????????????URL??????????
+### ??????
+???????????????Bean???io.servicecomb.metrics.core.publish.DataSource????????????????????????????
+```java
+@Autowired
+private DataSource dataSource;
+```
+*??????????????????????
+1.metrics-wirte-file??Metrics??????????metrics-extension?
+2.metrics-prometheus??Metrics???prometheus Producer
+
diff --git a/_users/cn/metrics-integration-with-prometheus-in-1.0.0-m1.md b/_users/cn/metrics-integration-with-prometheus-in-1.0.0-m1.md
new file mode 100644
index 0000000..8bbaf40
--- /dev/null
+++ b/_users/cn/metrics-integration-with-prometheus-in-1.0.0-m1.md
@@ -0,0 +1,140 @@
+---
+title: "1.0.0-m1???????????????"
+lang: cn
+ref: metrics
+permalink: /cn/users/metrics-integration-with-prometheus-in-1.0.0-m1/
+excerpt: "1.0.0-m1???????????????"
+last_modified_at: 2018-1-2T10:01:43-04:00
+redirect_from:
+  - /theme-setup/
+---
+
+{% include toc %}
+??????0.5.0??????????Metrics?1.0.0-m1???????????????????????ServiceComb????(dev-subscribe@servicecomb.incubator.apache.org)??????????
+
+## ??
+[?????](http://www.prometheus.io/)????Google Borgmon????????????[CNCF](https://www.cncf.io/)???????????????Java Chassis Metrics?1.0.0-m1???????????????????[Grafana](https://grafana.com/)??Metrics???
+
+## ????
+??Java Chassis?Java?????????[prometheus java client](https://github.com/prometheus/client_java)??Simple Client????SDK????0.1.0?  
+Prometheus??Pull????Metrics???????????Producer????provider???????Simple Http Server?????????Metrics???  
+????????????????metrics-integration/metrics-prometheus???????????
+```xml
+  <dependency>
+    <groupId>io.prometheus</groupId>
+    <artifactId>simpleclient</artifactId>
+  </dependency>
+  <dependency>
+    <groupId>io.prometheus</groupId>
+    <artifactId>simpleclient_httpserver</artifactId>
+  </dependency>
+
+  <dependency>
+    <groupId>io.servicecomb</groupId>
+    <artifactId>metrics-core</artifactId>
+  </dependency>
+```
+??????Prometheus???metrics-prometheus??????????metrics-core????
+### ?metrics-core Publish???
+??[1.0.0-m1??????](/cn/users/metrics-in-1.0.0-m1/)??????metrics-core????????????????????microservice.yaml????rest provider????  
+```yaml
+cse:
+  service:
+    registry:
+      address: http://127.0.0.1:30100
+  rest:
+    address: 0.0.0.0:8080
+```
+??????http://localhost:8080/metrics ?????Metrics????????io.servicecomb.metrics.common.RegistryMetric???????????
+```json
+{"instanceMetric":{
+"systemMetric":{"cpuLoad":10.0,"cpuRunningThreads":39,"heapInit":266338304,"heapMax":3786407936,"heapCommit":626524160,"heapUsed":338280024,"nonHeapInit":2555904,"nonHeapMax":-1,"nonHeapCommit":60342272,"nonHeapUsed":58673152},
+"consumerMetric":{"operationName":"instance","prefix":"servicecomb.instance.consumer","consumerLatency":{"total":0,"count":0,"min":0,"max":0,"average":0.0},"consumerCall":{"total":0,"tps":0.0}},
+"producerMetric":{"operationName":"instance","prefix":"servicecomb.instance.producer","waitInQueue":0,"lifeTimeInQueue":{"total":0,"count":0,"min":0,"max":0,"average":0.0},"executionTime":{"total":0,"count":0,"min":0,"max":0,"average":0.0},"producerLatency":{"total":0,"count":0,"min":0,"max":0,"average":0.0},"producerCall":{"total":1,"tps":0.0}}},
+"consumerMetrics":{},
+"producerMetrics":{"calculator.metricsEndpoint.metrics":{"operationName":"calculator.metricsEndpoint.metrics","prefix":"servicecomb.calculator.metricsEndpoint.metrics.producer","waitInQueue":0,"lifeTimeInQueue":{"total":0,"count":0,"min":0,"max":0,"average":0.0},"executionTime":{"total":0,"count":0,"min":0,"max":0,"average":0.0},"producerLatency":{"total":0,"count":0,"min":0,"max":0,"average":0.0},"producerCall":{"total":1,"tps":0.0}}
+}}
+```
+???Prometheus Simple Http Server????????Prometheus????????
+```text
+# HELP Instance Level Instance Level Metrics
+# TYPE Instance Level untyped
+servicecomb_instance_producer_producerLatency_average 0.0
+servicecomb_instance_producer_producerLatency_total 0.0
+servicecomb_instance_consumer_producerLatency_count 0.0
+...
+servicecomb_instance_producer_producerLatency_min 0.0
+servicecomb_instance_producer_lifeTimeInQueue_average 0.0
+servicecomb_instance_producer_lifeTimeInQueue_count 0.0
+servicecomb_instance_system_heap_init 2.66338304E8
+# HELP calculator.metricsEndpoint.metrics Producer Side calculator.metricsEndpoint.metrics Producer Side Metrics
+# TYPE calculator.metricsEndpoint.metrics Producer Side untyped
+servicecomb_calculator_metricsEndpoint_metrics_producer_lifeTimeInQueue_average 0.0
+...
+servicecomb_calculator_metricsEndpoint_metrics_producer_executionTime_total 0.0
+servicecomb_calculator_metricsEndpoint_metrics_producer_waitInQueue_count 0.0
+servicecomb_calculator_metricsEndpoint_metrics_producer_lifeTimeInQueue_count 0.0
+```
+?????????????????????????  
+
+*Prometheus Simple Http Server????/metrics????URL?metrics-prometheus???9696????????????????????http://localhost:9696/metrics ????*  
+
+???????Prometheus?Metric??????????????????????[????](https://prometheus.io/docs/practices/naming/)?
+
+## ????
+??????????????
+### ????
+microservice.yaml????????  
+```yaml 
+APPLICATION_ID: demo
+service_description:
+  name: demoService
+  version: 0.0.1
+
+servicecomb:
+  metrics:
+    prometheus:
+      #prometheus provider???
+      port: 9696
+```
+*????????????9696*  
+### ????
+?????metrics-prometheus?????  
+```xml
+    <dependency>
+      <groupId>io.servicecomb</groupId>
+      <artifactId>metrics-prometheus</artifactId>
+      <version>1.0.0-m1</version>
+    </dependency>
+```
+### ??Prometheus?prometheus.yml
+????prometheus.yml???????job???
+```yaml 
+scrape_configs:
+  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
+  - job_name: 'prometheus'
+
+    # metrics_path defaults to '/metrics'
+    # scheme defaults to 'http'.
+
+    static_configs:
+      - targets: ['localhost:9090']
+
+  - job_name: 'servicecomb'
+
+    # metrics_path defaults to '/metrics'
+    # scheme defaults to 'http'.
+
+    static_configs:
+      - targets: ['localhost:9696']
+```
+??job_name: 'servicecomb'?????job???????????localhost:9696???prometheus.yml???????????[????](https://prometheus.io/docs/prometheus/latest/configuration/configuration/)?
+### ??Grafana????
+???Grafana???Prometheus????????[????](https://prometheus.io/docs/visualization/grafana/)?
+## ????
+???????????Prometheus????????Prometheus Web????????http://localhost:9090/ ???Metrics?????ServiceComb???Java Chassis Metrics???????
+![MetricsInPrometheus](/assets/images/MetricsInPrometheus.png)  
+
+???????????????Grafana???Prometheus????????Grafana?????????
+
+![MetricsInGrafana](/assets/images/MetricsInGrafana.png)  
\ No newline at end of file
diff --git a/_users/cn/metrics-write-file-extension-and-sample-in-1.0.0-m1.md b/_users/cn/metrics-write-file-extension-and-sample-in-1.0.0-m1.md
new file mode 100644
index 0000000..39d8d0d
--- /dev/null
+++ b/_users/cn/metrics-write-file-extension-and-sample-in-1.0.0-m1.md
@@ -0,0 +1,173 @@
+---
+title: "1.0.0-m1??????????"
+lang: cn
+ref: metrics
+permalink: /cn/users/metrics-write-file-extension-and-sample-in-1.0.0-m1/
+excerpt: "1.0.0-m1??????????"
+last_modified_at: 2017-12-29T10:01:43-04:00
+redirect_from:
+  - /theme-setup/
+---
+
+{% include toc %}
+??????0.5.0??????????Metrics?1.0.0-m1???????????????????????ServiceComb????(dev-subscribe@servicecomb.incubator.apache.org)??????????
+
+## ??
+0.5.0???foundation-metrics????????Metrics????????1.0.0-m1????????metrics-extension??  
+?1.0.0-m1????????Operation???Metric?????????????????????????????????????Metric???????RollingFileAppender?
+?????????
+
+| Module?                         | ??                              |
+| :------------------------------- | :------------------------------   |
+| metrics-write-file               | ????Metrics?????????            |
+| metrics-write-file-config        | ?????????                        |
+| metrics-write-file-config-log4j  | ??Log4j?RollingFileAppender???     |
+| metrics-write-file-config-log4j2 | ??Log4j2?RollingFileAppender???      |
+
+*????logback?metrics-write-file-config???Log4j?log4j2??????????metrics-write-file-config-logback
+
+## ??
+### ????
+?0.5.0??????microservice.yaml?????????
+```yaml 
+APPLICATION_ID: demo
+service_description:
+  name: demoService
+  version: 0.0.1
+
+servicecomb:
+  metrics:
+    #1.0.0-m1??????????????
+    window_time: 5000
+    #??metric???????????????????1
+    round_places: 1
+    file:
+      #?????
+      root_path: ./log/metric/
+      rolling:
+        #???????
+        max_file_count: 10
+        #????????????KB?MB?GB
+        max_file_size : 10MB
+```
+*?0.5.0????????
+1.?????servicecomb.metrics.polltime(???)?????????1.0.0-m1?????????????
+2.????????????????????servicecomb.metrics.file.enabled??????????????????????????????1.0.0-m2???????
+3.???????servicecomb.metrics.filename_prefix????????appId.serviceName?
+4.???????rolling file???????????????????xml?properties?????
+
+### ????
+Java Chassis???????Spring Boot Starter??????????????????????
+#### ????????Spring Boot?????
+##### ????log4j??????
+???samples/metrics-write-file-sample/metrics-write-file-log4j???
+```xml
+    <dependency>
+      <groupId>io.servicecomb</groupId>
+      <artifactId>metrics-write-file-config</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>io.servicecomb</groupId>
+      <artifactId>metrics-write-file-config-log4j</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>io.servicecomb</groupId>
+      <artifactId>metrics-write-file</artifactId>
+    </dependency>
+```
+???log4j????1.2.17?
+##### ????log4j2??????
+???samples/metrics-write-file-sample/metrics-write-file-log4j2???
+```xml
+    <dependency>
+      <groupId>io.servicecomb</groupId>
+      <artifactId>metrics-write-file-config</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>io.servicecomb</groupId>
+      <artifactId>metrics-write-file-config-log4j2</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>io.servicecomb</groupId>
+      <artifactId>metrics-write-file</artifactId>
+    </dependency>
+```
+????????log4j???????metrics-write-file-config-log4j???metrics-write-file-config-log4j2????log4j2????2.8.2?
+#### Spring Boot Starter??????
+##### ????log4j??????
+???samples/metrics-write-file-sample/metrics-write-file-log4j-springboot???
+```xml
+    <!--need exclusion log4j-over-slf4j-->
+    <dependency>
+      <groupId>org.springframework.boot</groupId>
+      <artifactId>spring-boot-starter</artifactId>
+      <exclusions>
+        <exclusion>
+          <groupId>org.slf4j</groupId>
+          <artifactId>log4j-over-slf4j</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+
+    <!--servicecomb spring boot starter-->
+    <dependency>
+      <groupId>io.servicecomb</groupId>
+      <artifactId>spring-boot-starter-provider</artifactId>
+    </dependency>
+    
+    <!--metrics dependency-->
+    <dependency>
+      <groupId>io.servicecomb</groupId>
+      <artifactId>metrics-write-file-config</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>io.servicecomb</groupId>
+      <artifactId>metrics-write-file-config-log4j2</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>io.servicecomb</groupId>
+      <artifactId>metrics-write-file</artifactId>
+    </dependency>
+```
+spring boot starter????log4j-over-slf4j?????????????log4j?RollingFileAppender????????????????????????????????log4j-over-slf4j?????????[????](https://www.slf4j.org/legacy.html)?
+##### ????log4j2??????
+???samples/metrics-write-file-sample/metrics-write-file-log4j2-springboot???
+```xml
+    <dependency>
+      <groupId>org.springframework.boot</groupId>
+      <artifactId>spring-boot-starter</artifactId>
+    </dependency>
+
+    <!--servicecomb spring boot starter-->
+    <dependency>
+      <groupId>io.servicecomb</groupId>
+      <artifactId>spring-boot-starter-provider</artifactId>
+    </dependency>
+    
+    <!--metrics dependency-->
+    <dependency>
+      <groupId>io.servicecomb</groupId>
+      <artifactId>metrics-write-file-config</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>io.servicecomb</groupId>
+      <artifactId>metrics-write-file-config-log4j2</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>io.servicecomb</groupId>
+      <artifactId>metrics-write-file</artifactId>
+    </dependency>
+```
+?????spring boot starter??????log4j??????????????log4j??????????log4j2 write file????????????????????????????
+
+## Q & A
+1.???1.0.0-m1????????????????????log4j2.xml? ?????????
+????metrics-write-file-config-xxx????????metric?????RollingFileAppender?????Appender???????Appenders???????
+
+2.???metrics-write-file-config-log4j2???RollingFileAppender???????????createAppender????????????newBuilder ... build???
+???????newBuilder ... build??????????????????????????[????](https://logging.apache.org/log4j/2.x/manual/customconfig.html)??????createAppender?????????????????????????????1.0.0-m2????????TODO?
+
+3.?????RollingFileAppender?ClassNotFoundException??????
+?????Java???????slf4j?jcl?????????????????????log4j?log4j2?logback???????????????????????????????????????????
+???1.0.0-m1??????Operation???Metric?????????Operation??????Operation??15+???Metric????????????????????Coding???????RollingFileAppender?
+???????????log4j-over-slf4j???Bridging???????????????????mvn dependency:tree???
\ No newline at end of file
diff --git a/assets/images/MetricsDependency.png b/assets/images/MetricsDependency.png
new file mode 100644
index 0000000..8133e13
Binary files /dev/null and b/assets/images/MetricsDependency.png differ
diff --git a/assets/images/MetricsInGrafana.png b/assets/images/MetricsInGrafana.png
new file mode 100644
index 0000000..99d381c
Binary files /dev/null and b/assets/images/MetricsInGrafana.png differ
diff --git a/assets/images/MetricsInPrometheus.png b/assets/images/MetricsInPrometheus.png
new file mode 100644
index 0000000..136eb1f
Binary files /dev/null and b/assets/images/MetricsInPrometheus.png differ
diff --git a/assets/images/TimeWindowComment.png b/assets/images/TimeWindowComment.png
new file mode 100644
index 0000000..ac682f6
Binary files /dev/null and b/assets/images/TimeWindowComment.png differ


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services