| <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Apache Dubbo – QOS 操作手册</title><link>https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/qos/</link><description>Recent content in QOS 操作手册 on Apache Dubbo</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><atom:link href="https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/qos/index.xml" rel="self" type="application/rss+xml"/><item><title>Overview: QOS 概述</title><link>https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/qos/overview/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/qos/overview/</guid><description> |
| <h2 id="参数说明">参数说明</h2> |
| <p>QoS 提供了一些启动参数,来对启动进行配置,他们主要包括:</p> |
| <table> |
| <thead> |
| <tr> |
| <th>参数</th> |
| <th>说明</th> |
| <th>默认值</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td>qos-enable</td> |
| <td>是否启动QoS</td> |
| <td>true</td> |
| </tr> |
| <tr> |
| <td>qos-port</td> |
| <td>启动QoS绑定的端口</td> |
| <td>22222</td> |
| </tr> |
| <tr> |
| <td>qos-accept-foreign-ip</td> |
| <td>是否允许远程访问</td> |
| <td>false</td> |
| </tr> |
| <tr> |
| <td>qos-accept-foreign-ip-whitelist</td> |
| <td>支持的远端主机ip地址(段)</td> |
| <td>(无)</td> |
| </tr> |
| <tr> |
| <td>qos-anonymous-access-permission-level</td> |
| <td>支持的匿名访问的权限级别</td> |
| <td>PUBLIC(1)</td> |
| </tr> |
| </tbody> |
| </table> |
| <blockquote> |
| <p>注意,从2.6.4/2.7.0开始,qos-accept-foreign-ip默认配置改为false,如果qos-accept-foreign-ip设置为true,有可能带来安全风险,请仔细评估后再打开。</p> |
| </blockquote> |
| <h2 id="协议">协议</h2> |
| <h3 id="telnet-与-http-协议">telnet 与 http 协议</h3> |
| <p>telnet 模块现在同时支持 http 协议和 telnet 协议,方便各种情况的使用 |
| 示例:</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>➜ ~ telnet localhost 22222 |
| </span></span><span style="display:flex;"><span>Trying ::1... |
| </span></span><span style="display:flex;"><span>telnet: connect to address ::1: Connection refused |
| </span></span><span style="display:flex;"><span>Trying 127.0.0.1... |
| </span></span><span style="display:flex;"><span>Connected to localhost. |
| </span></span><span style="display:flex;"><span>Escape character is &#39;^]&#39;. |
| </span></span><span style="display:flex;"><span> ████████▄ ███ █▄ ▀█████████▄ ▀█████████▄ ▄██████▄ |
| </span></span><span style="display:flex;"><span> ███ ▀███ ███ ███ ███ ███ ███ ███ ███ ███ |
| </span></span><span style="display:flex;"><span> ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ |
| </span></span><span style="display:flex;"><span> ███ ███ ███ ███ ▄███▄▄▄██▀ ▄███▄▄▄██▀ ███ ███ |
| </span></span><span style="display:flex;"><span> ███ ███ ███ ███ ▀▀███▀▀▀██▄ ▀▀███▀▀▀██▄ ███ ███ |
| </span></span><span style="display:flex;"><span> ███ ███ ███ ███ ███ ██▄ ███ ██▄ ███ ███ |
| </span></span><span style="display:flex;"><span> ███ ▄███ ███ ███ ███ ███ ███ ███ ███ ███ |
| </span></span><span style="display:flex;"><span> ████████▀ ████████▀ ▄█████████▀ ▄█████████▀ ▀██████▀ |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>dubbo&gt;ls |
| </span></span><span style="display:flex;"><span>As Provider side: |
| </span></span><span style="display:flex;"><span>+----------------------------------+---+ |
| </span></span><span style="display:flex;"><span>| Provider Service Name |PUB| |
| </span></span><span style="display:flex;"><span>+----------------------------------+---+ |
| </span></span><span style="display:flex;"><span>|org.apache.dubbo.demo.DemoService| N | |
| </span></span><span style="display:flex;"><span>+----------------------------------+---+ |
| </span></span><span style="display:flex;"><span>As Consumer side: |
| </span></span><span style="display:flex;"><span>+---------------------+---+ |
| </span></span><span style="display:flex;"><span>|Consumer Service Name|NUM| |
| </span></span><span style="display:flex;"><span>+---------------------+---+ |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>dubbo&gt; |
| </span></span></code></pre></div><h2 id="其他方式">其他方式</h2> |
| <h3 id="端口">端口</h3> |
| <p>新版本的 telnet 端口 与 dubbo 协议的端口是不同的端口,默认为 <code>22222</code></p> |
| <p>可以通过配置文件<code>dubbo.properties</code> 修改:</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>dubbo.application.qos-port=33333 |
| </span></span></code></pre></div><p>或者</p> |
| <p>可以通过设置 JVM 参数:</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>-Ddubbo.application.qos-port=33333 |
| </span></span></code></pre></div><h3 id="安全">安全</h3> |
| <p>默认情况下,dubbo 接收任何主机发起的命令</p> |
| <p>可以通过配置文件<code>dubbo.properties</code> 修改:</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>dubbo.application.qos-accept-foreign-ip=false |
| </span></span></code></pre></div><p>或者</p> |
| <p>可以通过设置 JVM 参数:</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>-Ddubbo.application.qos-accept-foreign-ip=false |
| </span></span></code></pre></div><p>拒绝远端主机发出的命令,只允许服务本机执行。</p> |
| <p>同时可以通过设置<code>qos-accept-foreign-ip-whitelist</code>来指定支持的远端主机ip地址(段),多个ip地址(段)之间用<strong>逗号</strong>分隔,如:</p> |
| <p>配置文件<code>dubbo.properties</code></p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>dubbo.application.qos-accept-foreign-ip-whitelist=123.12.10.13, 132.12.10.13/24 |
| </span></span></code></pre></div><p>设置 JVM 参数:</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>-Ddubbo.application.qos-accept-foreign-ip-whitelist=123.12.10.13,132.12.10.13/24 |
| </span></span></code></pre></div><h3 id="权限">权限</h3> |
| <p>为了对生命周期探针的默认支持,QoS 提供了匿名访问的能力以及对权限级别的设置,目前支持的权限级别有:</p> |
| <ul> |
| <li>PUBLIC(1)<br> |
| 默认支持匿名访问的命令权限级别,目前只支持生命周期探针相关的命令</li> |
| <li>PROTECTED(2)<br> |
| 命令默认的权限级别</li> |
| <li>PRIVATE(3)<br> |
| 保留的最高权限级别,目前未支持</li> |
| <li>NONE(4) |
| 最低权限级别,即不支持匿名访问</li> |
| </ul> |
| <blockquote> |
| <p>权限级别 <code>PRIVATE</code>&gt; <code>PROTECTED</code>&gt; <code>PUBLIC</code>&gt; <code>NONE</code>, 高级别权限可访问同级别和低级别权限命令。 |
| 当前以下命令权限为<code>PUBLIC</code>, 其它命令默认权限别为<code>PROTECTED</code>。</p> |
| </blockquote> |
| <table> |
| <thead> |
| <tr> |
| <th>命令</th> |
| <th>权限等级</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td>Live</td> |
| <td>PUBLIC (1)</td> |
| </tr> |
| <tr> |
| <td>Startup</td> |
| <td>PUBLIC (1)</td> |
| </tr> |
| <tr> |
| <td>Ready</td> |
| <td>PUBLIC (1)</td> |
| </tr> |
| <tr> |
| <td>Quit</td> |
| <td>PUBLIC (1)</td> |
| </tr> |
| </tbody> |
| </table> |
| <p>默认情况下,dubbo 允许匿名主机发起匿名访问,只有<code>PUBLIC</code>权限级别的命令可以执行,其他更高权限的命令会被拒绝。</p> |
| <p><strong>关闭匿名访问</strong><br> |
| 可以通过设置<code>qos-anonymous-access-permission-level=NONE</code>来关闭匿名访问。</p> |
| <p><strong>设置权限级别</strong><br> |
| 可以通过配置文件<code>dubbo.properties</code> 修改:</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>dubbo.application.qos-anonymous-access-permission-level=PROTECTED |
| </span></span></code></pre></div><p>或者</p> |
| <p>可以通过设置 JVM 参数:</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>-Ddubbo.application.qos-anonymous-access-permission-level=PROTECTED |
| </span></span></code></pre></div><p>来允许匿名访问更高级别的权限的命令。</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>➜ ~ curl &#34;localhost:22222/ls?arg1=xxx&amp;arg2=xxxx&#34; |
| </span></span><span style="display:flex;"><span>As Provider side: |
| </span></span><span style="display:flex;"><span>+----------------------------------+---+ |
| </span></span><span style="display:flex;"><span>| Provider Service Name |PUB| |
| </span></span><span style="display:flex;"><span>+----------------------------------+---+ |
| </span></span><span style="display:flex;"><span>|org.apache.dubbo.demo.DemoService| N | |
| </span></span><span style="display:flex;"><span>+----------------------------------+---+ |
| </span></span><span style="display:flex;"><span>As Consumer side: |
| </span></span><span style="display:flex;"><span>+---------------------+---+ |
| </span></span><span style="display:flex;"><span>|Consumer Service Name|NUM| |
| </span></span><span style="display:flex;"><span>+---------------------+---+ |
| </span></span></code></pre></div><h2 id="配置方式">配置方式</h2> |
| <blockquote> |
| <p>优先顺序: <strong>系统属性 &gt; dubbo.properties &gt; XML/Spring-boot 自动装配</strong></p> |
| </blockquote> |
| <h3 id="系统属性">系统属性</h3> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>-Ddubbo.application.qos-enable=true |
| </span></span><span style="display:flex;"><span>-Ddubbo.application.qos-port=33333 |
| </span></span><span style="display:flex;"><span>-Ddubbo.application.qos-accept-foreign-ip=false |
| </span></span><span style="display:flex;"><span>-Ddubbo.application.qos-accept-foreign-ip-whitelist=123.12.10.13,132.12.10.13/24 |
| </span></span><span style="display:flex;"><span>-Ddubbo.application.qos-anonymous-access-permission-level=PUBLIC |
| </span></span></code></pre></div><h3 id="dubboproperties">dubbo.properties</h3> |
| <p>在项目的<code>src/main/resources</code>目录下添加 dubbo.properties文件,内容如下:</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>dubbo.application.qos-enable=true |
| </span></span><span style="display:flex;"><span>dubbo.application.qos-port=33333 |
| </span></span><span style="display:flex;"><span>dubbo.application.qos-accept-foreign-ip=false |
| </span></span><span style="display:flex;"><span>dubbo.application.qos-accept-foreign-ip-whitelist=123.12.10.13, 132.12.10.13/24 |
| </span></span><span style="display:flex;"><span>dubbo.application.qos-anonymous-access-permission-level=PUBLIC |
| </span></span></code></pre></div><h3 id="xml">XML</h3> |
| <p>如果要通过 XML 配置响应的QoS相关的参数,可以进行如下配置:</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#719e07">&lt;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34;?&gt;</span> |
| </span></span><span style="display:flex;"><span><span style="color:#268bd2">&lt;beans</span> xmlns=<span style="color:#2aa198">&#34;http://www.springframework.org/schema/beans&#34;</span> |
| </span></span><span style="display:flex;"><span> xmlns:xsi=<span style="color:#2aa198">&#34;http://www.w3.org/2001/XMLSchema-instance&#34;</span> |
| </span></span><span style="display:flex;"><span> xmlns:dubbo=<span style="color:#2aa198">&#34;http://dubbo.apache.org/schema/dubbo&#34;</span> |
| </span></span><span style="display:flex;"><span> xsi:schemaLocation=<span style="color:#2aa198">&#34;http://www.springframework.org/schema/beans |
| </span></span></span><span style="display:flex;"><span><span style="color:#2aa198"> http://www.springframework.org/schema/beans/spring-beans.xsd |
| </span></span></span><span style="display:flex;"><span><span style="color:#2aa198"> http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd&#34;</span><span style="color:#268bd2">&gt;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;dubbo:application</span> name=<span style="color:#2aa198">&#34;demo-provider&#34;</span><span style="color:#268bd2">&gt;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;dubbo:parameter</span> key=<span style="color:#2aa198">&#34;qos-enable&#34;</span> value=<span style="color:#2aa198">&#34;true&#34;</span><span style="color:#268bd2">/&gt;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;dubbo:parameter</span> key=<span style="color:#2aa198">&#34;qos-accept-foreign-ip&#34;</span> value=<span style="color:#2aa198">&#34;false&#34;</span><span style="color:#268bd2">/&gt;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;dubbo:parameter</span> key=<span style="color:#2aa198">&#34;qos-accept-foreign-ip-whitelist&#34;</span> value=<span style="color:#2aa198">&#34;123.12.10.13,132.12.10.13/24&#34;</span><span style="color:#268bd2">/&gt;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;dubbo:parameter</span> key=<span style="color:#2aa198">&#34;qos-anonymous-access-permission-level&#34;</span> value=<span style="color:#2aa198">&#34;NONE&#34;</span><span style="color:#268bd2">/&gt;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;dubbo:parameter</span> key=<span style="color:#2aa198">&#34;qos-port&#34;</span> value=<span style="color:#2aa198">&#34;33333&#34;</span><span style="color:#268bd2">/&gt;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;/dubbo:application&gt;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;dubbo:registry</span> address=<span style="color:#2aa198">&#34;multicast://224.5.6.7:1234&#34;</span><span style="color:#268bd2">/&gt;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;dubbo:protocol</span> name=<span style="color:#2aa198">&#34;dubbo&#34;</span> port=<span style="color:#2aa198">&#34;20880&#34;</span><span style="color:#268bd2">/&gt;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;dubbo:service</span> interface=<span style="color:#2aa198">&#34;org.apache.dubbo.demo.provider.DemoService&#34;</span> ref=<span style="color:#2aa198">&#34;demoService&#34;</span><span style="color:#268bd2">/&gt;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;bean</span> id=<span style="color:#2aa198">&#34;demoService&#34;</span> class=<span style="color:#2aa198">&#34;org.apache.dubbo.demo.provider.DemoServiceImpl&#34;</span><span style="color:#268bd2">/&gt;</span> |
| </span></span><span style="display:flex;"><span><span style="color:#268bd2">&lt;/beans&gt;</span> |
| </span></span></code></pre></div><h3 id="spring-boot-自动装配">spring-boot 自动装配</h3> |
| <p>如果是 spring-boot 的应用,可以在<code>application.properties</code>或者<code>application.yml</code>上配置:</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>dubbo.application.qos-enable=true |
| </span></span><span style="display:flex;"><span>dubbo.application.qos-port=33333 |
| </span></span><span style="display:flex;"><span>dubbo.application.qos-accept-foreign-ip=false |
| </span></span><span style="display:flex;"><span>dubbo.application.qos-accept-foreign-ip-whitelist=123.12.10.13, 132.12.10.13/24 |
| </span></span><span style="display:flex;"><span>dubbo.application.qos-anonymous-access-permission-level=NONE |
| </span></span></code></pre></div></description></item><item><title>Overview: 基础命令手册</title><link>https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/qos/command/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/qos/command/</guid><description> |
| <p>基础命令功能提供了一系列的基础命令。</p> |
| <h3 id="help-命令">help 命令</h3> |
| <p>显示更多命令</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>//列出所有命令 |
| </span></span><span style="display:flex;"><span>dubbo&gt;help |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>//列出单个命令的具体使用情况 |
| </span></span><span style="display:flex;"><span>dubbo&gt;help online |
| </span></span><span style="display:flex;"><span>+--------------+----------------------------------------------------------------------------------+ |
| </span></span><span style="display:flex;"><span>| COMMAND NAME | online | |
| </span></span><span style="display:flex;"><span>+--------------+----------------------------------------------------------------------------------+ |
| </span></span><span style="display:flex;"><span>| EXAMPLE | online dubbo | |
| </span></span><span style="display:flex;"><span>| | online xx.xx.xxx.service | |
| </span></span><span style="display:flex;"><span>+--------------+----------------------------------------------------------------------------------+ |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>dubbo&gt; |
| </span></span></code></pre></div><h3 id="version-命令">version 命令</h3> |
| <p>显示当前运行的 Dubbo 的版本号</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>dubbo&gt;version |
| </span></span><span style="display:flex;"><span>dubbo version &#34;3.0.10-SNAPSHOT&#34; |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>dubbo&gt; |
| </span></span></code></pre></div><h3 id="quit-命令">quit 命令</h3> |
| <p>退出命令状态</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>dubbo&gt;quit |
| </span></span><span style="display:flex;"><span>BYE! |
| </span></span><span style="display:flex;"><span>Connection closed by foreign host. |
| </span></span></code></pre></div></description></item><item><title>Overview: 服务管理命令</title><link>https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/qos/service-management/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/qos/service-management/</guid><description> |
| <p>服务管理功能提供了一系列的命令对 Dubbo 服务进行管理。</p> |
| <h2 id="服务管理">服务管理</h2> |
| <h3 id="ls-命令">ls 命令</h3> |
| <p>列出消费者和提供者</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>dubbo&gt;ls |
| </span></span><span style="display:flex;"><span>As Provider side: |
| </span></span><span style="display:flex;"><span>+------------------------------------------------------------------------+---------------------+ |
| </span></span><span style="display:flex;"><span>| Provider Service Name | PUB | |
| </span></span><span style="display:flex;"><span>+------------------------------------------------------------------------+---------------------+ |
| </span></span><span style="display:flex;"><span>|DubboInternal - UserRead/org.apache.dubbo.metadata.MetadataService:1.0.0| | |
| </span></span><span style="display:flex;"><span>+------------------------------------------------------------------------+---------------------+ |
| </span></span><span style="display:flex;"><span>| com.dubbo.dubbointegration.UserReadService |nacos-A(Y)/nacos-I(Y)| |
| </span></span><span style="display:flex;"><span>+------------------------------------------------------------------------+---------------------+ |
| </span></span><span style="display:flex;"><span>As Consumer side: |
| </span></span><span style="display:flex;"><span>+-----------------------------------------+-----------------+ |
| </span></span><span style="display:flex;"><span>| Consumer Service Name | NUM | |
| </span></span><span style="display:flex;"><span>+-----------------------------------------+-----------------+ |
| </span></span><span style="display:flex;"><span>|com.dubbo.dubbointegration.BackendService|nacos-AF(I-2,A-2)| |
| </span></span><span style="display:flex;"><span>+-----------------------------------------+-----------------+ |
| </span></span></code></pre></div><p>列出 dubbo 的所提供的服务和消费的服务,以及消费的服务地址数。</p> |
| <div class="alert alert-primary" role="alert"> |
| <h4 class="alert-heading">注意</h4> |
| <ul> |
| <li>带有 <code>DubboInternal</code> 前缀的服务是 Dubbo 内置的服务,默认不向注册中心中注册。</li> |
| <li>服务发布状态中的 <code>nacos-A(Y)</code> 第一部分是对应的注册中心名,第二部分是注册的模式(<code>A</code> 代表应用级地址注册,<code>I</code> 代表接口级地址注册),第三部分代表对应模式是否已经注册</li> |
| <li>服务订阅状态中的 <code>nacos-AF(I-2,A-2)</code> 第一部分是对应的注册中心名,第二部分是订阅的模式(<code>AF</code> 代表双订阅模式,<code>FA</code> 代表仅应用级订阅,<code>FI</code> 代表仅接口级订阅),第三部分中前半部分代表地址模式来源(<code>A</code> 代表应用级地址,<code>I</code> 代表接口级地址)后半部分代表对应的地址数量</li> |
| </ul> |
| </div> |
| <h2 id="上线">上线</h2> |
| <h3 id="online-命令">online 命令</h3> |
| <p>Online 上线服务命令</p> |
| <p>当使用延迟发布功能的时候(通过设置 org.apache.dubbo.config.AbstractServiceConfig#register 为 false),后续需要上线的时候,可通过 Online 命令</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>//上线所有服务 |
| </span></span><span style="display:flex;"><span>dubbo&gt;online |
| </span></span><span style="display:flex;"><span>OK |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>//根据正则,上线部分服务 |
| </span></span><span style="display:flex;"><span>dubbo&gt;online com.* |
| </span></span><span style="display:flex;"><span>OK |
| </span></span></code></pre></div><h2 id="下线">下线</h2> |
| <h3 id="offline-命令">offline 命令</h3> |
| <p>下线服务命令</p> |
| <p>由于故障等原因,需要临时下线服务保持现场,可以使用 Offline 下线命令。</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>//下线所有服务 |
| </span></span><span style="display:flex;"><span>dubbo&gt;offline |
| </span></span><span style="display:flex;"><span>OK |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>//根据正则,下线部分服务 |
| </span></span><span style="display:flex;"><span>dubbo&gt;offline com.* |
| </span></span><span style="display:flex;"><span>OK |
| </span></span></code></pre></div></description></item><item><title>Overview: 框架状态命令</title><link>https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/qos/probe/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/qos/probe/</guid><description> |
| <blockquote> |
| <p>参考文档:<a href="../../../advanced-features-and-usage/others/dubbo-kubernetes-probe/">Kubernetes 生命周期探针</a></p> |
| </blockquote> |
| <h3 id="startup-命令">startup 命令</h3> |
| <p>检测当前框架是否已经启动完毕</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>dubbo&gt;startup |
| </span></span><span style="display:flex;"><span>true |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>dubbo&gt; |
| </span></span></code></pre></div><h3 id="ready-命令">ready 命令</h3> |
| <p>检测当前框架是否能正常提供服务(可能是临时下线)</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>dubbo&gt;ready |
| </span></span><span style="display:flex;"><span>true |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>dubbo&gt; |
| </span></span></code></pre></div><h3 id="live-命令">live 命令</h3> |
| <p>检测当前框架是否正常运行(可能是永久异常)</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>dubbo&gt;live |
| </span></span><span style="display:flex;"><span>true |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>dubbo&gt; |
| </span></span></code></pre></div></description></item><item><title>Overview: 日志框架运行时管理</title><link>https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/qos/logger-management/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/qos/logger-management/</guid><description> |
| <div class="alert alert-primary" role="alert"> |
| <h4 class="alert-heading">注意</h4> |
| <p>自 <code>3.0.10</code> 开始,dubbo-qos 运行时管控支持查询日志配置以及动态修改使用的日志框架和日志级别。</p> |
| <p>通过 dubbo-qos 修改的日志配置不进行持久化存储,在应用重启后将会失效。</p> |
| </div> |
| <h3 id="查询日志配置">查询日志配置</h3> |
| <p>命令:<code>loggerInfo</code></p> |
| <p>示例:</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>&gt; telnet 127.0.0.1 <span style="color:#2aa198">22222</span> |
| </span></span><span style="display:flex;"><span>&gt; loggerInfo |
| </span></span></code></pre></div><p>输出:</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>Trying 127.0.0.1... |
| </span></span><span style="display:flex;"><span>Connected to localhost. |
| </span></span><span style="display:flex;"><span>Escape character is &#39;^]&#39;. |
| </span></span><span style="display:flex;"><span> ___ __ __ ___ ___ ____ |
| </span></span><span style="display:flex;"><span> / _ \ / / / // _ ) / _ ) / __ \ |
| </span></span><span style="display:flex;"><span> / // // /_/ // _ |/ _ |/ /_/ / |
| </span></span><span style="display:flex;"><span>/____/ \____//____//____/ \____/ |
| </span></span><span style="display:flex;"><span>dubbo&gt;loggerInfo |
| </span></span><span style="display:flex;"><span>Available logger adapters: [jcl, jdk, log4j, slf4j]. Current Adapter: [log4j]. Log level: INFO |
| </span></span></code></pre></div><h3 id="修改日志级别">修改日志级别</h3> |
| <p>命令:<code>switchLogLevel {level}</code></p> |
| <p>level: <code>ALL</code>, <code>TRACE</code>, <code>DEBUG</code>, <code>INFO</code>, <code>WARN</code>, <code>ERROR</code>, <code>OFF</code></p> |
| <p>示例:</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>&gt; telnet 127.0.0.1 <span style="color:#2aa198">22222</span> |
| </span></span><span style="display:flex;"><span>&gt; switchLogLevel WARN |
| </span></span></code></pre></div><p>输出:</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>Trying 127.0.0.1... |
| </span></span><span style="display:flex;"><span>Connected to localhost. |
| </span></span><span style="display:flex;"><span>Escape character is &#39;^]&#39;. |
| </span></span><span style="display:flex;"><span> ___ __ __ ___ ___ ____ |
| </span></span><span style="display:flex;"><span> / _ \ / / / // _ ) / _ ) / __ \ |
| </span></span><span style="display:flex;"><span> / // // /_/ // _ |/ _ |/ /_/ / |
| </span></span><span style="display:flex;"><span>/____/ \____//____//____/ \____/ |
| </span></span><span style="display:flex;"><span>dubbo&gt;loggerInfo |
| </span></span><span style="display:flex;"><span>Available logger adapters: [jcl, jdk, log4j, slf4j]. Current Adapter: [log4j]. Log level: INFO |
| </span></span><span style="display:flex;"><span>dubbo&gt;switchLogLevel WARN |
| </span></span><span style="display:flex;"><span>OK |
| </span></span><span style="display:flex;"><span>dubbo&gt;loggerInfo |
| </span></span><span style="display:flex;"><span>Available logger adapters: [jcl, jdk, log4j, slf4j]. Current Adapter: [log4j]. Log level: WARN``` |
| </span></span></code></pre></div><h3 id="修改日志输出框架">修改日志输出框架</h3> |
| <p>命令:<code>switchLogger {loggerAdapterName}</code></p> |
| <p>loggerAdapterName: <code>slf4j</code>, <code>jcl</code>, <code>log4j</code>, <code>jdk</code>, <code>log4j2</code></p> |
| <p>示例:</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>&gt; telnet 127.0.0.1 <span style="color:#2aa198">22222</span> |
| </span></span><span style="display:flex;"><span>&gt; switchLogger slf4j |
| </span></span></code></pre></div><p>输出:</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>Trying 127.0.0.1... |
| </span></span><span style="display:flex;"><span>Connected to localhost. |
| </span></span><span style="display:flex;"><span>Escape character is &#39;^]&#39;. |
| </span></span><span style="display:flex;"><span> ___ __ __ ___ ___ ____ |
| </span></span><span style="display:flex;"><span> / _ \ / / / // _ ) / _ ) / __ \ |
| </span></span><span style="display:flex;"><span> / // // /_/ // _ |/ _ |/ /_/ / |
| </span></span><span style="display:flex;"><span>/____/ \____//____//____/ \____/ |
| </span></span><span style="display:flex;"><span>dubbo&gt;loggerInfo |
| </span></span><span style="display:flex;"><span>Available logger adapters: [jcl, slf4j, log4j, jdk]. Current Adapter: [log4j]. Log level: INFO |
| </span></span><span style="display:flex;"><span>dubbo&gt;switchLogger slf4j |
| </span></span><span style="display:flex;"><span>OK |
| </span></span><span style="display:flex;"><span>dubbo&gt;loggerInfo |
| </span></span><span style="display:flex;"><span>Available logger adapters: [jcl, slf4j, log4j, jdk]. Current Adapter: [slf4j]. Log level: INFO |
| </span></span></code></pre></div></description></item><item><title>Overview: 性能采样命令</title><link>https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/qos/profiler/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/qos/profiler/</guid><description> |
| <p>性能采样功能可以对 Dubbo 处理链路上的各处耗时进行检测,在出现超时的时候 <code>( usageTime / timeout &gt; profilerWarnPercent * 100 )</code> 通过日志记录调用的耗时。</p> |
| <p>此功能分为 <code>simple profiler</code> 和 <code>detail profiler</code> 两个模式,其中 <code>simple profiler</code> 模式默认开启,<code>detail profiler</code> 模式默认关闭。 |
| <code>detail profiler</code> 相较 <code>simple profiler</code> 模式多采集了每个 filter 的处理耗时、协议上的具体耗时等。 |
| 在 <code>simple profiler</code> 模式下如果发现 Dubbo 框架内部存在耗时长的情况,可以开启 <code>detail profiler</code> 模式,以便更好地排查问题。</p> |
| <blockquote> |
| <p><a href="../../../advanced-features-and-usage/performance/profiler/">请求耗时采样</a></p> |
| </blockquote> |
| <h3 id="enablesimpleprofiler-命令">enableSimpleProfiler 命令</h3> |
| <p>开启 <code>simple profiler</code> 模式,默认开启</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>dubbo&gt;enableSimpleProfiler |
| </span></span><span style="display:flex;"><span>OK |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>dubbo&gt; |
| </span></span></code></pre></div><h3 id="disablesimpleprofiler-命令">disableSimpleProfiler 命令</h3> |
| <p>关闭 <code>simple profiler</code> 模式,关闭后 <code>detail profiler</code> 也将不启用</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>dubbo&gt;disableSimpleProfiler |
| </span></span><span style="display:flex;"><span>OK |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>dubbo&gt; |
| </span></span></code></pre></div><h3 id="enabledetailprofiler-命令">enableDetailProfiler 命令</h3> |
| <p>开启 <code>detail profiler</code> 模式,默认关闭,需要开启 <code>simple profiler</code> 模式才会真实开启</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>dubbo&gt;enableDetailProfiler |
| </span></span><span style="display:flex;"><span>OK. This will cause performance degradation, please be careful! |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>dubbo&gt; |
| </span></span></code></pre></div><h3 id="disabledetailprofiler-命令">disableDetailProfiler 命令</h3> |
| <p>关闭 <code>detail profiler</code> 模式,关闭后不影响 <code>simple profiler</code></p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>dubbo&gt;disableDetailProfiler |
| </span></span><span style="display:flex;"><span>OK |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>dubbo&gt; |
| </span></span></code></pre></div><h3 id="setprofilerwarnpercent-命令">setProfilerWarnPercent 命令</h3> |
| <p>设置超时时间的警告百分比</p> |
| <p>命令:<code>setProfilerWarnPercent {profilerWarnPercent}</code></p> |
| <p>profilerWarnPercent: 超时时间的警告百分比,取值范围 0.0 ~ 1.0,默认值为 0.75</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>dubbo&gt;setProfilerWarnPercent 0.75 |
| </span></span><span style="display:flex;"><span>OK |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>dubbo&gt; |
| </span></span></code></pre></div></description></item><item><title>Overview: 路由状态命令</title><link>https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/qos/router-snapshot/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/qos/router-snapshot/</guid><description> |
| <p>Dubbo 的很多流量治理能力是基于 Router 进行实现的,在生产环境中,如果出现流量结果不符合预期的情况,可以通过路由状态命令来查看路由的状态,以此来定位可能存在的问题。</p> |
| <blockquote> |
| <p><a href="../../../advanced-features-and-usage/performance/router-snapshot/">路由状态采集</a></p> |
| </blockquote> |
| <h3 id="getroutersnapshot-命令">getRouterSnapshot 命令</h3> |
| <p>获取当前的每层路由的分组状态。(仅支持 StateRouter)</p> |
| <p>命令:<code>getRouterSnapshot {serviceName}</code></p> |
| <p><code>serviceName</code> 为需要采集的服务名,支持匹配</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>dubbo&gt;getRouterSnapshot com.dubbo.dubbointegration.BackendService |
| </span></span><span style="display:flex;"><span>com.dubbo.dubbointegration.BackendService@2c2e824a |
| </span></span><span style="display:flex;"><span>[ All Invokers:2 ] [ Valid Invokers: 2 ] |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>MockInvokersSelector Total: 2 |
| </span></span><span style="display:flex;"><span>[ Mocked -&gt; Empty (Total: 0) ] |
| </span></span><span style="display:flex;"><span>[ Normal -&gt; 172.18.111.187:20880,172.18.111.183:20880 (Total: 2) ] |
| </span></span><span style="display:flex;"><span> ↓ |
| </span></span><span style="display:flex;"><span>StandardMeshRuleRouter not support |
| </span></span><span style="display:flex;"><span> ↓ |
| </span></span><span style="display:flex;"><span>TagStateRouter not support |
| </span></span><span style="display:flex;"><span> ↓ |
| </span></span><span style="display:flex;"><span>ServiceStateRouter not support |
| </span></span><span style="display:flex;"><span> ↓ |
| </span></span><span style="display:flex;"><span>AppStateRouter not support |
| </span></span><span style="display:flex;"><span> ↓ |
| </span></span><span style="display:flex;"><span>TailStateRouter End |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>dubbo&gt; |
| </span></span></code></pre></div><h3 id="enableroutersnapshot-命令">enableRouterSnapshot 命令</h3> |
| <p>开启路由结果采集模式</p> |
| <p>命令:<code>enableRouterSnapshot {serviceName}</code></p> |
| <p><code>serviceName</code> 为需要采集的服务名,支持匹配</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>dubbo&gt;enableRouterSnapshot com.dubbo.* |
| </span></span><span style="display:flex;"><span>OK. Found service count: 1. This will cause performance degradation, please be careful! |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>dubbo&gt; |
| </span></span></code></pre></div><h3 id="disableroutersnapshot-命令">disableRouterSnapshot 命令</h3> |
| <p>关闭路由结果采集模式</p> |
| <p>命令:<code>disableRouterSnapshot {serviceName}</code></p> |
| <p><code>serviceName</code> 为需要采集的服务名,支持匹配</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>dubbo&gt;disableRouterSnapshot com.dubbo.* |
| </span></span><span style="display:flex;"><span>OK. Found service count: 1 |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>dubbo&gt; |
| </span></span></code></pre></div><h3 id="getenabledroutersnapshot-命令">getEnabledRouterSnapshot 命令</h3> |
| <p>获取当前已经开启采集的服务</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>dubbo&gt;getEnabledRouterSnapshot |
| </span></span><span style="display:flex;"><span>com.dubbo.dubbointegration.BackendService |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>dubbo&gt; |
| </span></span></code></pre></div><h3 id="getrecentroutersnapshot-命令">getRecentRouterSnapshot 命令</h3> |
| <p>通过 qos 命令获取历史的路由状态。(最多存储 32 个结果)</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>dubbo&gt;getRecentRouterSnapshot |
| </span></span><span style="display:flex;"><span>1658224330156 - Router snapshot service com.dubbo.dubbointegration.BackendService from registry 172.18.111.184 on the consumer 172.18.111.184 using the dubbo version 3.0.9 is below: |
| </span></span><span style="display:flex;"><span>[ Parent (Input: 2) (Current Node Output: 2) (Chain Node Output: 2) ] Input: 172.18.111.187:20880,172.18.111.183:20880 -&gt; Chain Node Output: 172.18.111.187:20880,172.18.111.183:20880 |
| </span></span><span style="display:flex;"><span> [ MockInvokersSelector (Input: 2) (Current Node Output: 2) (Chain Node Output: 2) Router message: invocation.need.mock not set. Return normal Invokers. ] Current Node Output: 172.18.111.187:20880,172.18.111.183:20880 |
| </span></span><span style="display:flex;"><span> [ StandardMeshRuleRouter (Input: 2) (Current Node Output: 2) (Chain Node Output: 2) Router message: MeshRuleCache has not been built. Skip route. ] Current Node Output: 172.18.111.187:20880,172.18.111.183:20880 |
| </span></span><span style="display:flex;"><span> [ TagStateRouter (Input: 2) (Current Node Output: 2) (Chain Node Output: 2) Router message: Disable Tag Router. Reason: tagRouterRule is invalid or disabled ] Current Node Output: 172.18.111.187:20880,172.18.111.183:20880 |
| </span></span><span style="display:flex;"><span> [ ServiceStateRouter (Input: 2) (Current Node Output: 2) (Chain Node Output: 2) Router message: Directly return. Reason: Invokers from previous router is empty or conditionRouters is empty. ] Current Node Output: 172.18.111.187:20880,172.18.111.183:20880 |
| </span></span><span style="display:flex;"><span> [ AppStateRouter (Input: 2) (Current Node Output: 2) (Chain Node Output: 2) Router message: Directly return. Reason: Invokers from previous router is empty or conditionRouters is empty. ] Current Node Output: 172.18.111.187:20880,172.18.111.183:20880 |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>1658224330156 - Router snapshot service com.dubbo.dubbointegration.BackendService from registry 172.18.111.184 on the consumer 172.18.111.184 using the dubbo version 3.0.9 is below: |
| </span></span><span style="display:flex;"><span>[ Parent (Input: 2) (Current Node Output: 2) (Chain Node Output: 2) ] Input: 172.18.111.187:20880,172.18.111.183:20880 -&gt; Chain Node Output: 172.18.111.187:20880,172.18.111.183:20880 |
| </span></span><span style="display:flex;"><span> [ MockInvokersSelector (Input: 2) (Current Node Output: 2) (Chain Node Output: 2) Router message: invocation.need.mock not set. Return normal Invokers. ] Current Node Output: 172.18.111.187:20880,172.18.111.183:20880 |
| </span></span><span style="display:flex;"><span> [ StandardMeshRuleRouter (Input: 2) (Current Node Output: 2) (Chain Node Output: 2) Router message: MeshRuleCache has not been built. Skip route. ] Current Node Output: 172.18.111.187:20880,172.18.111.183:20880 |
| </span></span><span style="display:flex;"><span> [ TagStateRouter (Input: 2) (Current Node Output: 2) (Chain Node Output: 2) Router message: Disable Tag Router. Reason: tagRouterRule is invalid or disabled ] Current Node Output: 172.18.111.187:20880,172.18.111.183:20880 |
| </span></span><span style="display:flex;"><span> [ ServiceStateRouter (Input: 2) (Current Node Output: 2) (Chain Node Output: 2) Router message: Directly return. Reason: Invokers from previous router is empty or conditionRouters is empty. ] Current Node Output: 172.18.111.187:20880,172.18.111.183:20880 |
| </span></span><span style="display:flex;"><span> [ AppStateRouter (Input: 2) (Current Node Output: 2) (Chain Node Output: 2) Router message: Directly return. Reason: Invokers from previous router is empty or conditionRouters is empty. ] Current Node Output: 172.18.111.187:20880,172.18.111.183:20880 |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>··· |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>dubbo&gt; |
| </span></span></code></pre></div></description></item><item><title>Overview: 序列化安全审计</title><link>https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/qos/security/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/qos/security/</guid><description> |
| <p>Dubbo 支持通过 QoS 命令实时查看当前的配置信息以及可信/不可信类列表。目前共支持两个命令:<code>serializeCheckStatus</code> 查看当前配置信息,<code>serializeWarnedClasses</code> 查看实时的告警列表。</p> |
| <h3 id="serializecheckstatus-命令"><code>serializeCheckStatus</code> 命令</h3> |
| <p>通过控制台直接访问:</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>&gt; telnet 127.0.0.1 <span style="color:#2aa198">22222</span> |
| </span></span><span style="display:flex;"><span>Trying 127.0.0.1... |
| </span></span><span style="display:flex;"><span>Connected to localhost. |
| </span></span><span style="display:flex;"><span>Escape character is <span style="color:#2aa198">&#39;^]&#39;</span>. |
| </span></span><span style="display:flex;"><span> ___ __ __ ___ ___ ____ |
| </span></span><span style="display:flex;"><span> / _ <span style="color:#cb4b16">\ </span>/ / / // _ <span style="color:#719e07">)</span> / _ <span style="color:#719e07">)</span> / __ <span style="color:#cb4b16">\ </span> |
| </span></span><span style="display:flex;"><span> / // // /_/ // _ |/ _ |/ /_/ / |
| </span></span><span style="display:flex;"><span>/____/ <span style="color:#cb4b16">\_</span>___//____//____/ <span style="color:#cb4b16">\_</span>___/ |
| </span></span><span style="display:flex;"><span>dubbo&gt;serializeCheckStatus |
| </span></span><span style="display:flex;"><span>CheckStatus: WARN |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>CheckSerializable: <span style="color:#b58900">true</span> |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>AllowedPrefix: |
| </span></span><span style="display:flex;"><span>... |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>DisAllowedPrefix: |
| </span></span><span style="display:flex;"><span>... |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>dubbo&gt; |
| </span></span></code></pre></div><p>通过 http 请求 json 格式结果:</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>&gt; curl http://127.0.0.1:22222/serializeCheckStatus |
| </span></span><span style="display:flex;"><span><span style="color:#719e07">{</span><span style="color:#2aa198">&#34;checkStatus&#34;</span>:<span style="color:#2aa198">&#34;WARN&#34;</span>,<span style="color:#2aa198">&#34;allowedPrefix&#34;</span>:<span style="color:#719e07">[</span>...<span style="color:#719e07">]</span>,<span style="color:#2aa198">&#34;checkSerializable&#34;</span>:true,<span style="color:#2aa198">&#34;disAllowedPrefix&#34;</span>:<span style="color:#719e07">[</span>...<span style="color:#719e07">]}</span> |
| </span></span></code></pre></div><h3 id="serializewarnedclasses-命令"><code>serializeWarnedClasses</code> 命令</h3> |
| <p>通过控制台直接访问:</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>&gt; telnet 127.0.0.1 <span style="color:#2aa198">22222</span> |
| </span></span><span style="display:flex;"><span>Trying 127.0.0.1... |
| </span></span><span style="display:flex;"><span>Connected to localhost. |
| </span></span><span style="display:flex;"><span>Escape character is <span style="color:#2aa198">&#39;^]&#39;</span>. |
| </span></span><span style="display:flex;"><span> ___ __ __ ___ ___ ____ |
| </span></span><span style="display:flex;"><span> / _ <span style="color:#cb4b16">\ </span>/ / / // _ <span style="color:#719e07">)</span> / _ <span style="color:#719e07">)</span> / __ <span style="color:#cb4b16">\ </span> |
| </span></span><span style="display:flex;"><span> / // // /_/ // _ |/ _ |/ /_/ / |
| </span></span><span style="display:flex;"><span>/____/ <span style="color:#cb4b16">\_</span>___//____//____/ <span style="color:#cb4b16">\_</span>___/ |
| </span></span><span style="display:flex;"><span>dubbo&gt;serializeWarnedClasses |
| </span></span><span style="display:flex;"><span>WarnedClasses: |
| </span></span><span style="display:flex;"><span>io.dubbo.test.NotSerializable |
| </span></span><span style="display:flex;"><span>io.dubbo.test2.NotSerializable |
| </span></span><span style="display:flex;"><span>io.dubbo.test2.OthersSerializable |
| </span></span><span style="display:flex;"><span>org.apache.dubbo.samples.NotSerializable |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>dubbo&gt; |
| </span></span></code></pre></div><p>通过 http 请求 json 格式结果:</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>&gt; curl http://127.0.0.1:22222/serializeWarnedClasses |
| </span></span><span style="display:flex;"><span><span style="color:#719e07">{</span><span style="color:#2aa198">&#34;warnedClasses&#34;</span>:<span style="color:#719e07">[</span><span style="color:#2aa198">&#34;io.dubbo.test2.NotSerializable&#34;</span>,<span style="color:#2aa198">&#34;org.apache.dubbo.samples.NotSerializable&#34;</span>,<span style="color:#2aa198">&#34;io.dubbo.test.NotSerializable&#34;</span>,<span style="color:#2aa198">&#34;io.dubbo.test2.OthersSerializable&#34;</span><span style="color:#719e07">]}</span> |
| </span></span></code></pre></div> |
| <div class="alert alert-primary" role="alert"> |
| <h4 class="alert-heading">注意</h4> |
| <p>建议及时关注 <code>serializeWarnedClasses</code> 的结果,通过返回结果是否非空来判断是否受到攻击。</p> |
| <p><a href="https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/security/class-check/">Dubbo 类检查机制</a>。</p> |
| </div></description></item><item><title>Overview: 默认监控指标命令</title><link>https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/qos/default_metrics/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/qos/default_metrics/</guid><description> |
| <h3 id="查询所有监控指标">查询所有监控指标</h3> |
| <p>命令:<code>metrics_default</code></p> |
| <p>示例:</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>&gt; telnet 127.0.0.1 <span style="color:#2aa198">22222</span> |
| </span></span><span style="display:flex;"><span>&gt; metrics_default |
| </span></span></code></pre></div><p>输出:</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>Trying 127.0.0.1... |
| </span></span><span style="display:flex;"><span>Connected to localhost. |
| </span></span><span style="display:flex;"><span>Escape character is &#39;^]&#39;. |
| </span></span><span style="display:flex;"><span> ___ __ __ ___ ___ ____ |
| </span></span><span style="display:flex;"><span> / _ \ / / / // _ ) / _ ) / __ \ |
| </span></span><span style="display:flex;"><span> / // // /_/ // _ |/ _ |/ /_/ / |
| </span></span><span style="display:flex;"><span>/____/ \____//____//____/ \____/ |
| </span></span><span style="display:flex;"><span>dubbo&gt;metrics_default |
| </span></span><span style="display:flex;"><span>dubbo.registry.directory.num.disable.total{application.module.id=1.1,application.name=dubbo-springboot-demo-provider,application.version=,git.commit.id=,hostname=hujundeMacBook-Pro.local,interface=dubbo-springboot-demo-provider/org.apache.dubbo.metrics.service.MetricsService:1.0.0,ip=10.224.214.80,} 0.0 |
| </span></span><span style="display:flex;"><span>dubbo.register.rt.milliseconds.max{application.module.id=1.1,application.name=dubbo-springboot-demo-provider,application.version=,git.commit.id=,hostname=hujundeMacBook-Pro.local,ip=10.224.214.80,} 153.0 |
| </span></span></code></pre></div><h3 id="根据关键词查询监控指标">根据关键词查询监控指标</h3> |
| <p>命令:<code>metrics_default {applicationName} {keyword}</code></p> |
| <p>applicationName: 应用名称<br> |
| keyword: 关键词</p> |
| <p>示例:</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>&gt; telnet 127.0.0.1 <span style="color:#2aa198">22222</span> |
| </span></span><span style="display:flex;"><span>&gt; metrics_default dubbo-springboot-demo-provider registry |
| </span></span></code></pre></div><p>输出:</p> |
| <div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>Trying 127.0.0.1... |
| </span></span><span style="display:flex;"><span>Connected to localhost. |
| </span></span><span style="display:flex;"><span>Escape character is &#39;^]&#39;. |
| </span></span><span style="display:flex;"><span> ___ __ __ ___ ___ ____ |
| </span></span><span style="display:flex;"><span> / _ \ / / / // _ ) / _ ) / __ \ |
| </span></span><span style="display:flex;"><span> / // // /_/ // _ |/ _ |/ /_/ / |
| </span></span><span style="display:flex;"><span>/____/ \____//____//____/ \____/ |
| </span></span><span style="display:flex;"><span>dubbo&gt; metrics_default dubbo-springboot-demo-provider registry |
| </span></span><span style="display:flex;"><span>dubbo.registry.subscribe.num.total{application.module.id=1.1,application.name=dubbo-springboot-demo-provider,application.version=,git.commit.id=,hostname=hujundeMacBook-Pro.local,ip=10.224.214.80,} 0.0 |
| </span></span><span style="display:flex;"><span>dubbo.registry.directory.num.disable.total{application.module.id=1.1,application.name=dubbo-springboot-demo-provider,application.version=,git.commit.id=,hostname=hujundeMacBook-Pro.local,interface=dubbo-springboot-demo-provider/org.apache.dubbo.metrics.service.MetricsService:1.0.0,ip=10.224.214.80,} 0.0 |
| </span></span></code></pre></div></description></item></channel></rss> |