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/12 09:42:04 UTC

[GitHub] WillemJiang closed pull request #24: [SCB-132] Metrics MD

WillemJiang closed pull request #24: [SCB-132] Metrics MD
URL: https://github.com/apache/incubator-servicecomb-website/pull/24
 
 
   

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 bb6c190..9905397 100755
--- a/_data/navigation.yml
+++ b/_data/navigation.yml
@@ -92,6 +92,13 @@ t:
           - title: Zuul
             url: /users/edging-service/zuul/
 
+      - title: Monitor
+        children:
+          - title: Metrics-in-1.0.0-m1
+            url: /users/metrics-in-1.0.0-m1/
+          - title: Metrics-integration-with-prometheus-in-1.0.0-m1
+            url: /users/metrics-integration-with-prometheus-in-1.0.0-m1/
+
       - title: Deployment
         children:
           - title: Run Mode
diff --git a/_users/cn/metrics-in-1.0.0-m1.md b/_users/cn/metrics-in-1.0.0-m1.md
index 75becf3..00c8781 100644
--- a/_users/cn/metrics-in-1.0.0-m1.md
+++ b/_users/cn/metrics-in-1.0.0-m1.md
@@ -10,7 +10,7 @@ redirect_from:
 ---
 
 {% include toc %}
-??????0.5.0??????????Metrics?1.0.0-m1???????????????????????ServiceComb????(dev-subscribe@servicecomb.incubator.apache.org)??????????
+??????0.5.0??????????Metrics?1.0.0-m1?????????????????[Release Note](https://github.com/apache/incubator-servicecomb-java-chassis/releases)??????????????????????????ServiceComb????(dev-subscribe@servicecomb.incubator.apache.org)?????
 
 ## ??
 ??????????????????????????????????????
@@ -21,7 +21,7 @@ redirect_from:
 
 ![MicroserviceArch](/assets/images/MicroserviceArch.png)
 
-????????????????????????????????????CI/CD??????????????????????????????????????????????????????????
+??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
 
 ## 1.0.00-m1????
 ?0.5.0???????[0.5.0??????](/cn/users/metrics-in-0.5.0/)?????????
@@ -31,84 +31,88 @@ redirect_from:
 4. ??????????????????????????????  
 5. ??foundation-metrics????????????????????????  
 
-????0.5.0?????1.0.0-m1????????????????????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?????                   |
+| Module?             | ??                               |
+| :------------------ | :------------------------------- |
+| metrics-core        | Metrics???????????Metrics??????  |
+| metrics-common      | Metrics?????????Metric DTO?????? |
+| metrics-extension   | ??Metrics???????                 |
+| metrics-integration | ??Metrics?????????               |
 
 ?????????????
 ![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???????????????????
-  
+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?Reactor????[Vertx](http://vertx.io/)?????????????Producer???Invocation????????????????????????????Invocation?????????**LifeTimeInQueue**????????**waitInQueue**????????????????????????????????????Consumer????????????????InvocationStartProcessingEvent?*
 
-????????????Java Chassis?RestInvocation?HighwayServerInvoke?HighwayClient?VertxHttpMethod???????????Metrics?EventBus??????????????????????????
+??????????Java Chassis?RestInvocation?HighwayServerInvoke?InvokerUtils???????????Metrics?EventBus??????Metrics?????????????????????
 
 ### ??Netflix Servo??Metric????
-Netflix Servo???????????Monitor??????????  
+[Netflix Servo](https://github.com/Netflix/servo)???????????Monitor??????????  
 
-| Monitor?     | ??            |
-| :----------- | :------------ |
-| BasicCounter | ????????????? |
-| StepCounter  | ???????       |
-| MinGauge     | ????????      |
-| MaxGauge     | ????????      |
+| Monitor?     | ??                               |
+| :----------- | :------------------------------- |
+| BasicCounter | ?????????????                    |
+| StepCounter  | ??????????????ResettableCounter? |
+| 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???
-
+Metrics??????????????????????????????  
+1. ????
+  ??????????????????????????CPU????????Heap?????????????????????????
+2. ????
+  ????????????????????????????????????Window Time??????????  
+  a) ?????????Max?Min?Median?????;    
+  b) ?????????TPS?transaction per second??    
+  c) ????????????????????    
+  ????Metrics????????????????????????????Servo?????????[?Polling Intervals?](https://github.com/Netflix/servo/wiki/Getting-Started)?    
+  ?1.0.0-m1???????microservice.yaml??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.?????????*
+| 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 &#124; operationName | producer | waitInQueue     | count          |
+| servicecomb | instance &#124; operationName | producer | lifeTimeInQueue | average        |
+| servicecomb | instance &#124; operationName | producer | lifeTimeInQueue | max            |
+| servicecomb | instance &#124; operationName | producer | lifeTimeInQueue | min            |
+| servicecomb | instance &#124; operationName | producer | executionTime   | average        |
+| servicecomb | instance &#124; operationName | producer | executionTime   | max            |
+| servicecomb | instance &#124; operationName | producer | executionTime   | min            |
+| servicecomb | instance &#124; operationName | producer | producerLatency | average        |
+| servicecomb | instance &#124; operationName | producer | producerLatency | max            |
+| servicecomb | instance &#124; operationName | producer | producerLatency | min            |
+| servicecomb | instance &#124; operationName | producer | producerCall    | total          |
+| servicecomb | instance &#124; operationName | producer | producerCall    | tps            |
+| servicecomb | instance &#124; operationName | consumer | consumerLatency | average        |
+| servicecomb | instance &#124; operationName | consumer | consumerLatency | max            |
+| servicecomb | instance &#124; operationName | consumer | consumerLatency | min            |
+| servicecomb | instance &#124; operationName | consumer | consumerCall    | total          |
+| servicecomb | instance &#124; operationName | consumer | consumerCall    | tps            |
+
+**?Level????instance???????????????Metric??????????Operation?Metric?operationName????Java Chassis MicroserviceQualifiedName???????.SchemaID.?????????**
 
 ## ????
 ### ????
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
index 8bbaf40..58809b2 100644
--- 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
@@ -10,14 +10,14 @@ redirect_from:
 ---
 
 {% include toc %}
-??????0.5.0??????????Metrics?1.0.0-m1???????????????????????ServiceComb????(dev-subscribe@servicecomb.incubator.apache.org)??????????
+??????0.5.0??????????Metrics?1.0.0-m1?????????????????[Release Note](https://github.com/apache/incubator-servicecomb-java-chassis/releases)??????????????????????????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???  
+Prometheus??Pull????Metrics???????????Producer????provider???????Simple HTTP Server?????????Metrics???  
 ????????????????metrics-integration/metrics-prometheus???????????
 ```xml
   <dependency>
@@ -55,7 +55,7 @@ cse:
 "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????????
+??Prometheus Simple HTTP Server????????Prometheus????????
 ```text
 # HELP Instance Level Instance Level Metrics
 # TYPE Instance Level untyped
@@ -75,9 +75,9 @@ 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 Simple HTTP Server????/metrics????URL?metrics-prometheus???9696????????????????????http://localhost:9696/metrics ????*  
 
 ???????Prometheus?Metric??????????????????????[????](https://prometheus.io/docs/practices/naming/)?
 
@@ -132,7 +132,7 @@ scrape_configs:
 ### ??Grafana????
 ???Grafana???Prometheus????????[????](https://prometheus.io/docs/visualization/grafana/)?
 ## ????
-???????????Prometheus????????Prometheus Web????????http://localhost:9090/ ???Metrics?????ServiceComb???Java Chassis Metrics???????
+???Prometheus???????????????Prometheus Web????????http://localhost:9090/ ???Metrics?????ServiceComb???Java Chassis Metrics???????
 ![MetricsInPrometheus](/assets/images/MetricsInPrometheus.png)  
 
 ???????????????Grafana???Prometheus????????Grafana?????????
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
index f7939fd..273e9f5 100644
--- 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
@@ -10,24 +10,22 @@ redirect_from:
 ---
 
 {% include toc %}
-??????0.5.0??????????Metrics?1.0.0-m1???????????????????????ServiceComb????(dev-subscribe@servicecomb.incubator.apache.org)??????????
+??????0.5.0??????????Metrics?1.0.0-m1?????????????????[Release Note](https://github.com/apache/incubator-servicecomb-java-chassis/releases)??????????????????????????ServiceComb????(dev-subscribe@servicecomb.incubator.apache.org)?????
 
 ## ??
-0.5.0???foundation-metrics????????Metrics????????1.0.0-m1????????metrics-extension??  
+0.5.0???foundation-metrics????????Metrics????????1.0.0-m1??????Sample???????samples/metrics-write-file-sample??  
 ?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???      |
+| Module?                                  | ??                              |
+| :--------------------------------------- | :------------------------------ |
+| metrics-write-file                       | ????Metrics?????????            |
+| metrics-write-file-config-log4j-springboot | ??Log4j?RollingFileAppender???  |
+| metrics-write-file-config-log4j2-springboot | ??Log4j2?RollingFileAppender??? |
 
-*????logback?metrics-write-file-config???Log4j?log4j2??????????metrics-write-file-config-logback*
+*????logback??????Log4j?Log4j2??????????*
 
-## ??
-### ????
+## ????
 ?0.5.0??????microservice.yaml?????????
 ```yaml 
 APPLICATION_ID: demo
@@ -56,46 +54,20 @@ servicecomb:
 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???
+## ???????
+1. ??????metrics-write-file????????????Metrics??????????????????  
 ```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>
+      <groupId>io.servicecomb.samples</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???
+*????????????????????????*    
+2. metrics-write-file????????????RollingFileAppender?????????????????????log4j???metrics-write-file-log4j-springboot????Log4JMetricsFileWriter????log4j2???metrics-write-file-log4j2-springboot????Log4J2MetricsFileWriter?
+  *???????????????????FileWriter?*   
+
+## ??Spring Boot Starter??????
+Java Chassis???Spring Boot Starter?????Spring Boot Starter??????????Log4j????????????????????samples/metrics-write-file-sample/metrics-write-file-log4j-springboot???
 ```xml
     <!--need exclusion log4j-over-slf4j-->
     <dependency>
@@ -114,60 +86,20 @@ Java Chassis???????Spring Boot Starter?????????
       <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>
+Spring Boot Starter????log4j-over-slf4j???Log Bridge???????log4j????????RollingFileAppender???????????slf4j????log4j?????Log Bridge?????????????????????log4j-over-slf4j?????????[????](https://www.slf4j.org/legacy.html#log4j-over-slf4j)?
 
-    <!--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????????????????????????????
+## ????
+metrics-write-file-config-log4j-springboot?metrics-write-file-config-log4j2-springboot????????????????ServiceApplication????????????target/metric/??????Metrics??????????????http://localhost:8080/f ???????????Operation???Metrics?????????????
 
 ## Q & A
 1. ???1.0.0-m1????????????????????log4j2.xml? ?????????  
-????metrics-write-file-config-xxx????????metric?????RollingFileAppender?????Appender???????Appenders???????
+  ????????????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?
+2. ???Log4J2MetricsFileWriter???RollingFileAppender???????????createAppender????????????newBuilder ... build???  
+  ???????newBuilder ... build??????????????????????????[????](https://logging.apache.org/log4j/2.x/manual/customconfig.html)??????createAppender????????????????????????????????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
+  ?????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/_users/metrics-in-1.0.0-m1.md b/_users/metrics-in-1.0.0-m1.md
new file mode 100644
index 0000000..79cfb2e
--- /dev/null
+++ b/_users/metrics-in-1.0.0-m1.md
@@ -0,0 +1,208 @@
+---
+title: "Metrics in 1.0.0-m1"
+lang: en
+ref: metrics
+permalink: /users/metrics-in-1.0.0-m1/
+excerpt: "Metrics in 1.0.0-m1"
+last_modified_at: 2017-12-30T10:01:43-04:00
+redirect_from:
+  - /theme-setup/
+---
+
+{% include toc %}
+Metrics had supported from Java chassis version 0.5.0,in version 1.0.0-m1,we had reconstruction it and add some more features,please checkout the user guide and [release note](https://github.com/apache/incubator-servicecomb-java-chassis/releases) for more information.Also subscribe ServiceComb mail-list(dev-subscribe@servicecomb.incubator.apache.org) and join discussion is welcome.
+
+## Background
+Microservice is trend of technology,it resolve many problems also follows new problem. 
+
+![MonolithicArch](/assets/images/MonolithicArch.png)
+
+This is traditional software architecture always called 'Monolithic',it's difficult for developer maintain the code or add new feature because of tight coupling,but it's easy for operation engineer deploy and maintenance(only one system process).
+
+![MicroserviceArch](/assets/images/MicroserviceArch.png)
+
+This is microservice system architecture,after split 'Monolithic' into many small services,developer obtain many benefits such as architecture independent and more agility etc,but operation engineer need to maintenance a whole lot of microservice instances.If don't import metrics,when system  is abnormal or user experience getting worse,it's very difficult to dentifying where the problem is and make some strategy in order to prevent it.
+
+## 1.0.00-m1 Principles
+In previous version(0.5.0)?implementation of metrics had some imperfections:
+1. Metrics code written in foundation-metrics module,it's a low level module,and include some customized function; 
+2. Use ThreadLocal variable collect and statistics data,performance hight but has memory leak risk;
+3. Output data of metrics is joined text not dependent number,difficult to reuse;
+4. Not support publish,unable integration with other monitor system;
+5. Because foundation-metrics is a low level module and certainly be loaded,user can't exclude it if unnecessary.
+
+So,upgrading from 0.5.0 to 1.0.0-m1,we had done a fully reconstruction,now it's include this modules:   
+
+| Module Name         | Description                              |
+| :------------------ | :--------------------------------------- |
+| metrics-core        | Metrics core module,work immediately after imported |
+| metrics-common      | Metrics common module,include DTO classes |
+| metrics-extension   | Include some metrics extension module    |
+| metrics-integration | Include metrics Integration with other monitor system |
+
+The dependency of this modules is:
+![MetricsDependency.png](/assets/images/MetricsDependency.png)
+
+### Use event collect invocation data,not from Hystrix(handler-bizkeeper)any more
+From 1.0.0-m1 invocation data such as TPS and latency are collected from invocation event,not from Hystrix?handler-bizkeeper? any more,so you don't need add Java Chassis Bizkeeper Handler only for metrics.we use EventBus in foundation-common,when DefaultEventListenerManager in metrics-core had initialized,three event listener class will be auto registered:
+
+| Event Listener Name                    | Description                              |
+| :------------------------------------- | :--------------------------------------- |
+| InvocationStartedEventListener         | Trigger when consumer or producer called |
+| InvocationStartProcessingEventListener | Trigger when producer fetch invocation from queue and start process |
+| InvocationFinishedEventListener        | Trigger when consumer call returned or producer process finished |
+
+*ServiceComb java chassis had used [Vertx](http://vertx.io/) as Reactor framework,in synchronous call mode when producer received invocation from consumer,it won't start process immediately but put it into a queue,this queue called invocation queue(like disk queue in operation system),time waiting in the queue called **LifeTimeInQueue**,the length of the queue called **waitInQueue**,this two metrics are very important for measure stress of the microservice;consumer not has this queue,so InvocationStartProcessingEvent will never be triggered at consumer side.*
+
+The code for trigger event write in RestInvocation,HighwayServerInvoke and InvokerUtils,if microservice don't import metrics,event listener of metrics won't be registered,the impact on performance is little.
+
+### Use Netflix Servo as Monitor of Metric
+[Netflix Servo](https://github.com/Netflix/servo) had implement a collection of high performance monitor,we had used four of them:
+
+| Monitor Name | Description                       |
+| :----------- | :-------------------------------- |
+| BasicCounter | As name of it,always increment    |
+| StepCounter  | Called 'ResettableCounter' before |
+| MinGauge     | Mark min value in step            |
+| MaxGauge     | Mark max value in step            |
+
+*The version of Servo we used is 0.10.1*
+
+### Window Time(also may called 'Polling Interval' or 'Step Cycle')
+Metrics had many classifications,we can divided them into two major types by how get value:   
+1. Direct get  
+  You can direct get newest value anytime,such as system resource usage include cpu load rate,running thread count,heap size and call count,queue length,etc.
+2. From statistics  
+  After a 'certain time' passed can counting the value,this time we called 'Window Time',include:  
+  a) Take one from many,like Max?Min?Median;   
+  b) Time-related,like TPS(transaction per second);    
+  c) Count-related,like average,variance.    
+  If get value of this type,the result returned is the last 'Step Cycle' counted.in Servo,this time called ['Polling Intervals'](https://github.com/Netflix/servo/wiki/Getting-Started).
+  From 1.0.0-m1,can set **servicecomb.metrics.window_time** in microservice.yaml,it has same effect as set **servo.pollers**.   
+
+## Metric List
+From 1.0.0-m1,start support output metrics of operation level:   
+
+| 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 &#124; operationName | producer | waitInQueue     | count          |
+| servicecomb | instance &#124; operationName | producer | lifeTimeInQueue | average        |
+| servicecomb | instance &#124; operationName | producer | lifeTimeInQueue | max            |
+| servicecomb | instance &#124; operationName | producer | lifeTimeInQueue | min            |
+| servicecomb | instance &#124; operationName | producer | executionTime   | average        |
+| servicecomb | instance &#124; operationName | producer | executionTime   | max            |
+| servicecomb | instance &#124; operationName | producer | executionTime   | min            |
+| servicecomb | instance &#124; operationName | producer | producerLatency | average        |
+| servicecomb | instance &#124; operationName | producer | producerLatency | max            |
+| servicecomb | instance &#124; operationName | producer | producerLatency | min            |
+| servicecomb | instance &#124; operationName | producer | producerCall    | total          |
+| servicecomb | instance &#124; operationName | producer | producerCall    | tps            |
+| servicecomb | instance &#124; operationName | consumer | consumerLatency | average        |
+| servicecomb | instance &#124; operationName | consumer | consumerLatency | max            |
+| servicecomb | instance &#124; operationName | consumer | consumerLatency | min            |
+| servicecomb | instance &#124; operationName | consumer | consumerCall    | total          |
+| servicecomb | instance &#124; operationName | consumer | consumerCall    | tps            |
+
+**When the value of Level is 'instance',it's means microservice instance metric,otherwise specific operation metric,operationName same as Java Chassis MicroserviceQualifiedName,it's joined with microservice appId.SchemaID.methodName.**
+
+## How Configuration
+### Global Configuration
+Please add window time config in microservice.yaml:  
+```yaml 
+APPLICATION_ID: demo
+service_description:
+  name: demoService
+  version: 0.0.1
+
+servicecomb:
+  metrics:
+    #window time,same as servo.pollers,unit is millisecond
+    #support multi window time and use ',' split them,like 5000,10000
+    window_time: 5000,10000
+```
+
+*The setting of window time is very important to getting value of metrics,here is a comment show how it effect*
+
+![TimeWindowComment.png](/assets/images/TimeWindowComment.png)
+
+### Maven Configuration
+We just only need add metrics-core dependency:  
+```xml
+    <dependency>
+      <groupId>io.servicecomb</groupId>
+      <artifactId>metrics-core</artifactId>
+      <version>1.0.0-m1</version>
+    </dependency>
+```
+
+## Metrics Publish
+After configuration completed,you can get collected metrics data via this method:   
+### Embedded publish interface
+When microservice start-up,metrics-core will auto publish data service using Springmvc provider:  
+```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)
+  @CrossOrigin
+  @Override
+  public List<Long> getAppliedWindowTime() {
+    return dataSource.getAppliedWindowTime();
+  }
+
+  @RequestMapping(path = "/", method = RequestMethod.GET)
+  @CrossOrigin
+  @Override
+  public RegistryMetric metrics() {
+    return dataSource.getRegistryMetric();
+  }
+
+  @ApiResponses({
+      @ApiResponse(code = 400, response = String.class, message = "illegal request content"),
+  })
+  @RequestMapping(path = "/{windowTime}", method = RequestMethod.GET)
+  @CrossOrigin
+  @Override
+  public RegistryMetric metricsWithWindowTime(@PathVariable(name = "windowTime") long windowTime) {
+    return dataSource.getRegistryMetric(windowTime);
+  }
+}
+```
+So,if you had config rest provider in microservice.yaml,like:  
+```yaml
+cse:
+  service:
+    registry:
+      address: http://127.0.0.1:30100
+  rest:
+    address: 0.0.0.0:8080
+```
+You can open a browser and input http://localhost:8080/metrics direct get metrics data.  
+### Direct programming get
+From above code you can known,the interface of data provider bean is io.servicecomb.metrics.core.publish.DataSource,so if you want develop your own metrics publisher,autowired it is enough.
+```java
+@Autowired
+private DataSource dataSource;
+```
+
+## Other Reference 
+We had developed two use case for reference:  
+1. metrics-wirte-file:ouput metrics data into files,code is at metrics-extension;  
+2. metrics-prometheus:integration with prometheus,publish metrics as prometheus producer.
\ No newline at end of file
diff --git a/_users/metrics-integration-with-prometheus-in-1.0.0-m1.md b/_users/metrics-integration-with-prometheus-in-1.0.0-m1.md
new file mode 100644
index 0000000..10da41d
--- /dev/null
+++ b/_users/metrics-integration-with-prometheus-in-1.0.0-m1.md
@@ -0,0 +1,139 @@
+---
+title: "Metrics how integration with prometheus in 1.0.0-m1"
+lang: en
+ref: metrics
+permalink: /users/metrics-integration-with-prometheus-in-1.0.0-m1/
+excerpt: "Metrics how integration with prometheus in 1.0.0-m1"
+last_modified_at: 2018-1-2T10:01:43-04:00
+redirect_from:
+  - /theme-setup/
+---
+
+{% include toc %}
+Metrics had supported from Java chassis version 0.5.0,in version 1.0.0-m1,we had reconstruction it and add some more features,please checkout the user guide and [release note](https://github.com/apache/incubator-servicecomb-java-chassis/releases) for more information.Also subscribe ServiceComb mail-list(dev-subscribe@servicecomb.incubator.apache.org) and join discussion is welcome.
+
+## Background
+[Prometheus](http://www.prometheus.io/) is a opensource open-source monitoring solution like Google Borgmon,also member of [CNCF](https://www.cncf.io/),community is very active.Java chassis metrics support integration with prometheus in 1.0.0-m1,and can use [Grafana](https://grafana.com/) to query metrics data further.
+
+## Integration Principles
+We known Java chassis developed by Java,so we use Simple Client in  [prometheus java client](https://github.com/prometheus/client_java) as SDK,the version we use is 0.1.0.  
+Prometheus use pull mode collect metrics data,microservice act as producer,we use Simple HTTP Server(also in client java SDK) publish them;  
+As an integration(optional) module,the implementation code is in metrics-integration/metrics-prometheus,you can get it's dependency:  
+```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>
+```
+So if we import metrics-prometheus,no longer need to add metrics-core dependence.
+### Relation between metrics-core Publish
+[Metrics in 1.0.0-m1](/users/metrics-in-1.0.0-m1/) had already been mentioned,metrics-core will auto start up a embedded publish interface,so if you had configured rest provider in microservice.yaml like:
+```yaml
+cse:
+  service:
+    registry:
+      address: http://127.0.0.1:30100
+  rest:
+    address: 0.0.0.0:8080
+```
+You can direct get metrics data at http://localhost:8080/metrics ,it will return a entity of io.servicecomb.metrics.common.RegistryMetric,the output is:  
+```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}}
+}}
+```
+But use Prometheus Simple HTTP Server provider interface will publish the standard format which prometheus needed:
+```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
+```
+So they are two independent,different for use.   
+
+*Prometheus Simple HTTP Server also use /metrics as default URL,metrics-prometheus will use 9696 as default port,after microservice start up you can get metrics data at http://localhost:9696/metrics .*    
+The metrics name in prometheus we replace all dot with underline,because we must follow its [naming rules](https://prometheus.io/docs/practices/naming/).    
+
+## How Configuration
+Enable prometheus integration is very easy:
+### Global Configuration
+Please add prometheus port config in microservice.yaml:  
+```yaml 
+APPLICATION_ID: demo
+service_description:
+  name: demoService
+  version: 0.0.1
+
+servicecomb:
+  metrics:
+    prometheus:
+      #prometheus provider port
+      port: 9696
+```
+*If do not config,default value is 9696*
+### Maven Configuration
+We just only need add metrics-prometheus dependency:   
+```xml
+    <dependency>
+      <groupId>io.servicecomb</groupId>
+      <artifactId>metrics-prometheus</artifactId>
+      <version>1.0.0-m1</version>
+    </dependency>
+```
+### Config prometheus.yml in Prometheus
+You need add job in prometheus.yml,like:
+```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']
+```
+The job_name: 'servicecomb' is our custom job,it will collect metrics data from local microservice localhost:9696,more information about configuration of prometheus can found [here](https://prometheus.io/docs/prometheus/latest/configuration/configuration/).  
+
+### Config Grafana(optional)
+How add prometheus as a datasource in grafana can found [here](https://prometheus.io/docs/visualization/grafana/).  
+## Effect Show
+After complete prometheus config and start up microservice,we can open prometheus web site(default address is http://localhost:9090/),in metrics list java chassis metrics with prefix 'servicecomb' can be seen:
+![MetricsInPrometheus](/assets/images/MetricsInPrometheus.png)  
+
+For get more better data query experience,add prometheus as a datasource in grafana then query metrics data by it:  
+![MetricsInGrafana](/assets/images/MetricsInGrafana.png)  
\ No newline at end of file


 

----------------------------------------------------------------
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