| <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Apache Dubbo – 全链路追踪</title><link>https://dubbo.apache.org/zh-cn/overview/tasks/observability/tracing/</link><description>Recent content in 全链路追踪 on Apache Dubbo</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><atom:link href="https://dubbo.apache.org/zh-cn/overview/tasks/observability/tracing/index.xml" rel="self" type="application/rss+xml"/><item><title>Overview: OTlp</title><link>https://dubbo.apache.org/zh-cn/overview/tasks/observability/tracing/otlp/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/tasks/observability/tracing/otlp/</guid><description> |
| <h2 id="概述">概述</h2> |
| <p>这个案例展示了在 Dubbo 项目中以 OpenTelemetry 作为 Tracer,将 Trace 信息上报到 Otlp Collector,再由 collector 转发至 Zipkin、Jagger。<a href="https://github.com/conghuhu/dubbo-samples/tree/master/4-governance/dubbo-samples-tracing/dubbo-samples-spring-boot-tracing-otel-otlp">代码地址</a></p> |
| <p>有三部分组成:</p> |
| <ul> |
| <li>dubbo-samples-spring-boot-tracing-otel-oltp-interface</li> |
| <li>dubbo-samples-spring-boot-tracing-otel-oltp-provider</li> |
| <li>dubbo-samples-spring-boot-tracing-otel-oltp-consumer</li> |
| </ul> |
| <h2 id="案例架构图">案例架构图</h2> |
| <p><img src="https://dubbo.apache.org/imgs/v3/tasks/observability/tracing/otlp/demo_arch.png" alt="案例架构图"></p> |
| <h2 id="快速开始">快速开始</h2> |
| <h3 id="安装--启动-otlp-collector">安装 &amp; 启动 Otlp Collector</h3> |
| <p>按照 <a href="https://OpenTelemetry.io/docs/collector/getting-started/">OpenTelemetry Collector Quick Start</a> 去启动 otlp collector.</p> |
| <h3 id="启动-provider">启动 Provider</h3> |
| <p>直接运行<code>org.apache.dubbo.springboot.demo.provider.ProviderApplication</code> directly from IDE.</p> |
| <h3 id="启动-consumer">启动 Consumer</h3> |
| <p>Start <code>org.apache.dubbo.springboot.demo.consumer.ConsumerApplication</code> directly from IDE.</p> |
| <h3 id="查看-trace-信息">查看 Trace 信息</h3> |
| <p>在浏览器中打开zipkin看板 <code>http://localhost:9411/zipkin/</code> :</p> |
| <p><img src="https://dubbo.apache.org/imgs/v3/tasks/observability/tracing/otlp/zipkin_search.png" alt="zipkin.png"></p> |
| <p><img src="https://dubbo.apache.org/imgs/v3/tasks/observability/tracing/otlp/zipkin_detail.png" alt="zipkin.png"></p> |
| <p>在浏览器中打开Jaeger看板 <code>http://localhost:16686/search</code> :</p> |
| <p><img src="https://dubbo.apache.org/imgs/v3/tasks/observability/tracing/otlp/jaeger_search.png" alt="jaeger_search.png"></p> |
| <p><img src="https://dubbo.apache.org/imgs/v3/tasks/observability/tracing/otlp/jaeger_detail.png" alt="jaeger_detail.png"></p> |
| <h2 id="如何在springboot项目中使用">如何在SpringBoot项目中使用</h2> |
| <h3 id="1-在你的项目中添加依赖">1. 在你的项目中添加依赖</h3> |
| <p>对于 SpringBoot 项目,你可以使用<code>dubbo-spring-boot-tracing-otel-otlp-starter</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-xml" data-lang="xml"><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span><span style="color:#586e75">&lt;!-- OpenTelemetry as Tracer, Otlp as exporter --&gt;</span> |
| </span></span><span style="display:flex;"><span><span style="color:#268bd2">&lt;dependency&gt;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;groupId&gt;</span>org.apache.dubbo<span style="color:#268bd2">&lt;/groupId&gt;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;artifactId&gt;</span>dubbo-spring-boot-tracing-otel-otlp-starter<span style="color:#268bd2">&lt;/artifactId&gt;</span> |
| </span></span><span style="display:flex;"><span><span style="color:#268bd2">&lt;/dependency&gt;</span> |
| </span></span></code></pre></div><h3 id="2-配置">2. 配置</h3> |
| <h4 id="applicationyml">application.yml</h4> |
| <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-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#268bd2">dubbo</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">tracing</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">enabled</span>: <span style="color:#cb4b16">true</span> <span style="color:#586e75"># default is false</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">sampling</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">probability</span>: <span style="color:#2aa198">0.5</span> <span style="color:#586e75"># sampling rate, default is 0.1</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">propagation</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">type</span>: W3C <span style="color:#586e75"># W3C/B3 default is W3C</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">tracing-exporter</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">otlp-config</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">endpoint</span>: http://localhost:4317 |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">timeout</span>: 10s <span style="color:#586e75"># default is 10s</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">compression-method</span>: none <span style="color:#586e75"># none/gzip The method used to compress payloads, default is &#34;none&#34;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">headers</span>: <span style="color:#586e75"># customized added headers, default is empty</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">auth</span>: admin |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span><span style="color:#586e75"># tracing info output to logging</span> |
| </span></span><span style="display:flex;"><span><span style="color:#268bd2">logging</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">level</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">root</span>: info |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">pattern</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">console</span>: <span style="color:#2aa198">&#39;[%d{dd/MM/yy HH:mm:ss:SSS z}] %t %5p %c{2} [%X{traceId:-}, %X{spanId:-}]: %m%n&#39;</span> |
| </span></span></code></pre></div><h2 id="如何基于dubbo-api使用">如何基于Dubbo API使用</h2> |
| <h3 id="1-在你的项目中添加依赖-1">1. 在你的项目中添加依赖</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-xml" data-lang="xml"><span style="display:flex;"><span> <span style="color:#586e75">&lt;!-- 必选,dubbo-tracing核心依赖 --&gt;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;dependency&gt;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;groupId&gt;</span>org.apache.dubbo<span style="color:#268bd2">&lt;/groupId&gt;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;artifactId&gt;</span>dubbo-tracing<span style="color:#268bd2">&lt;/artifactId&gt;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;/dependency&gt;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#586e75">&lt;!-- Opentelemetry as Tracer --&gt;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;dependency&gt;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;groupId&gt;</span>io.micrometer<span style="color:#268bd2">&lt;/groupId&gt;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;artifactId&gt;</span>micrometer-tracing-bridge-otel<span style="color:#268bd2">&lt;/artifactId&gt;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;/dependency&gt;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#586e75">&lt;!-- OTlp as exporter --&gt;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;dependency&gt;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;groupId&gt;</span>io.opentelemetry<span style="color:#268bd2">&lt;/groupId&gt;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;artifactId&gt;</span>opentelemetry-exporter-otlp<span style="color:#268bd2">&lt;/artifactId&gt;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;/dependency&gt;</span> |
| </span></span></code></pre></div><h3 id="2-配置-1">2. 配置</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-java" data-lang="java"><span style="display:flex;"><span>TracingConfig tracingConfig <span style="color:#719e07">=</span> <span style="color:#719e07">new</span> TracingConfig<span style="color:#719e07">();</span> |
| </span></span><span style="display:flex;"><span><span style="color:#586e75">// 开启dubbo tracing |
| </span></span></span><span style="display:flex;"><span><span style="color:#586e75"></span>tracingConfig<span style="color:#719e07">.</span>setEnabled<span style="color:#719e07">(</span><span style="color:#cb4b16">true</span><span style="color:#719e07">);</span> |
| </span></span><span style="display:flex;"><span><span style="color:#586e75">// 设置采样率 |
| </span></span></span><span style="display:flex;"><span><span style="color:#586e75"></span>tracingConfig<span style="color:#719e07">.</span>setSampling<span style="color:#719e07">(</span><span style="color:#719e07">new</span> SamplingConfig<span style="color:#719e07">(</span>1<span style="color:#719e07">.</span>0f<span style="color:#719e07">));</span> |
| </span></span><span style="display:flex;"><span><span style="color:#586e75">// 设置Propagation,默认为W3C,可选W3C/B3 |
| </span></span></span><span style="display:flex;"><span><span style="color:#586e75"></span>tracingConfig<span style="color:#719e07">.</span>setPropagation<span style="color:#719e07">(</span><span style="color:#719e07">new</span> PropagationConfig<span style="color:#719e07">(</span><span style="color:#2aa198">&#34;W3C&#34;</span><span style="color:#719e07">));</span> |
| </span></span><span style="display:flex;"><span><span style="color:#586e75">// 设置trace上报 |
| </span></span></span><span style="display:flex;"><span><span style="color:#586e75"></span>ExporterConfig exporterConfig <span style="color:#719e07">=</span> <span style="color:#719e07">new</span> ExporterConfig<span style="color:#719e07">();</span> |
| </span></span><span style="display:flex;"><span><span style="color:#586e75">// 设置将trace上报到Zipkin |
| </span></span></span><span style="display:flex;"><span><span style="color:#586e75"></span>exporterConfig<span style="color:#719e07">.</span>setZipkin<span style="color:#719e07">(</span><span style="color:#719e07">new</span> ExporterConfig<span style="color:#719e07">.</span>OtlpConfig<span style="color:#719e07">(</span><span style="color:#2aa198">&#34;http://localhost:4317&#34;</span><span style="color:#719e07">,</span> Duration<span style="color:#719e07">.</span>ofSeconds<span style="color:#719e07">(</span>10<span style="color:#719e07">),</span> <span style="color:#2aa198">&#34;none&#34;</span><span style="color:#719e07">));</span> |
| </span></span><span style="display:flex;"><span>tracingConfig<span style="color:#719e07">.</span>setExporter<span style="color:#719e07">(</span>exporterConfig<span style="color:#719e07">);</span> |
| </span></span></code></pre></div></description></item><item><title>Overview: Zipkin</title><link>https://dubbo.apache.org/zh-cn/overview/tasks/observability/tracing/zipkin/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/tasks/observability/tracing/zipkin/</guid><description> |
| <p>这个示例演示了 Dubbo 集成 Zipkin 全链路追踪的基础示例,完整代码请参考 <a href="https://github.com/apache/dubbo-samples/tree/master/4-governance/dubbo-samples-spring-boot3-tracing" target="_blank">dubbo-samples-tracing-zipkin</a>,此示例共包含三部分内容:</p> |
| <ul> |
| <li>dubbo-samples-spring-boot3-tracing-provider</li> |
| <li>dubbo-samples-spring-boot3-tracing-consumer</li> |
| <li>dubbo-samples-spring-boot3-tracing-interface</li> |
| </ul> |
| <h2 id="快速开始">快速开始</h2> |
| <h3 id="安装--启动-zipkin">安装 &amp; 启动 Zipkin</h3> |
| <p>参考 <a href="https://zipkin.io/pages/quickstart.html">Zipkin&rsquo;s quick start</a> 安装 Zipkin。</p> |
| <p>这里我们使用 Docker 来掩饰如何快速的启动 Zipkin 服务。</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>docker run -d -p 9411:9411 --name zipkin openzipkin/zipkin |
| </span></span></code></pre></div><p>紧接着,你可以通过如下链接确认 Zipkin 正常工作 <code>[http://localhost:9411](http://localhost:9411)</code></p> |
| <p><img src="https://dubbo.apache.org/imgs/v3/tasks/observability/tracing/zipkin_home.png" alt="zipkin_home"></p> |
| <h3 id="安装--启动-nacos">安装 &amp; 启动 Nacos</h3> |
| <p>跟随 <a href="https://nacos.io/zh-cn/docs/v2/quickstart/quick-start.html">Nacos&rsquo;s quick start</a> 快速安装并启动 Nacos。</p> |
| <h3 id="启动示例-provider">启动示例 Provider</h3> |
| <p>在 IDE 中直接运行 <code>org.apache.dubbo.springboot.demo.provider.ProviderApplication</code>。</p> |
| <h3 id="启动示例-consumer">启动示例 Consumer</h3> |
| <p>在 IDE 中直接运行 <code>org.apache.dubbo.springboot.demo.consumer.ConsumerApplication</code>。</p> |
| <h3 id="检查监控效果">检查监控效果</h3> |
| <p>在浏览器中打开 <code>http://localhost:9411/zipkin/</code> 查看效果。</p> |
| <p><img src="https://dubbo.apache.org/imgs/v3/tasks/observability/tracing/zipkin.png" alt="zipkin.png"></p> |
| <h2 id="如何在springboot项目中使用-dubbo-tracing">如何在SpringBoot项目中使用 Dubbo Tracing</h2> |
| <h3 id="1-添加-dubbo-tracing-相关的-starter-依赖">1. 添加 Dubbo Tracing 相关的 Starter 依赖</h3> |
| <p>从下面两个 starter 中选择一个加入到你的项目中,区别在于 Tracer 的选型不一样,一个是 Opentelemetry,一个是 Brave:</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:#586e75">&lt;!-- Opentelemetry as Tracer, Zipkin as exporter --&gt;</span> |
| </span></span><span style="display:flex;"><span><span style="color:#268bd2">&lt;dependency&gt;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;groupId&gt;</span>org.apache.dubbo<span style="color:#268bd2">&lt;/groupId&gt;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;artifactId&gt;</span>dubbo-spring-boot-tracing-otel-zipkin-starter<span style="color:#268bd2">&lt;/artifactId&gt;</span> |
| </span></span><span style="display:flex;"><span><span style="color:#268bd2">&lt;/dependency&gt;</span> |
| </span></span></code></pre></div><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:#586e75">&lt;!-- Brave as Tracer, Zipkin as exporter --&gt;</span> |
| </span></span><span style="display:flex;"><span><span style="color:#268bd2">&lt;dependency&gt;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;groupId&gt;</span>org.apache.dubbo<span style="color:#268bd2">&lt;/groupId&gt;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;artifactId&gt;</span>dubbo-spring-boot-tracing-brave-zipkin-starter<span style="color:#268bd2">&lt;/artifactId&gt;</span> |
| </span></span><span style="display:flex;"><span><span style="color:#268bd2">&lt;/dependency&gt;</span> |
| </span></span></code></pre></div><h3 id="2-配置">2. 配置</h3> |
| <p>在application.yml中添加如下配置:</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-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#268bd2">dubbo</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">tracing</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">enabled</span>: <span style="color:#cb4b16">true</span> <span style="color:#586e75"># 默认为false</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">sampling</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">probability</span>: <span style="color:#2aa198">0.5</span> <span style="color:#586e75"># 采样率, 默认是 0.1</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">propagation</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">type</span>: W3C <span style="color:#586e75"># 传播器类型:W3C/B3 默认是W3C</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">tracing-exporter</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">zipkin-config</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">endpoint</span>: http://localhost:9411/api/v2/spans |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">connect-timeout</span>: 1s <span style="color:#586e75"># 建立连接超时时间, 默认为1s</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">read-timeout</span>: 10s <span style="color:#586e75"># 传递数据超时时间, 默认为10s</span> |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span><span style="color:#586e75"># tracing信息输出到logging</span> |
| </span></span><span style="display:flex;"><span><span style="color:#268bd2">logging</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">pattern</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">level</span>: <span style="color:#2aa198">&#39;%5p [${spring.application.name:},%X{traceId:-},%X{spanId:-}]&#39;</span> |
| </span></span></code></pre></div><h2 id="扩展">扩展</h2> |
| <h3 id="选择合适的sender">选择合适的Sender</h3> |
| <p>Zipkin 的 Sender,是 Exporter 将埋点后的数据进行上报的客户端实现,全部实现可<a href="https://github.com/openzipkin/zipkin-reporter-java">参考</a></p> |
| <p>Sender 有很多种实现:</p> |
| <ul> |
| <li>URLConnectionSender 通过 Java 自带的 HTTP 客户端上报</li> |
| <li>OkHttpSender 通过 OKHttp3 上报</li> |
| <li>KafkaSender 通过 Kafka 消息队列上报</li> |
| <li>ActiveMQSender 通过 ActiveMQ 消息队列上报</li> |
| <li>RabbitMQSender 通过 RabbitMQ 消息队列上报</li> |
| </ul> |
| <p>Dubbo Tracing 相关的 starter 目前默认是使用 OKHttpSender,也支持 URLConnectionSender,如果想通过 URLConnectionSender 向 Zipkin 发送 Spans,可直接在 pom 中添加如下依赖:</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:#268bd2">&lt;dependency&gt;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;groupId&gt;</span>io.zipkin.reporter2<span style="color:#268bd2">&lt;/groupId&gt;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;artifactId&gt;</span>zipkin-sender-urlconnection<span style="color:#268bd2">&lt;/artifactId&gt;</span> |
| </span></span><span style="display:flex;"><span><span style="color:#268bd2">&lt;/dependency&gt;</span> |
| </span></span></code></pre></div><p>配置 Zipkin 的 endpoint、connectTimeout、readTimeout</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-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#268bd2">dubbo</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">tracing</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">enabled</span>: <span style="color:#cb4b16">true</span> <span style="color:#586e75"># 默认为false</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">tracing-exporter</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">zipkin-config</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">endpoint</span>: http://localhost:9411/api/v2/spans |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">connect-timeout</span>: 1s <span style="color:#586e75"># 建立连接超时时间, 默认为1s</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">read-timeout</span>: 10s <span style="color:#586e75"># 传递数据超时时间, 默认为10s</span> |
| </span></span></code></pre></div><p>如果想使用其他类型的 Sender ,需要用户在项目中手动注入对应的 Bean,并配置对应的属性,如 KafkaSender:</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-java" data-lang="java"><span style="display:flex;"><span><span style="color:#268bd2">@Configuration</span> |
| </span></span><span style="display:flex;"><span><span style="color:#268bd2">public</span> <span style="color:#268bd2">class</span> <span style="color:#268bd2">KafkaSenderConfiguration</span> <span style="color:#719e07">{</span> |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">@Bean</span> |
| </span></span><span style="display:flex;"><span> KafkaSender <span style="color:#268bd2">kafkaSender</span><span style="color:#719e07">(){</span> |
| </span></span><span style="display:flex;"><span> KafkaSender<span style="color:#719e07">.</span>Builder builder <span style="color:#719e07">=</span> KafkaSender<span style="color:#719e07">.</span>newBuilder<span style="color:#719e07">();</span> |
| </span></span><span style="display:flex;"><span> builder<span style="color:#719e07">.</span>bootstrapServers<span style="color:#719e07">(</span><span style="color:#2aa198">&#34;127.0.0.0.1:9092&#34;</span><span style="color:#719e07">);</span> |
| </span></span><span style="display:flex;"><span> builder<span style="color:#719e07">.</span>topic<span style="color:#719e07">(</span><span style="color:#2aa198">&#34;zipkin&#34;</span><span style="color:#719e07">);</span> |
| </span></span><span style="display:flex;"><span> builder<span style="color:#719e07">.</span>encoding<span style="color:#719e07">(</span>Encoding<span style="color:#719e07">.</span>JSON<span style="color:#719e07">);</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#719e07">return</span> builder<span style="color:#719e07">.</span>build<span style="color:#719e07">();</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#719e07">}</span> |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span><span style="color:#719e07">}</span> |
| </span></span></code></pre></div><h3 id="springboot2案例">SpringBoot2案例</h3> |
| <p>dubbo-tracing相关的使用在SpringBoot2与3中区别不大,SpringBoot2的案例可参考<a href="https://github.com/conghuhu/dubbo-samples/tree/master/4-governance/dubbo-samples-tracing/dubbo-samples-spring-boot-tracing-zipkin">代码地址</a>。</p> |
| <h3 id="非springboot项目案例">非SpringBoot项目案例</h3> |
| <p>对于非SpringBoot项目,也可以使用 Dubbo Bootstrap 的 api 方式使用 tracing,详细案例可参考<a href="https://github.com/conghuhu/dubbo-samples/tree/master/4-governance/dubbo-samples-tracing/dubbo-sample-api-tracing-otel-zipkin">代码地址</a></p></description></item><item><title>Overview: Skywalking</title><link>https://dubbo.apache.org/zh-cn/overview/tasks/observability/tracing/skywalking/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/tasks/observability/tracing/skywalking/</guid><description> |
| <p>本文演示如何将 Dubbo 接入 Skywalking 全链路监控体系,完整示例请参考 <a href="https://github.com/apache/dubbo-samples/tree/master/4-governance/dubbo-samples-spring-boot-tracing-skywalking" target="_blank">dubbo-samples-tracing-skywalking</a>。依赖的 Skywalking Agent 版本为 <a href="https://skywalking.apache.org/docs/skywalking-java/next/en/setup/service-agent/java-agent/application-toolkit-micrometer-1.10/">skywalking micrometer-1.10 api</a>.</p> |
| <h2 id="1-添加-micrometer-observation-依赖到你的项目">1. 添加 Micrometer Observation 依赖到你的项目</h2> |
| <p>为了能够将 Micrometer 及相关 Metrics 依赖添加到 classpath,需要增加 <code>dubbo-metrics-api</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-xml" data-lang="xml"><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span><span style="color:#268bd2">&lt;dependency&gt;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;groupId&gt;</span>org.apache.dubbo<span style="color:#268bd2">&lt;/groupId&gt;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;artifactId&gt;</span>dubbo-metrics-api<span style="color:#268bd2">&lt;/artifactId&gt;</span> |
| </span></span><span style="display:flex;"><span><span style="color:#268bd2">&lt;/dependency&gt;</span> |
| </span></span></code></pre></div><h2 id="2-添加-skywalking-micrometer-110-api-到项目">2. 添加 Skywalking Micrometer-1.10 Api 到项目</h2> |
| <p>为了将 Dubbo Micrometer tracing 数据集成到 Skywalking,需要添加以下依赖。</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:#268bd2">&lt;dependency&gt;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;groupId&gt;</span>org.apache.skywalking<span style="color:#268bd2">&lt;/groupId&gt;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;artifactId&gt;</span>apm-toolkit-micrometer-1.10<span style="color:#268bd2">&lt;/artifactId&gt;</span> |
| </span></span><span style="display:flex;"><span><span style="color:#268bd2">&lt;/dependency&gt;</span> |
| </span></span></code></pre></div><h2 id="3-配置-observationregistry">3. 配置 ObservationRegistry</h2> |
| <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-java" data-lang="java"><span style="display:flex;"><span><span style="color:#268bd2">@Configuration</span> |
| </span></span><span style="display:flex;"><span><span style="color:#268bd2">public</span> <span style="color:#268bd2">class</span> <span style="color:#268bd2">ObservationConfiguration</span> <span style="color:#719e07">{</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">@Bean</span> |
| </span></span><span style="display:flex;"><span> ApplicationModel <span style="color:#268bd2">applicationModel</span><span style="color:#719e07">(</span>ObservationRegistry observationRegistry<span style="color:#719e07">)</span> <span style="color:#719e07">{</span> |
| </span></span><span style="display:flex;"><span> ApplicationModel applicationModel <span style="color:#719e07">=</span> ApplicationModel<span style="color:#719e07">.</span>defaultModel<span style="color:#719e07">();</span> |
| </span></span><span style="display:flex;"><span> observationRegistry<span style="color:#719e07">.</span>observationConfig<span style="color:#719e07">()</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#719e07">.</span>observationHandler<span style="color:#719e07">(</span><span style="color:#719e07">new</span> ObservationHandler<span style="color:#719e07">.</span>FirstMatchingCompositeObservationHandler<span style="color:#719e07">(</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#719e07">new</span> SkywalkingSenderTracingHandler<span style="color:#719e07">(),</span> <span style="color:#719e07">new</span> SkywalkingReceiverTracingHandler<span style="color:#719e07">(),</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#719e07">new</span> SkywalkingDefaultTracingHandler<span style="color:#719e07">()</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#719e07">));</span> |
| </span></span><span style="display:flex;"><span> applicationModel<span style="color:#719e07">.</span>getBeanFactory<span style="color:#719e07">().</span>registerBean<span style="color:#719e07">(</span>observationRegistry<span style="color:#719e07">);</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#719e07">return</span> applicationModel<span style="color:#719e07">;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#719e07">}</span> |
| </span></span><span style="display:flex;"><span><span style="color:#719e07">}</span> |
| </span></span></code></pre></div><h2 id="4-启-skywalking-oap">4. 启 Skywalking OAP</h2> |
| <p>请参考这里了解如何 <a href="https://skywalking.apache.org/docs/main/v9.3.0/en/setup/backend/backend-setup/">设置 Skywalking OAP</a></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-shell" data-lang="shell"><span style="display:flex;"><span>bash startup.sh |
| </span></span></code></pre></div><h2 id="5-启动示例-demo-skywalking-agent">5. 启动示例 Demo (skywalking-agent)</h2> |
| <p>首先,我们假设你已经有一个注册中心来协调地址发现,具体可参见示例里指向的注册中心配置。</p> |
| <p>之后,启动 Provider 和 Consumer 并确保 skywalking-agent 参数被正确设置,skywalking-agent 确保数据可以被正确的上报到后台系统。</p> |
| <ul> |
| <li>考虑到 skywalking-agent 本身也有内置的 Dubbo 拦截器,为了确保示例能使用 Dubbo 自带的 Micrometer 集成,我么你需要删除 skywalking-agent 自带的拦截器,直接将 <code>plugins</code> 目录删除即可</li> |
| <li>配置 Skywalking OAP 服务器地址,在以下文件中配置 OAP 地址 <code>/path/to/skywalking-agent/agent.config</code>,对应的参数项为 <code>collector.backend_service</code>。</li> |
| </ul> |
| <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-shell" data-lang="shell"><span style="display:flex;"><span>java -javaagent:/path/to/skywalking-agent/skywalking-agent.jar -jar dubbo-samples-spring-boot-tracing-skwalking-provider-1.0-SNAPSHOT.jar |
| </span></span></code></pre></div><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-shell" data-lang="shell"><span style="display:flex;"><span>java -javaagent:/path/to/skywalking-agent/skywalking-agent.jar -jar dubbo-samples-spring-boot-tracing-skwalking-consumer-1.0-SNAPSHOT.jar |
| </span></span></code></pre></div><h2 id="6-示例效果">6. 示例效果</h2> |
| <p>在浏览器中打开 <code>[skywalking-webapp](http://localhost:8080/)</code> 查看效果</p> |
| <p><img src="https://dubbo.apache.org/imgs/v3/tasks/observability/tracing/skywalking-trace-result-1.png" alt="skywalking-trace-result-1"> |
| <img src="https://dubbo.apache.org/imgs/v3/tasks/observability/tracing/skywalking-trace-result-2.png" alt="skywalking-trace-result-2"> |
| <img src="https://dubbo.apache.org/imgs/v3/tasks/observability/tracing/skywalking-trace-result-3.png" alt="skywalking-trace-result-2"></p></description></item></channel></rss> |