You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by ni...@apache.org on 2017/12/22 06:20:17 UTC

[incubator-servicecomb-website] branch asf-site updated (d62a4fb -> 04d5843)

This is an automated email from the ASF dual-hosted git repository.

ningjiang pushed a change to branch asf-site
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-website.git.


    from d62a4fb  Update the site generate files
     add b852a3d  Try to fix the static logo page issue
     add ee56f79  added 6th live streaming materials
     add 29be0fd  Merge pull request #1 from eric-lee-ltk/6th-livestreaming
     add 687ff2e  updated metrics usage (#2)
     new 568e63e  Merge branch 'master' into asf-site
     new 04d5843  Publish the contents file

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 _pages/about-slides.md                             |   3 +
 _pages/cn/about-slides.md                          |   3 +
 _users/Metrics.md                                  | 146 ++++++++++-----
 _users/cn/Metrics.md                               | 142 ++++++++++----
 assets/images/MicroserviceArch.png                 | Bin 0 -> 133917 bytes
 assets/images/MonolithicArch.png                   | Bin 0 -> 112212 bytes
 assets/slides/20171221/data.consistency.live.pdf   | Bin 0 -> 4486355 bytes
 content/assets/images/MicroserviceArch.png         | Bin 0 -> 133917 bytes
 content/assets/images/MonolithicArch.png           | Bin 0 -> 112212 bytes
 .../slides/20171221/data.consistency.live.pdf      | Bin 0 -> 4486355 bytes
 content/cn/slides/index.html                       |   5 +
 content/cn/users/metrics/index.html                | 186 +++++++++++++++----
 content/feed.xml                                   |   2 +-
 content/sitemap.xml                                |   8 +-
 content/slides/index.html                          |   5 +
 content/users/metrics/index.html                   | 204 ++++++++++++++++-----
 16 files changed, 536 insertions(+), 168 deletions(-)
 create mode 100644 assets/images/MicroserviceArch.png
 create mode 100644 assets/images/MonolithicArch.png
 create mode 100644 assets/slides/20171221/data.consistency.live.pdf
 create mode 100644 content/assets/images/MicroserviceArch.png
 create mode 100644 content/assets/images/MonolithicArch.png
 create mode 100644 content/assets/slides/20171221/data.consistency.live.pdf

-- 
To stop receiving notification emails like this one, please contact
['"commits@servicecomb.apache.org" <co...@servicecomb.apache.org>'].

[incubator-servicecomb-website] 01/02: Merge branch 'master' into asf-site

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ningjiang pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-website.git

commit 568e63e03478c3ff62abdedc7853fc4e2a366066
Merge: d62a4fb 687ff2e
Author: Willem Jiang <ji...@huawei.com>
AuthorDate: Fri Dec 22 14:18:20 2017 +0800

    Merge branch 'master' into asf-site

 _pages/about-slides.md                           |   3 +
 _pages/cn/about-slides.md                        |   3 +
 _users/Metrics.md                                | 146 ++++++++++++++++-------
 _users/cn/Metrics.md                             | 142 +++++++++++++++-------
 assets/images/MicroserviceArch.png               | Bin 0 -> 133917 bytes
 assets/images/MonolithicArch.png                 | Bin 0 -> 112212 bytes
 assets/slides/20171221/data.consistency.live.pdf | Bin 0 -> 4486355 bytes
 7 files changed, 212 insertions(+), 82 deletions(-)

-- 
To stop receiving notification emails like this one, please contact
"commits@servicecomb.apache.org" <co...@servicecomb.apache.org>.

[incubator-servicecomb-website] 02/02: Publish the contents file

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ningjiang pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-website.git

commit 04d5843bb1898c8f5aa155e452f76aab128a006c
Author: Willem Jiang <ji...@huawei.com>
AuthorDate: Fri Dec 22 14:19:52 2017 +0800

    Publish the contents file
---
 content/assets/images/MicroserviceArch.png         | Bin 0 -> 133917 bytes
 content/assets/images/MonolithicArch.png           | Bin 0 -> 112212 bytes
 .../slides/20171221/data.consistency.live.pdf      | Bin 0 -> 4486355 bytes
 content/cn/slides/index.html                       |   5 +
 content/cn/users/metrics/index.html                | 186 +++++++++++++++----
 content/feed.xml                                   |   2 +-
 content/sitemap.xml                                |   8 +-
 content/slides/index.html                          |   5 +
 content/users/metrics/index.html                   | 204 ++++++++++++++++-----
 9 files changed, 324 insertions(+), 86 deletions(-)

diff --git a/content/assets/images/MicroserviceArch.png b/content/assets/images/MicroserviceArch.png
new file mode 100644
index 0000000..5890dd0
Binary files /dev/null and b/content/assets/images/MicroserviceArch.png differ
diff --git a/content/assets/images/MonolithicArch.png b/content/assets/images/MonolithicArch.png
new file mode 100644
index 0000000..6a695de
Binary files /dev/null and b/content/assets/images/MonolithicArch.png differ
diff --git a/content/assets/slides/20171221/data.consistency.live.pdf b/content/assets/slides/20171221/data.consistency.live.pdf
new file mode 100644
index 0000000..852467c
Binary files /dev/null and b/content/assets/slides/20171221/data.consistency.live.pdf differ
diff --git a/content/cn/slides/index.html b/content/cn/slides/index.html
index ab234b2..fb6579c 100644
--- a/content/cn/slides/index.html
+++ b/content/cn/slides/index.html
@@ -312,6 +312,11 @@
   <li><a href="/assets/slides/20171207/Uncover_ServiceComb_Design.pdf">ServiceComb设计揭秘</a></li>
 </ul>
 
+<h2 id="servicecomb-直播第六期-20171221"><a href="http://www.itdks.com/liveevent/detail/6624">ServiceComb 直播第六期</a>, 20171221</h2>
+<ul>
+  <li><a href="/assets/slides/20171221/data.consistency.live.pdf">ServiceComb的数据一致性</a></li>
+</ul>
+
         
       </section>
 
diff --git a/content/cn/users/metrics/index.html b/content/cn/users/metrics/index.html
index e0ec49f..643b18d 100644
--- a/content/cn/users/metrics/index.html
+++ b/content/cn/users/metrics/index.html
@@ -547,7 +547,7 @@
     <meta itemprop="headline" content="Metrics监控">
     <meta itemprop="description" content="Metrics监控">
     
-    <meta itemprop="dateModified" content="November 29, 2017">
+    <meta itemprop="dateModified" content="December 20, 2017">
 
     <div class="page__inner-wrap">
       
@@ -565,15 +565,102 @@
 <nav class="toc">
     <!-- <header><h4 class="nav__title"><i class="fa fa-file-text"></i> 在本页上</h4></header> -->
 <ul class="toc__menu" id="markdown-toc">
+  <li><a href="#背景" id="markdown-toc-背景">背景</a></li>
+  <li><a href="#原理" id="markdown-toc-原理">原理</a></li>
   <li><a href="#如何配置" id="markdown-toc-如何配置">如何配置</a></li>
   <li><a href="#注意事项" id="markdown-toc-注意事项">注意事项</a></li>
-  <li><a href="#文件输出" id="markdown-toc-文件输出">文件输出</a></li>
+  <li><a href="#配置示例" id="markdown-toc-配置示例">配置示例</a></li>
+  <li><a href="#输出效果" id="markdown-toc-输出效果">输出效果</a></li>
 </ul>
 
   </nav>
 </aside>
 
-<p>微服务框架从0.4.1版本开始支持监控功能Metrics,请注意这个功能还处于开发(Preview)阶段,请不要部署到生产环境,并且我们未来会做较大的调整,更多讨论会持续发布在<a href="https://groups.google.com/forum/#!forum/servicecomb-developers">Google Group</a>中。</p>
+<p>微服务框架从0.5.0版本开始支持监控功能Metrics,请注意这个功能还处于开发(Preview)阶段,并且我们未来会做较大的调整,更多讨论请订阅ServiceComb邮件列表(dev-subscribe@servicecomb.incubator.apache.org)。</p>
+
+<h2 id="背景">背景</h2>
+<p>将系统微服务化是技术潮流和趋势,但是它解决了很多问题的同时也带来了新的问题。</p>
+
+<p><img src="/assets/images/MonolithicArch.png" alt="MonolithicArch" /></p>
+
+<p>这是传统单体系统架构图,对运维人员友好,但是对开发人员不友好,系统维护升级困难。</p>
+
+<p><img src="/assets/images/MicroserviceArch.png" alt="MicroserviceArch" /></p>
+
+<p>这是微服务化后的系统架构图,经过功能切分,开发人员得到解脱,拥有了极致的CI/CD,但是运维人员却需要维护海量的微服务实例,所以如果不进行性能监控,就无法定位时延高的微服务,也无法制定弹性伸缩策略。</p>
+
+<h2 id="原理">原理</h2>
+<p>0.5.0版本的Metrics会在Java Chassis的Invocation中埋入计数器,也会使用Hystrix收集TPS和Latency,同时收集微服务实例的CPU使用率和内存使用量,最终通过输出日志的方式输出收集到的Metrics数据。<br />
+输入日志使用的是SLF4J作为日志框架,未与任何具体的日志框架绑定,我们会通过定向Logger名输出的方式将不同的Metrics输出为一个个独立的文件,因此需要在你的日志配置中添加对应的配置项,<a href="https://stackoverflow.com/questions/9652032/how-can-i-create-2-separate-log-files-with-one-log4j-config-file">这篇文章</a>详细说明了如果使用Log4j作为日志实现如何配置,而<a href="https://stackoverflow.com/questions/36643692/log4j2-multiple-appenders-the-same-output-is-written-to-multiple-files">这篇文章</a>则详细介绍了如果使用Log4j2作为日志需要如何配置。<br />
+Logger名指的是LoggerFactory.getLogger后的第一个参数:</p>
+<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="kd">static</span> <span class="kd">final</span> <span class="n">Logger</span> <span class="n">log</span> <span class="o">=</span> <span class="n">LoggerFactory</span><span class="o">.</span><span class="na">getLogger</span><span class="o">(</span><span class="s">"${Logger名}"</span><span class="o">);</span>
+</code></pre>
+</div>
+<p>以下是我们的定向Logger名以及输出的Metrics含义:</p>
+
+<table>
+  <thead>
+    <tr>
+      <th style="text-align: left">Logger名</th>
+      <th style="text-align: left">Metric含义</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <td style="text-align: left">averageServiceExecutionTime</td>
+      <td style="text-align: left">Producer端调用平均执行时间</td>
+    </tr>
+    <tr>
+      <td style="text-align: left">averageTimeInQueue</td>
+      <td style="text-align: left">Producer端调用在队列中的平均时间</td>
+    </tr>
+    <tr>
+      <td style="text-align: left">countInQueue</td>
+      <td style="text-align: left">Producer端在队列中等待的调用的数量</td>
+    </tr>
+    <tr>
+      <td style="text-align: left">cpuLoad</td>
+      <td style="text-align: left">实例CPU使用率</td>
+    </tr>
+    <tr>
+      <td style="text-align: left">heapCommit,heapInit,heapMax,heapUsed</td>
+      <td style="text-align: left">内存Heap使用状况</td>
+    </tr>
+    <tr>
+      <td style="text-align: left">nonHeapCommit,nonHeapInit,nonHeapMax,nonHeapUsed</td>
+      <td style="text-align: left">内存NonHeap使用状况</td>
+    </tr>
+    <tr>
+      <td style="text-align: left">latency</td>
+      <td style="text-align: left">调用平均时延</td>
+    </tr>
+    <tr>
+      <td style="text-align: left">maxLifeTimeInQueue</td>
+      <td style="text-align: left">Producer端调用在队列中最大等待时间</td>
+    </tr>
+    <tr>
+      <td style="text-align: left">minLifeTimeInQueue</td>
+      <td style="text-align: left">Producer端调用在队列中最小等待时间</td>
+    </tr>
+    <tr>
+      <td style="text-align: left">totalRequestsPerProvider</td>
+      <td style="text-align: left">Producer总请求数</td>
+    </tr>
+    <tr>
+      <td style="text-align: left">totalRequestsPerConsumer</td>
+      <td style="text-align: left">Consumer总请求数</td>
+    </tr>
+    <tr>
+      <td style="text-align: left">totalFailedRequestsPerProvider</td>
+      <td style="text-align: left">Producer失败总请求数</td>
+    </tr>
+    <tr>
+      <td style="text-align: left">totalFailRequestsPerConsumer</td>
+      <td style="text-align: left">Consumer失败总请求数</td>
+    </tr>
+  </tbody>
+</table>
+
 <h2 id="如何配置">如何配置</h2>
 <p>请在microservice.yaml中添加如下配置项:</p>
 <div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">APPLICATION_ID</span><span class="pi">:</span> <span class="s">demo</span>
@@ -590,51 +677,76 @@
     <span class="s">file</span><span class="pi">:</span>
       <span class="c1">#是否启用文件输出</span>
       <span class="s">enabled</span><span class="pi">:</span> <span class="s">true</span>
-      <span class="c1">#输出文件的根目录</span>
-      <span class="s">root_path</span><span class="pi">:</span> <span class="s">D:/Temp</span>
-      <span class="c1">#metrics文件的前缀</span>
-      <span class="s">name_prefix</span><span class="pi">:</span> <span class="s">demo.demoService</span>
-      <span class="c1">#metrics文件Rolling最大大小,默认10MB,例如10KB,10MB,10GB</span>
-      <span class="s">max_rolling_size</span><span class="pi">:</span> <span class="s">10MB</span>
-      <span class="c1">#metrics文件Rolling文件保存数量,默认10个</span>
-      <span class="s">max_rolling_count</span><span class="pi">:</span> <span class="s">10</span>
+      <span class="c1">#会体现为输出内容中的plugin_id</span>
+      <span class="s">name_prefix</span><span class="pi">:</span> <span class="s">bmi.calculator</span>
 </code></pre>
 </div>
 
 <h2 id="注意事项">注意事项</h2>
 <ul>
-  <li>如果使用ServiceComb Spring Boot Start快速构建项目,需要排除log4j-over-slf4j依赖
-    <div class="language-xml highlighter-rouge"><pre class="highlight"><code> <span class="nt">&lt;dependency&gt;</span>
-   <span class="nt">&lt;groupId&gt;</span>org.springframework.boot<span class="nt">&lt;/groupId&gt;</span>
-   <span class="nt">&lt;artifactId&gt;</span>spring-boot-starter<span class="nt">&lt;/artifactId&gt;</span>
-   <span class="c">&lt;!--Metric使用log4j输出,屏蔽掉spring-boot-starter中的log4j-over-slf4j--&gt;</span>
-   <span class="nt">&lt;exclusions&gt;</span>
-     <span class="nt">&lt;exclusion&gt;</span>
-       <span class="nt">&lt;groupId&gt;</span>org.slf4j<span class="nt">&lt;/groupId&gt;</span>
-       <span class="nt">&lt;artifactId&gt;</span>log4j-over-slf4j<span class="nt">&lt;/artifactId&gt;</span>
-     <span class="nt">&lt;/exclusion&gt;</span>
-   <span class="nt">&lt;/exclusions&gt;</span>
- <span class="nt">&lt;/dependency&gt;</span>
-</code></pre>
-    </div>
-  </li>
   <li>需要在provider治理链中添加bizkeeper-provider,否则TPS和Latency无数据
-    <div class="language-yaml highlighter-rouge"><pre class="highlight"><code> <span class="s">APPLICATION_ID</span><span class="pi">:</span> <span class="s">demo</span>
- <span class="s">service_description</span><span class="pi">:</span>
-   <span class="s">name</span><span class="pi">:</span> <span class="s">demoService</span>
-   <span class="s">version</span><span class="pi">:</span> <span class="s">0.0.1</span>
- <span class="s">cse</span><span class="pi">:</span>
-   <span class="s">handler</span><span class="pi">:</span>
-     <span class="s">chain</span><span class="pi">:</span>
-       <span class="s">Provider</span><span class="pi">:</span>
-         <span class="s">default</span><span class="pi">:</span> <span class="s">bizkeeper-provider</span>
+    <div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">APPLICATION_ID</span><span class="pi">:</span> <span class="s">demo</span>
+<span class="s">service_description</span><span class="pi">:</span>
+ <span class="s">name</span><span class="pi">:</span> <span class="s">demoService</span>
+ <span class="s">version</span><span class="pi">:</span> <span class="s">0.0.1</span>
+<span class="s">cse</span><span class="pi">:</span>
+ <span class="s">handler</span><span class="pi">:</span>
+ <span class="s">chain</span><span class="pi">:</span>
+   <span class="s">Provider</span><span class="pi">:</span>
+     <span class="s">default</span><span class="pi">:</span> <span class="s">bizkeeper-provider</span>
 </code></pre>
     </div>
   </li>
 </ul>
 
-<h2 id="文件输出">文件输出</h2>
-<p>每一个文件就是一个微服务示例级别的metrics数据输出:</p>
+<h2 id="配置示例">配置示例</h2>
+
+<p>以设置averageServiceExecutionTime为例,如果是Log4j,配置如下:</p>
+<div class="language-properties highlighter-rouge"><pre class="highlight"><code><span class="c">#指定Logger名为averageServiceExecutionTime
+</span><span class="py">log4j.category.averageServiceExecutionTime</span><span class="p">=</span><span class="s">ERROR, averageServiceExecutionTimeLogger</span>
+<span class="c">#定向日志,不扩散到别的Logger中
+</span><span class="py">log4j.additivity.averageServiceExecutionTime</span><span class="p">=</span><span class="s">false</span>
+<span class="c">#使用RollingFileAppender
+</span><span class="py">log4j.appender.averageServiceExecutionTimeLogger</span><span class="p">=</span><span class="s">org.apache.log4j.RollingFileAppender</span>
+<span class="py">log4j.appender.averageServiceExecutionTimeLogger.File</span><span class="p">=</span><span class="s">/target/averageServiceExecutionTime.log</span>
+<span class="py">log4j.appender.averageServiceExecutionTimeLogger.MaxFileSize</span><span class="p">=</span><span class="s">10MB</span>
+<span class="py">log4j.appender.averageServiceExecutionTimeLogger.MaxBackupIndex</span><span class="p">=</span><span class="s">10</span>
+<span class="py">log4j.appender.averageServiceExecutionTimeLogger.layout</span><span class="p">=</span><span class="s">org.apache.log4j.PatternLayout</span>
+<span class="py">log4j.appender.averageServiceExecutionTimeLogger.layout.ConversionPattern</span><span class="p">=</span><span class="s">%m%n</span>
+<span class="py">log4j.appender.averageServiceExecutionTimeLogger.append</span><span class="p">=</span><span class="s">true</span>
+</code></pre>
+</div>
+
+<p>如果是Log4j2,配置如下:</p>
+<div class="language-xml highlighter-rouge"><pre class="highlight"><code><span class="c">&lt;!--Log4j2配置支持全局配置--&gt;</span>
+<span class="nt">&lt;Properties&gt;</span>
+  <span class="nt">&lt;Property</span> <span class="na">name=</span><span class="s">"maxFileSize"</span><span class="nt">&gt;</span>10MB<span class="nt">&lt;/Property&gt;</span>
+  <span class="nt">&lt;Property</span> <span class="na">name=</span><span class="s">"maxFileCount"</span><span class="nt">&gt;</span>10<span class="nt">&lt;/Property&gt;</span>
+  <span class="nt">&lt;Property</span> <span class="na">name=</span><span class="s">"filePath"</span><span class="nt">&gt;</span>/target<span class="nt">&lt;/Property&gt;</span>
+  <span class="nt">&lt;Property</span> <span class="na">name=</span><span class="s">"filePrefix"</span><span class="nt">&gt;</span>bmi.calculator<span class="nt">&lt;/Property&gt;</span>
+<span class="nt">&lt;/Properties&gt;</span>
+
+<span class="nt">&lt;Appenders&gt;</span>
+  <span class="nt">&lt;RollingFile</span> <span class="na">name=</span><span class="s">"averageServiceExecutionTime"</span> <span class="na">fileName=</span><span class="s">"${filePath}${filePrefix}.averageServiceExecutionTime.dat"</span>
+    <span class="na">filePattern=</span><span class="s">"${filePath}${filePrefix}.averageServiceExecutionTime-%i.dat"</span><span class="nt">&gt;</span>
+    <span class="nt">&lt;PatternLayout</span> <span class="na">pattern=</span><span class="s">"%m%n"</span><span class="nt">/&gt;</span>
+    <span class="nt">&lt;SizeBasedTriggeringPolicy</span> <span class="na">size=</span><span class="s">"${maxFileSize}"</span><span class="nt">/&gt;</span>
+    <span class="nt">&lt;DefaultRolloverStrategy</span> <span class="na">max=</span><span class="s">"${maxFileCount}"</span><span class="nt">/&gt;</span>
+  <span class="nt">&lt;/RollingFile&gt;</span>
+<span class="nt">&lt;/Appenders&gt;</span>
+
+<span class="nt">&lt;Loggers&gt;</span>
+  <span class="nt">&lt;Logger</span> <span class="na">name=</span><span class="s">"averageServiceExecutionTime"</span> <span class="na">level=</span><span class="s">"error"</span> <span class="na">additivity=</span><span class="s">"false"</span><span class="nt">&gt;</span>
+    <span class="nt">&lt;AppenderRef</span> <span class="na">ref=</span><span class="s">"averageServiceExecutionTime"</span><span class="nt">/&gt;</span>
+  <span class="nt">&lt;/Logger&gt;</span>
+<span class="nt">&lt;/Loggers&gt;</span>
+</code></pre>
+</div>
+
+<p>剩余Metric(参见原理章节中的表格)按照上面的例子重复替换即可。</p>
+
+<h2 id="输出效果">输出效果</h2>
+<p>每一个文件就是一个微服务示例级别的metrics数据输出,0.5.0版本还不支持Operation级别的Metrics输出:</p>
 
 <p><img src="/assets/images/metrics-output.png" alt="Metrics图片" /></p>
 
diff --git a/content/feed.xml b/content/feed.xml
index 4184a57..a40b333 100644
--- a/content/feed.xml
+++ b/content/feed.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.4.3">Jekyll</generator><link href="/feed.xml" rel="self" type="application/atom+xml" /><link href="/" rel="alternate" type="text/html" /><updated>2017-12-20T17:11:38+08:00</updated><id>/</id><title type="html">Apache incubator ServiceComb</title><subtitle>The homepage of ServiceComb</subtitle><author><name>{&quot;name&quot;=&gt;nil, &quot;avatar&quot;=&gt;&qu [...]
+<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.4.3">Jekyll</generator><link href="/feed.xml" rel="self" type="application/atom+xml" /><link href="/" rel="alternate" type="text/html" /><updated>2017-12-22T14:18:40+08:00</updated><id>/</id><title type="html">Apache incubator ServiceComb</title><subtitle>The homepage of ServiceComb</subtitle><author><name>{&quot;name&quot;=&gt;nil, &quot;avatar&quot;=&gt;&qu [...]
 
 &lt;p&gt;The architecture of the &lt;code class=&quot;highlighter-rouge&quot;&gt;service registry&lt;/code&gt; module in Java Chassis is as follows.&lt;/p&gt;
 
diff --git a/content/sitemap.xml b/content/sitemap.xml
index 2eb22e6..6941b8c 100644
--- a/content/sitemap.xml
+++ b/content/sitemap.xml
@@ -138,11 +138,11 @@
 </url>
 <url>
 <loc>/cn/users/metrics/</loc>
-<lastmod>2017-11-29T22:01:43+08:00</lastmod>
+<lastmod>2017-12-20T22:01:43+08:00</lastmod>
 </url>
 <url>
 <loc>/users/metrics/</loc>
-<lastmod>2017-11-29T22:01:43+08:00</lastmod>
+<lastmod>2017-12-20T22:01:43+08:00</lastmod>
 </url>
 <url>
 <loc>/cn/slides/</loc>
@@ -509,4 +509,8 @@
 <loc>/assets/slides/20171209/PracticeOfServiceMeshOnHuaweiPublicCloud.pdf</loc>
 <lastmod>2017-12-10T20:49:56+08:00</lastmod>
 </url>
+<url>
+<loc>/assets/slides/20171221/data.consistency.live.pdf</loc>
+<lastmod>2017-12-22T14:18:20+08:00</lastmod>
+</url>
 </urlset>
diff --git a/content/slides/index.html b/content/slides/index.html
index 18fd260..5c4b55e 100644
--- a/content/slides/index.html
+++ b/content/slides/index.html
@@ -311,6 +311,11 @@
   <li><a href="/assets/slides/20171207/Uncover_ServiceComb_Design.pdf">Uncover ServiceComb Design</a></li>
 </ul>
 
+<h2 id="servicecomb-live-streaming-phase-vi-20171221"><a href="http://www.itdks.com/liveevent/detail/6624">ServiceComb live streaming phase VI</a>, 20171221</h2>
+<ul>
+  <li><a href="/assets/slides/20171221/data.consistency.live.pdf">ServiceComb's Data Consistency Solution</a></li>
+</ul>
+
         
       </section>
 
diff --git a/content/users/metrics/index.html b/content/users/metrics/index.html
index 981f19b..259fab9 100644
--- a/content/users/metrics/index.html
+++ b/content/users/metrics/index.html
@@ -19,12 +19,12 @@
 
 
 
-<title>Metrics Monitor - Apache incubator ServiceComb</title>
+<title>Metrics Monitor in 0.5.0 - Apache incubator ServiceComb</title>
 
 
 
 
-<meta name="description" content="Metrics Monitor">
+<meta name="description" content="Metrics Monitor in 0.5.0">
 
 
 
@@ -33,7 +33,7 @@
 
 <meta property="og:locale" content="en">
 <meta property="og:site_name" content="Apache incubator ServiceComb">
-<meta property="og:title" content="Metrics Monitor">
+<meta property="og:title" content="Metrics Monitor in 0.5.0">
 
 
   <link rel="canonical" href="http://github.com/pages/ServiceComb/servicesomb.github.io/users/metrics/">
@@ -41,13 +41,13 @@
 
 
 
-  <meta property="og:description" content="Metrics Monitor">
+  <meta property="og:description" content="Metrics Monitor in 0.5.0">
 
 
 
   <meta name="twitter:site" content="@ServiceComb">
-  <meta name="twitter:title" content="Metrics Monitor">
-  <meta name="twitter:description" content="Metrics Monitor">
+  <meta name="twitter:title" content="Metrics Monitor in 0.5.0">
+  <meta name="twitter:description" content="Metrics Monitor in 0.5.0">
   <meta name="twitter:url" content="">
 
   
@@ -543,16 +543,16 @@
 
 
   <article class="page" itemscope itemtype="http://schema.org/CreativeWork">
-    <meta itemprop="headline" content="Metrics Monitor">
-    <meta itemprop="description" content="Metrics Monitor">
+    <meta itemprop="headline" content="Metrics Monitor in 0.5.0">
+    <meta itemprop="description" content="Metrics Monitor in 0.5.0">
     
-    <meta itemprop="dateModified" content="November 29, 2017">
+    <meta itemprop="dateModified" content="December 20, 2017">
 
     <div class="page__inner-wrap">
       
         
           <header>
-            <h1 class="page__title" itemprop="headline">Metrics Monitor
+            <h1 class="page__title" itemprop="headline">Metrics Monitor in 0.5.0
 </h1>
             
           </header>
@@ -564,15 +564,102 @@
 <nav class="toc">
     <!-- <header><h4 class="nav__title"><i class="fa fa-file-text"></i> On This Page</h4></header> -->
 <ul class="toc__menu" id="markdown-toc">
+  <li><a href="#背景" id="markdown-toc-背景">背景</a></li>
+  <li><a href="#原理" id="markdown-toc-原理">原理</a></li>
   <li><a href="#如何配置" id="markdown-toc-如何配置">如何配置</a></li>
   <li><a href="#注意事项" id="markdown-toc-注意事项">注意事项</a></li>
-  <li><a href="#文件输出" id="markdown-toc-文件输出">文件输出</a></li>
+  <li><a href="#配置示例" id="markdown-toc-配置示例">配置示例</a></li>
+  <li><a href="#输出效果" id="markdown-toc-输出效果">输出效果</a></li>
 </ul>
 
   </nav>
 </aside>
 
-<p>微服务框架从0.4.1版本开始支持监控功能Metrics,请注意这个功能还处于开发(Preview)阶段,请不要部署到生产环境,并且我们未来会做较大的调整,更多讨论会持续发布在<a href="https://groups.google.com/forum/#!forum/servicecomb-developers">Google Group</a>中。</p>
+<p>微服务框架从0.5.0版本开始支持监控功能Metrics,请注意这个功能还处于开发(Preview)阶段,并且我们未来会做较大的调整,更多讨论请订阅ServiceComb邮件列表(dev-subscribe@servicecomb.incubator.apache.org)。</p>
+
+<h2 id="背景">背景</h2>
+<p>将系统微服务化是技术潮流和趋势,但是它解决了很多问题的同时也带来了新的问题。</p>
+
+<p><img src="/assets/images/MonolithicArch.png" alt="MonolithicArch" /></p>
+
+<p>这是传统单体系统架构图,对运维人员友好,但是对开发人员不友好,系统维护升级困难。</p>
+
+<p><img src="/assets/images/MicroserviceArch.png" alt="MicroserviceArch" /></p>
+
+<p>这是微服务化后的系统架构图,经过功能切分,开发人员得到解脱,拥有了极致的CI/CD,但是运维人员却需要维护海量的微服务实例,所以如果不进行性能监控,就无法定位时延高的微服务,也无法制定弹性伸缩策略。</p>
+
+<h2 id="原理">原理</h2>
+<p>0.5.0版本的Metrics会在Java Chassis的Invocation中埋入计数器,也会使用Hystrix收集TPS和Latency,同时收集微服务实例的CPU使用率和内存使用量,最终通过输出日志的方式输出收集到的Metrics数据。<br />
+输入日志使用的是SLF4J作为日志框架,未与任何具体的日志框架绑定,我们会通过定向Logger名输出的方式将不同的Metrics输出为一个个独立的文件,因此需要在你的日志配置中添加对应的配置项,<a href="https://stackoverflow.com/questions/9652032/how-can-i-create-2-separate-log-files-with-one-log4j-config-file">这篇文章</a>详细说明了如果使用Log4j作为日志实现如何配置,而<a href="https://stackoverflow.com/questions/36643692/log4j2-multiple-appenders-the-same-output-is-written-to-multiple-files">这篇文章</a>则详细介绍了如果使用Log4j2作为日志需要如何配置。<br />
+Logger名指的是LoggerFactory.getLogger后的第一个参数:</p>
+<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="kd">static</span> <span class="kd">final</span> <span class="n">Logger</span> <span class="n">log</span> <span class="o">=</span> <span class="n">LoggerFactory</span><span class="o">.</span><span class="na">getLogger</span><span class="o">(</span><span class="s">"${Logger名}"</span><span class="o">);</span>
+</code></pre>
+</div>
+<p>以下是我们的定向Logger名以及输出的Metrics含义:</p>
+
+<table>
+  <thead>
+    <tr>
+      <th style="text-align: left">Logger名</th>
+      <th style="text-align: left">Metric含义</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <td style="text-align: left">averageServiceExecutionTime</td>
+      <td style="text-align: left">Producer端调用平均执行时间</td>
+    </tr>
+    <tr>
+      <td style="text-align: left">averageTimeInQueue</td>
+      <td style="text-align: left">Producer端调用在队列中的平均时间</td>
+    </tr>
+    <tr>
+      <td style="text-align: left">countInQueue</td>
+      <td style="text-align: left">Producer端在队列中等待的调用的数量</td>
+    </tr>
+    <tr>
+      <td style="text-align: left">cpuLoad</td>
+      <td style="text-align: left">实例CPU使用率</td>
+    </tr>
+    <tr>
+      <td style="text-align: left">heapCommit,heapInit,heapMax,heapUsed</td>
+      <td style="text-align: left">内存Heap使用状况</td>
+    </tr>
+    <tr>
+      <td style="text-align: left">nonHeapCommit,nonHeapInit,nonHeapMax,nonHeapUsed</td>
+      <td style="text-align: left">内存NonHeap使用状况</td>
+    </tr>
+    <tr>
+      <td style="text-align: left">latency</td>
+      <td style="text-align: left">调用平均时延</td>
+    </tr>
+    <tr>
+      <td style="text-align: left">maxLifeTimeInQueue</td>
+      <td style="text-align: left">Producer端调用在队列中最大等待时间</td>
+    </tr>
+    <tr>
+      <td style="text-align: left">minLifeTimeInQueue</td>
+      <td style="text-align: left">Producer端调用在队列中最小等待时间</td>
+    </tr>
+    <tr>
+      <td style="text-align: left">totalRequestsPerProvider</td>
+      <td style="text-align: left">Producer总请求数</td>
+    </tr>
+    <tr>
+      <td style="text-align: left">totalRequestsPerConsumer</td>
+      <td style="text-align: left">Consumer总请求数</td>
+    </tr>
+    <tr>
+      <td style="text-align: left">totalFailedRequestsPerProvider</td>
+      <td style="text-align: left">Producer失败总请求数</td>
+    </tr>
+    <tr>
+      <td style="text-align: left">totalFailRequestsPerConsumer</td>
+      <td style="text-align: left">Consumer失败总请求数</td>
+    </tr>
+  </tbody>
+</table>
+
 <h2 id="如何配置">如何配置</h2>
 <p>请在microservice.yaml中添加如下配置项:</p>
 <div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">APPLICATION_ID</span><span class="pi">:</span> <span class="s">demo</span>
@@ -589,51 +676,76 @@
     <span class="s">file</span><span class="pi">:</span>
       <span class="c1">#是否启用文件输出</span>
       <span class="s">enabled</span><span class="pi">:</span> <span class="s">true</span>
-      <span class="c1">#输出文件的根目录</span>
-      <span class="s">root_path</span><span class="pi">:</span> <span class="s">D:/Temp</span>
-      <span class="c1">#metrics文件的前缀</span>
-      <span class="s">name_prefix</span><span class="pi">:</span> <span class="s">demo.demoService</span>
-      <span class="c1">#metrics文件Rolling最大大小,默认10MB,例如10KB,10MB,10GB</span>
-      <span class="s">max_rolling_size</span><span class="pi">:</span> <span class="s">10MB</span>
-      <span class="c1">#metrics文件Rolling文件保存数量,默认10个</span>
-      <span class="s">max_rolling_count</span><span class="pi">:</span> <span class="s">10</span>
+      <span class="c1">#会体现为输出内容中的plugin_id</span>
+      <span class="s">name_prefix</span><span class="pi">:</span> <span class="s">bmi.calculator</span>
 </code></pre>
 </div>
 
 <h2 id="注意事项">注意事项</h2>
 <ul>
-  <li>如果使用ServiceComb Spring Boot Start快速构建项目,需要排除log4j-over-slf4j依赖
-    <div class="language-xml highlighter-rouge"><pre class="highlight"><code> <span class="nt">&lt;dependency&gt;</span>
-   <span class="nt">&lt;groupId&gt;</span>org.springframework.boot<span class="nt">&lt;/groupId&gt;</span>
-   <span class="nt">&lt;artifactId&gt;</span>spring-boot-starter<span class="nt">&lt;/artifactId&gt;</span>
-   <span class="c">&lt;!--Metric使用log4j输出,屏蔽掉spring-boot-starter中的log4j-over-slf4j--&gt;</span>
-   <span class="nt">&lt;exclusions&gt;</span>
-     <span class="nt">&lt;exclusion&gt;</span>
-       <span class="nt">&lt;groupId&gt;</span>org.slf4j<span class="nt">&lt;/groupId&gt;</span>
-       <span class="nt">&lt;artifactId&gt;</span>log4j-over-slf4j<span class="nt">&lt;/artifactId&gt;</span>
-     <span class="nt">&lt;/exclusion&gt;</span>
-   <span class="nt">&lt;/exclusions&gt;</span>
- <span class="nt">&lt;/dependency&gt;</span>
-</code></pre>
-    </div>
-  </li>
   <li>需要在provider治理链中添加bizkeeper-provider,否则TPS和Latency无数据
-    <div class="language-yaml highlighter-rouge"><pre class="highlight"><code> <span class="s">APPLICATION_ID</span><span class="pi">:</span> <span class="s">demo</span>
- <span class="s">service_description</span><span class="pi">:</span>
-   <span class="s">name</span><span class="pi">:</span> <span class="s">demoService</span>
-   <span class="s">version</span><span class="pi">:</span> <span class="s">0.0.1</span>
- <span class="s">cse</span><span class="pi">:</span>
-   <span class="s">handler</span><span class="pi">:</span>
-     <span class="s">chain</span><span class="pi">:</span>
-       <span class="s">Provider</span><span class="pi">:</span>
-         <span class="s">default</span><span class="pi">:</span> <span class="s">bizkeeper-provider</span>
+    <div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">APPLICATION_ID</span><span class="pi">:</span> <span class="s">demo</span>
+<span class="s">service_description</span><span class="pi">:</span>
+ <span class="s">name</span><span class="pi">:</span> <span class="s">demoService</span>
+ <span class="s">version</span><span class="pi">:</span> <span class="s">0.0.1</span>
+<span class="s">cse</span><span class="pi">:</span>
+ <span class="s">handler</span><span class="pi">:</span>
+ <span class="s">chain</span><span class="pi">:</span>
+   <span class="s">Provider</span><span class="pi">:</span>
+     <span class="s">default</span><span class="pi">:</span> <span class="s">bizkeeper-provider</span>
 </code></pre>
     </div>
   </li>
 </ul>
 
-<h2 id="文件输出">文件输出</h2>
-<p>每一个文件就是一个微服务示例级别的metrics数据输出:</p>
+<h2 id="配置示例">配置示例</h2>
+
+<p>以设置averageServiceExecutionTime为例,如果是Log4j,配置如下:</p>
+<div class="language-properties highlighter-rouge"><pre class="highlight"><code><span class="c">#指定Logger名为averageServiceExecutionTime
+</span><span class="py">log4j.category.averageServiceExecutionTime</span><span class="p">=</span><span class="s">ERROR, averageServiceExecutionTimeLogger</span>
+<span class="c">#定向日志,不扩散到别的Logger中
+</span><span class="py">log4j.additivity.averageServiceExecutionTime</span><span class="p">=</span><span class="s">false</span>
+<span class="c">#使用RollingFileAppender
+</span><span class="py">log4j.appender.averageServiceExecutionTimeLogger</span><span class="p">=</span><span class="s">org.apache.log4j.RollingFileAppender</span>
+<span class="py">log4j.appender.averageServiceExecutionTimeLogger.File</span><span class="p">=</span><span class="s">/target/averageServiceExecutionTime.log</span>
+<span class="py">log4j.appender.averageServiceExecutionTimeLogger.MaxFileSize</span><span class="p">=</span><span class="s">10MB</span>
+<span class="py">log4j.appender.averageServiceExecutionTimeLogger.MaxBackupIndex</span><span class="p">=</span><span class="s">10</span>
+<span class="py">log4j.appender.averageServiceExecutionTimeLogger.layout</span><span class="p">=</span><span class="s">org.apache.log4j.PatternLayout</span>
+<span class="py">log4j.appender.averageServiceExecutionTimeLogger.layout.ConversionPattern</span><span class="p">=</span><span class="s">%m%n</span>
+<span class="py">log4j.appender.averageServiceExecutionTimeLogger.append</span><span class="p">=</span><span class="s">true</span>
+</code></pre>
+</div>
+
+<p>如果是Log4j2,配置如下:</p>
+<div class="language-xml highlighter-rouge"><pre class="highlight"><code><span class="c">&lt;!--Log4j2配置支持全局配置--&gt;</span>
+<span class="nt">&lt;Properties&gt;</span>
+  <span class="nt">&lt;Property</span> <span class="na">name=</span><span class="s">"maxFileSize"</span><span class="nt">&gt;</span>10MB<span class="nt">&lt;/Property&gt;</span>
+  <span class="nt">&lt;Property</span> <span class="na">name=</span><span class="s">"maxFileCount"</span><span class="nt">&gt;</span>10<span class="nt">&lt;/Property&gt;</span>
+  <span class="nt">&lt;Property</span> <span class="na">name=</span><span class="s">"filePath"</span><span class="nt">&gt;</span>/target<span class="nt">&lt;/Property&gt;</span>
+  <span class="nt">&lt;Property</span> <span class="na">name=</span><span class="s">"filePrefix"</span><span class="nt">&gt;</span>bmi.calculator<span class="nt">&lt;/Property&gt;</span>
+<span class="nt">&lt;/Properties&gt;</span>
+
+<span class="nt">&lt;Appenders&gt;</span>
+  <span class="nt">&lt;RollingFile</span> <span class="na">name=</span><span class="s">"averageServiceExecutionTime"</span> <span class="na">fileName=</span><span class="s">"${filePath}${filePrefix}.averageServiceExecutionTime.dat"</span>
+    <span class="na">filePattern=</span><span class="s">"${filePath}${filePrefix}.averageServiceExecutionTime-%i.dat"</span><span class="nt">&gt;</span>
+    <span class="nt">&lt;PatternLayout</span> <span class="na">pattern=</span><span class="s">"%m%n"</span><span class="nt">/&gt;</span>
+    <span class="nt">&lt;SizeBasedTriggeringPolicy</span> <span class="na">size=</span><span class="s">"${maxFileSize}"</span><span class="nt">/&gt;</span>
+    <span class="nt">&lt;DefaultRolloverStrategy</span> <span class="na">max=</span><span class="s">"${maxFileCount}"</span><span class="nt">/&gt;</span>
+  <span class="nt">&lt;/RollingFile&gt;</span>
+<span class="nt">&lt;/Appenders&gt;</span>
+
+<span class="nt">&lt;Loggers&gt;</span>
+  <span class="nt">&lt;Logger</span> <span class="na">name=</span><span class="s">"averageServiceExecutionTime"</span> <span class="na">level=</span><span class="s">"error"</span> <span class="na">additivity=</span><span class="s">"false"</span><span class="nt">&gt;</span>
+    <span class="nt">&lt;AppenderRef</span> <span class="na">ref=</span><span class="s">"averageServiceExecutionTime"</span><span class="nt">/&gt;</span>
+  <span class="nt">&lt;/Logger&gt;</span>
+<span class="nt">&lt;/Loggers&gt;</span>
+</code></pre>
+</div>
+
+<p>剩余Metric(参见原理章节中的表格)按照上面的例子重复替换即可。</p>
+
+<h2 id="输出效果">输出效果</h2>
+<p>每一个文件就是一个微服务示例级别的metrics数据输出,0.5.0版本还不支持Operation级别的Metrics输出:</p>
 
 <p><img src="/assets/images/metrics-output.png" alt="Metrics图片" /></p>
 

-- 
To stop receiving notification emails like this one, please contact
"commits@servicecomb.apache.org" <co...@servicecomb.apache.org>.