| <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/reference/integrations/</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/reference/integrations/index.xml" rel="self" type="application/rss+xml"/><item><title>Overview: Prometheus</title><link>https://dubbo.apache.org/zh-cn/overview/reference/integrations/prometheus/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/reference/integrations/prometheus/</guid><description> |
| <h2 id="安装">安装</h2> |
| <p>你可以使用 Dubbo 社区提供的示例配置快速安装 Prometheus。</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>kubectl create -f https://raw.githubusercontent.com/apache/dubbo-admin/refactor-with-go/deploy/kubernetes/prometheus.yaml |
| </span></span></code></pre></div><blockquote> |
| <p>本安装仅适用于测试或体验使用,生产级别的安装请参考 Prometheus 官方安装文档。</p> |
| </blockquote> |
| <p>执行端口映射 <code>kubectl -n dubbo-system port-forward svc/prometheus-server 9090:9090</code>,访问页面 <code>http://localhost:9090</code>,切换到 graph 视图。</p> |
| <p><img src="https://dubbo.apache.org/imgs/v3/reference/integrations/prometheus.jpg" alt="Prometheus"></p> |
| <h2 id="scrape-配置">Scrape 配置</h2> |
| <p>Dubbo 的每个实例都会暴露一个 http 端口用于 Metrics 采集,Prometheus 通过 scraping 每个实例的 http 接口来采集统计数据。具体的 scraping 路径可以通过 Prometheus 配置文件进行调整,该文件控制 scraping 实例的端口、路径、TLS 设置等。</p> |
| <h3 id="kubernetes-注解约定">Kubernetes 注解约定</h3> |
| <p>在 Kubernetes 部署模式下,使用官方社区维护的 <a href="https://github.com/prometheus-community/helm-charts">Helm Charts 安装 Prometheus</a>,Prometheus 服务可以自动识别包含 <code>prometheus.io</code> 注解的 Dubbo Pod 实例,并将它们列入 Scraping 实例列表。</p> |
| <p>Dubbo 官网给出的示例即是基于 <code>prometheus.io</code> 注解实现了 scraping target 地址的自动发现,具体注解配置可参见示例中的 <a href="https://github.com/apache/dubbo-samples/blob/master/4-governance/dubbo-samples-metrics-spring-boot/Deployment.yml">Deployment 资源定义</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-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#268bd2">annotations</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">prometheus.io/scrape</span>: <span style="color:#2aa198">&#34;true&#34;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">prometheus.io/path</span>: /management/prometheus |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">prometheus.io/port</span>: <span style="color:#2aa198">&#34;22222&#34;</span> |
| </span></span></code></pre></div><p>在此模式下,Dubbo 实例默认提供的 Prometheus Metrics 采集路径是:<code>/management/prometheus</code>。</p> |
| <h3 id="自定义配置">自定义配置</h3> |
| <p>对于已经安装好的 Prometheus 服务,可以通过 Dubbo Admin 提供的 Prometheus http_sd 服务发现接口来配置 Dubbo Metrics 采集的目标实例。可以参考 Admin 安装相关文档,安装完成后 Prometheus 侧需要调整的配置如下:</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">job_name</span>: <span style="color:#2aa198">&#39;dubbo&#39;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">http_sd_configs</span>: |
| </span></span><span style="display:flex;"><span> - <span style="color:#268bd2">url</span>: http://{admin-address}/api/dev/metrics/prometheus |
| </span></span></code></pre></div></description></item><item><title>Overview: Grafana</title><link>https://dubbo.apache.org/zh-cn/overview/reference/integrations/grafana/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/reference/integrations/grafana/</guid><description> |
| <p>Grafana 是一种开源的监控解决方案,可用于为 Dubbo 配置可视化仪表板,您可以使用 Grafana 来监控 Dubbo 集群的运行状况。</p> |
| <h2 id="配置可视化控制面板">配置可视化控制面板</h2> |
| <p>以下是 Dubbo 社区提供的默认指标面板,您配置好数据源并直接导入使用即可。如果默认面板不能满足要求,您还可以自定义 Grafana 面板。</p> |
| <ul> |
| <li><a href="https://grafana.com/grafana/dashboards/18469"><strong>Apache Dubbo Observability Dashboard:</strong></a></li> |
| <li><a href="https://grafana.com/grafana/dashboards/4701"><strong>JVM (Micrometer) Dashboard:</strong></a></li> |
| </ul> |
| <p>您可以通过以下几种方式快速的导入 Grafana 监控面板。</p> |
| <h3 id="方式一kubernetes-安装">方式一:Kubernetes 安装</h3> |
| <p>你可以使用 Dubbo 社区提供的示例配置快速安装 Grafana,安装后的 Grafana 提供了社区默认指标面板视图。</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>kubectl create -f https://raw.githubusercontent.com/apache/dubbo-admin/refactor-with-go/deploy/kubernetes/grafana.yaml |
| </span></span></code></pre></div><p>你可能需要端口映射获得访问地址 <code>$ kubectl port-forward service/grafana 3000:3000</code>,打开浏览器访问页面 <code>http://localhost:3000</code>。</p> |
| <blockquote> |
| <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>kubectl get secrets grafana -o <span style="color:#268bd2">jsonpath</span><span style="color:#719e07">=</span><span style="color:#2aa198">&#34;{.data.admin-user}&#34;</span> | base64 --decode ; <span style="color:#b58900">echo</span> <span style="color:#719e07">&amp;&amp;</span> kubectl get secrets grafana -o <span style="color:#268bd2">jsonpath</span><span style="color:#719e07">=</span><span style="color:#2aa198">&#34;{.data.admin-password}&#34;</span> | base64 --decode ; <span style="color:#b58900">echo</span> |
| </span></span></code></pre></div></blockquote> |
| <h3 id="方式二向已经安装好的集群导入-dashboard">方式二:向已经安装好的集群导入 dashboard</h3> |
| <p>如果你已经有安装好的 Grafana 服务了,则还可以通过 <a href="https://grafana.com/docs/grafana/v8.4/dashboards/export-import/#importing-a-dashboard">Grafana 控制台的导入菜单</a> 导入 dashboard。根据 Grafana 的要求,导入 dashboard 的过程中需要同时指定 Prometheus 数据源地址。</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-sh" data-lang="sh"><span style="display:flex;"><span>$ <span style="color:#586e75"># Address of Grafana</span> |
| </span></span><span style="display:flex;"><span>$ <span style="color:#268bd2">GRAFANA_HOST</span><span style="color:#719e07">=</span><span style="color:#2aa198">&#34;http://localhost:3000&#34;</span> |
| </span></span><span style="display:flex;"><span>$ <span style="color:#586e75"># Login credentials, if authentication is used</span> |
| </span></span><span style="display:flex;"><span>$ <span style="color:#268bd2">GRAFANA_CRED</span><span style="color:#719e07">=</span><span style="color:#2aa198">&#34;USER:PASSWORD&#34;</span> |
| </span></span><span style="display:flex;"><span>$ <span style="color:#586e75"># The name of the Prometheus data source to use</span> |
| </span></span><span style="display:flex;"><span>$ <span style="color:#268bd2">GRAFANA_DATASOURCE</span><span style="color:#719e07">=</span><span style="color:#2aa198">&#34;Prometheus&#34;</span> |
| </span></span><span style="display:flex;"><span>$ <span style="color:#586e75"># The version of Dubbo to deploy</span> |
| </span></span><span style="display:flex;"><span>$ <span style="color:#268bd2">VERSION</span><span style="color:#719e07">=</span>3.2.0 |
| </span></span><span style="display:flex;"><span>$ <span style="color:#586e75"># Import all Dubbo dashboards</span> |
| </span></span><span style="display:flex;"><span>$ <span style="color:#719e07">for</span> DASHBOARD in <span style="color:#2aa198">18469</span> 4701; <span style="color:#719e07">do</span> |
| </span></span><span style="display:flex;"><span>$ <span style="color:#586e75">#REVISION=&#34;$(curl -s https://grafana.com/api/dashboards/${DASHBOARD}/revisions -s | jq &#34;.items[] | select(.description | contains(\&#34;${VERSION}\&#34;)) | .revision&#34;)&#34;</span> |
| </span></span><span style="display:flex;"><span>$ <span style="color:#268bd2">REVISION</span><span style="color:#719e07">=</span><span style="color:#2aa198">1</span> |
| </span></span><span style="display:flex;"><span>$ curl -s https://grafana.com/api/dashboards/<span style="color:#2aa198">${</span><span style="color:#268bd2">DASHBOARD</span><span style="color:#2aa198">}</span>/revisions/<span style="color:#2aa198">${</span><span style="color:#268bd2">REVISION</span><span style="color:#2aa198">}</span>/download &gt; /tmp/dashboard.json |
| </span></span><span style="display:flex;"><span>$ <span style="color:#b58900">echo</span> <span style="color:#2aa198">&#34;Importing </span><span style="color:#719e07">$(</span>cat /tmp/dashboard.json | jq -r <span style="color:#2aa198">&#39;.title&#39;</span><span style="color:#719e07">)</span><span style="color:#2aa198"> (revision </span><span style="color:#2aa198">${</span><span style="color:#268bd2">REVISION</span><span style="color:#2aa198">}</span><span style="color:#2aa198">, id </span><span style="color:#2aa198">${</span><span style="color:#268bd2">DASHBOARD</span><span style="color:#2aa198">}</span><span style="color:#2aa198">)...&#34;</span> |
| </span></span><span style="display:flex;"><span>$ curl -s -k -u <span style="color:#2aa198">&#34;</span><span style="color:#268bd2">$GRAFANA_CRED</span><span style="color:#2aa198">&#34;</span> -XPOST <span style="color:#cb4b16">\ |
| </span></span></span><span style="display:flex;"><span><span style="color:#cb4b16"></span>$ -H <span style="color:#2aa198">&#34;Accept: application/json&#34;</span> <span style="color:#cb4b16">\ |
| </span></span></span><span style="display:flex;"><span><span style="color:#cb4b16"></span>$ -H <span style="color:#2aa198">&#34;Content-Type: application/json&#34;</span> <span style="color:#cb4b16">\ |
| </span></span></span><span style="display:flex;"><span><span style="color:#cb4b16"></span>$ -d <span style="color:#2aa198">&#34;{\&#34;dashboard\&#34;:</span><span style="color:#719e07">$(</span>cat /tmp/dashboard.json<span style="color:#719e07">)</span><span style="color:#2aa198">,\&#34;overwrite\&#34;:true, \ |
| </span></span></span><span style="display:flex;"><span><span style="color:#2aa198"></span>$<span style="color:#2aa198"> \&#34;inputs\&#34;:[{\&#34;name\&#34;:\&#34;DS_PROMETHEUS\&#34;,\&#34;type\&#34;:\&#34;datasource\&#34;, \ |
| </span></span></span><span style="display:flex;"><span><span style="color:#2aa198"></span>$<span style="color:#2aa198"> \&#34;pluginId\&#34;:\&#34;prometheus\&#34;,\&#34;value\&#34;:\&#34;</span><span style="color:#268bd2">$GRAFANA_DATASOURCE</span><span style="color:#2aa198">\&#34;}]}&#34;</span> <span style="color:#cb4b16">\ |
| </span></span></span><span style="display:flex;"><span><span style="color:#cb4b16"></span>$ <span style="color:#268bd2">$GRAFANA_HOST</span>/api/dashboards/import |
| </span></span><span style="display:flex;"><span>$ <span style="color:#b58900">echo</span> -e <span style="color:#2aa198">&#34;\nDone\n&#34;</span> |
| </span></span><span style="display:flex;"><span>$ <span style="color:#719e07">done</span> |
| </span></span></code></pre></div><h3 id="方式三自定义">方式三:自定义</h3> |
| <p>Grafana 可以通过其他方法进行安装和配置,可以参阅有关安装方法的文档了解如何制作和导入 Dubbo 检测面板</p> |
| <ul> |
| <li><a href="https://grafana.com/docs/grafana/latest/administration/provisioning/#dashboards">Grafana provisioning 官方文档</a></li> |
| <li><a href="https://github.com/helm/charts/tree/master/stable/grafana#import-dashboards">为 <code>stable/grafana</code> Helm chart 导入面板</a></li> |
| </ul></description></item><item><title>Overview: Skywalking</title><link>https://dubbo.apache.org/zh-cn/overview/reference/integrations/skywalking/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/reference/integrations/skywalking/</guid><description> |
| <h2 id="安装">安装</h2> |
| <p>你可以使用 Dubbo 社区提供的示例配置快速安装 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-bash" data-lang="bash"><span style="display:flex;"><span>kubectl create -f https://raw.githubusercontent.com/apache/dubbo-admin/refactor-with-go/deploy/kubernetes/skywalking.yaml |
| </span></span></code></pre></div><blockquote> |
| <p>本安装仅适用于测试或体验使用,生产级别的安装请参考 Skywalking 官方安装文档。</p> |
| </blockquote></description></item><item><title>Overview: Zipkin</title><link>https://dubbo.apache.org/zh-cn/overview/reference/integrations/zipkin/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/reference/integrations/zipkin/</guid><description> |
| <h2 id="安装">安装</h2> |
| <p>你可以使用 Dubbo 社区提供的示例配置快速安装 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>kubectl create -f https://raw.githubusercontent.com/apache/dubbo-admin/refactor-with-go/deploy/kubernetes/zipkin.yaml |
| </span></span></code></pre></div><blockquote> |
| <p>本安装仅适用于测试或体验使用,生产级别的安装请参考 Zipkin 官方安装文档。</p> |
| </blockquote></description></item></channel></rss> |