You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by gi...@apache.org on 2026/08/09 04:52:25 UTC
(dubbo-website) branch cn-site updated: deploy: 343f94b02819309762662afdfbc09743595e2c5a
This is an automated email from the ASF dual-hosted git repository.
github-actions[bot] pushed a commit to branch cn-site
in repository https://gitbox.apache.org/repos/asf/dubbo-website.git
The following commit(s) were added to refs/heads/cn-site by this push:
new 69c1e82b92c deploy: 343f94b02819309762662afdfbc09743595e2c5a
69c1e82b92c is described below
commit 69c1e82b92ca9983d8a516baf4cd6a611c6827de
Author: Alanxtl <Al...@users.noreply.github.com>
AuthorDate: Sun Aug 9 04:52:18 2026 +0000
deploy: 343f94b02819309762662afdfbc09743595e2c5a
---
css/app.css | 2 +-
css/chunk-vendors.css | 2 +-
en/index.xml | 25 ++--
.../golang-sdk/tutorial/observability/index.xml | 25 ++--
.../tutorial/observability/rpc_metrics/index.html | 141 ++++++++++----------
en/sitemap.xml | 2 +-
js/app.js | 3 +-
js/chunk-vendors.js | 61 +--------
sitemap.xml | 2 +-
zh-cn/index.xml | 74 +++++------
.../golang-sdk/tutorial/observability/index.xml | 74 +++++------
.../tutorial/observability/rpc_metrics/index.html | 142 +++++++++++----------
zh-cn/sitemap.xml | 2 +-
13 files changed, 247 insertions(+), 308 deletions(-)
diff --git a/css/app.css b/css/app.css
index 44c2a2c2469..b9457c8de14 100644
--- a/css/app.css
+++ b/css/app.css
@@ -1 +1 @@
-h3[data-v-76eccb7f]{margin:40px 0 0}ul[data-v-76eccb7f]{list-style-type:none;padding:0}li[data-v-76eccb7f]{display:inline-block;margin:0 10px}a[data-v-76eccb7f]{color:#42b983}.form-layout[data-v-76eccb7f]{display:flex;justify-content:space-between;align-items:flex-start}.left-form[data-v-76eccb7f]{flex:1;max-width:calc(50% - 20px);margin-right:20px}.right-text[data-v-76eccb7f]{flex-shrink:0;width:calc(50% - 20px)}.left-form .el-form-item__label[data-v-76eccb7f]{text-align:left}.left-form [...]
\ No newline at end of file
+/*Respond to static link checks, which will be dynamically replaced at build time*/
\ No newline at end of file
diff --git a/css/chunk-vendors.css b/css/chunk-vendors.css
index 61c66238ea8..b9457c8de14 100644
--- a/css/chunk-vendors.css
+++ b/css/chunk-vendors.css
@@ -1 +1 @@
-@font-face{font-family:element-icons;src:url(../fonts/element-icons.ff18efd1.woff) format("woff"),url(../fonts/element-icons.f1a45d74.ttf) format("truetype");font-weight:400;font-display:"auto";font-style:normal}[class*=" el-icon-"],[class^=el-icon-]{font-family:element-icons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;vertical-align:baseline;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:gr [...]
\ No newline at end of file
+/*Respond to static link checks, which will be dynamically replaced at build time*/
\ No newline at end of file
diff --git a/en/index.xml b/en/index.xml
index a4553a7071f..17c107c61ed 100644
--- a/en/index.xml
+++ b/en/index.xml
@@ -2732,21 +2732,20 @@ This example will demonstrate how to compile the dubbo-pilot control plane and h
</span></span></code></pre></div><h3 id="dubbo-response-log">Dubbo response log</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-bash" data-lang="bash"><span style="display:flex;"><span>2020-11-17T11:31:05.718+0800 DEBUG dubbo/dubbo.go:160 <span style="color:#719e07">[</span>dubbo-go-pixiu<span style="color:#719e07">]</span> dubbo client resp:map<span style="color:#719e07">[</span>age:88 iD:3213 name [...]
</span></span></code></pre></div></description></item><item><title>Metrics Monitoring</title><link>https://cn.dubbo.apache.org/en/overview/mannual/golang-sdk/tutorial/observability/rpc_metrics/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cn.dubbo.apache.org/en/overview/mannual/golang-sdk/tutorial/observability/rpc_metrics/</guid><description><h1 id="dubbo-go-metrics-monitoring">Dubbo-Go Metrics Monitoring</h1>
-<p>Dubbo-Go supports runtime metrics collection and integration with <strong>Prometheus + Grafana</strong> to build observability for microservices.</p>
-<p>This example covers two monitoring modes:</p>
-<ul>
-<li><strong>Pull Mode</strong>: Prometheus scrapes metrics from Dubbo-Go applications. Recommended for long-running services.</li>
-<li><strong>Push Mode</strong>: Dubbo-Go applications push metrics to Pushgateway. Recommended only for short-lived jobs.</li>
-</ul>
-<p>Example source code:</p>
+<p>Dubbo-Go can collect runtime metrics for RPC calls, metadata, registries, config centers, and other components. This guide uses <a href="https://github.com/apache/dubbo-go-samples/tree/main/observability/prometheus_grafana" target="_blank">dubbo-go-samples/observability/prometheus_grafana</a> to show both Prometheus Pull mode and Pushgateway mode.</p>
<blockquote>
-<p><a href="https://github.com/apache/dubbo-go-samples/tree/main/metrics">https://github.com/apache/dubbo-go-samples/tree/main/metrics</a></p>
+<p>Note: some older descriptions may still mention <code>metrics/prometheus_grafana</code>. The current sample directory is <code>observability/prometheus_grafana</code>.</p>
</blockquote>
-<h2 id="1-monitoring-architecture">1. Monitoring Architecture</h2>
-<h3 id="11-pull-mode-recommended-for-production">1.1 Pull Mode (Recommended for production)</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>Dubbo-Go Application ---&gt; Prometheus ---&gt; Grafana
-</span></span><span style="display:flex;"><span> (exposes /metrics or /prometheus endpoint)
-</span></span></code></pre></div><p>Prometheus actively scrapes metrics from Dubbo-Go applications.</p></description></item><item><title>Nacos</title><link>https://cn.dubbo.apache.org/en/overview/mannual/java-sdk/reference-manual/metadata-center/nacos/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cn.dubbo.apache.org/en/overview/mannual/java-sdk/reference-manual/metadata-center/nacos/</guid><description><h2 id="1-prepar [...]
+<h2 id="1-monitoring-modes">1. Monitoring Modes</h2>
+<h3 id="11-pull-mode">1.1 Pull Mode</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-text" data-lang="text"><span style="display:flex;"><span>Dubbo-Go application exposes /prometheus or /metrics
+</span></span><span style="display:flex;"><span> |
+</span></span><span style="display:flex;"><span> v
+</span></span><span style="display:flex;"><span>Prometheus scrapes the application
+</span></span><span style="display:flex;"><span> |
+</span></span><span style="display:flex;"><span> v
+</span></span><span style="display:flex;"><span>Grafana queries Prometheus and renders dashboards
+</span></span></code></pre></div><p>Pull mode is the standard Prometheus model and is recommended for long-running Dubbo-Go providers and consumers. In this sample:</p></description></item><item><title>Nacos</title><link>https://cn.dubbo.apache.org/en/overview/mannual/java-sdk/reference-manual/metadata-center/nacos/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cn.dubbo.apache.org/en/overview/mannual/java-sdk/reference-man [...]
<ul>
<li>Understand <a href="https://cn.dubbo.apache.org/en/overview/mannual/java-sdk/quick-start/spring-boot/">Dubbo basic development steps</a></li>
<li>Refer to <a href="https://cn.dubbo.apache.org/en/overview/reference/integrations/nacos/">Nacos</a> to start Nacos server</li>
diff --git a/en/overview/mannual/golang-sdk/tutorial/observability/index.xml b/en/overview/mannual/golang-sdk/tutorial/observability/index.xml
index 10ab5931255..990fcee5925 100644
--- a/en/overview/mannual/golang-sdk/tutorial/observability/index.xml
+++ b/en/overview/mannual/golang-sdk/tutorial/observability/index.xml
@@ -10,21 +10,20 @@
<h2 id="1-log-configuration">1. Log Configuration</h2>
<p>As shown below, you can set the dubbo framework log behavior using <code>log.WithZap()</code> and <code>log.WithLevel(&quot;warn&quot;)</code>:</p></description></item><item><title>Metrics Monitoring</title><link>https://cn.dubbo.apache.org/en/overview/mannual/golang-sdk/tutorial/observability/rpc_metrics/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cn.dubbo.apache.org/en/overview/mannual/golang-sdk/tutorial/observa [...]
-<p>Dubbo-Go supports runtime metrics collection and integration with <strong>Prometheus + Grafana</strong> to build observability for microservices.</p>
-<p>This example covers two monitoring modes:</p>
-<ul>
-<li><strong>Pull Mode</strong>: Prometheus scrapes metrics from Dubbo-Go applications. Recommended for long-running services.</li>
-<li><strong>Push Mode</strong>: Dubbo-Go applications push metrics to Pushgateway. Recommended only for short-lived jobs.</li>
-</ul>
-<p>Example source code:</p>
+<p>Dubbo-Go can collect runtime metrics for RPC calls, metadata, registries, config centers, and other components. This guide uses <a href="https://github.com/apache/dubbo-go-samples/tree/main/observability/prometheus_grafana" target="_blank">dubbo-go-samples/observability/prometheus_grafana</a> to show both Prometheus Pull mode and Pushgateway mode.</p>
<blockquote>
-<p><a href="https://github.com/apache/dubbo-go-samples/tree/main/metrics">https://github.com/apache/dubbo-go-samples/tree/main/metrics</a></p>
+<p>Note: some older descriptions may still mention <code>metrics/prometheus_grafana</code>. The current sample directory is <code>observability/prometheus_grafana</code>.</p>
</blockquote>
-<h2 id="1-monitoring-architecture">1. Monitoring Architecture</h2>
-<h3 id="11-pull-mode-recommended-for-production">1.1 Pull Mode (Recommended for production)</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>Dubbo-Go Application ---&gt; Prometheus ---&gt; Grafana
-</span></span><span style="display:flex;"><span> (exposes /metrics or /prometheus endpoint)
-</span></span></code></pre></div><p>Prometheus actively scrapes metrics from Dubbo-Go applications.</p></description></item><item><title>Link Tracing</title><link>https://cn.dubbo.apache.org/en/overview/mannual/golang-sdk/tutorial/observability/tracing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cn.dubbo.apache.org/en/overview/mannual/golang-sdk/tutorial/observability/tracing/</guid><description><p>Dubbo-go suppor [...]
+<h2 id="1-monitoring-modes">1. Monitoring Modes</h2>
+<h3 id="11-pull-mode">1.1 Pull Mode</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-text" data-lang="text"><span style="display:flex;"><span>Dubbo-Go application exposes /prometheus or /metrics
+</span></span><span style="display:flex;"><span> |
+</span></span><span style="display:flex;"><span> v
+</span></span><span style="display:flex;"><span>Prometheus scrapes the application
+</span></span><span style="display:flex;"><span> |
+</span></span><span style="display:flex;"><span> v
+</span></span><span style="display:flex;"><span>Grafana queries Prometheus and renders dashboards
+</span></span></code></pre></div><p>Pull mode is the standard Prometheus model and is recommended for long-running Dubbo-Go providers and consumers. In this sample:</p></description></item><item><title>Link Tracing</title><link>https://cn.dubbo.apache.org/en/overview/mannual/golang-sdk/tutorial/observability/tracing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cn.dubbo.apache.org/en/overview/mannual/golang-sdk/tutorial/o [...]
<ul>
<li><a href="https://opentelemetry.io/docs/specs/otel/logs/sdk_exporters/stdout/">Stdout exporter</a></li>
<li><a href="https://opentelemetry.io/docs/languages/js/exporters/#jaeger">Jaeger exporter</a></li>
diff --git a/en/overview/mannual/golang-sdk/tutorial/observability/rpc_metrics/index.html b/en/overview/mannual/golang-sdk/tutorial/observability/rpc_metrics/index.html
index fc774463ee6..f242970c113 100644
--- a/en/overview/mannual/golang-sdk/tutorial/observability/rpc_metrics/index.html
+++ b/en/overview/mannual/golang-sdk/tutorial/observability/rpc_metrics/index.html
@@ -1,4 +1,4 @@
-<!doctype html><html lang=en class=no-js><head><meta name=ROBOTS content="INDEX, FOLLOW"><link rel=alternate hreflang=zh-cn href=https://cn.dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/observability/rpc_metrics/><link rel=canonical href=https://cn.dubbo.apache.org/en/overview/mannual/golang-sdk/tutorial/observability/rpc_metrics/><script>var _paq=window._paq=window._paq||[];_paq.push(["setDocumentTitle",document.domain+"/"+document.title]),_paq.push(["setCookieDomain","*.d [...]
+<!doctype html><html lang=en class=no-js><head><meta name=ROBOTS content="INDEX, FOLLOW"><link rel=alternate hreflang=zh-cn href=https://cn.dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/observability/rpc_metrics/><link rel=canonical href=https://cn.dubbo.apache.org/en/overview/mannual/golang-sdk/tutorial/observability/rpc_metrics/><script>var _paq=window._paq=window._paq||[];_paq.push(["setDocumentTitle",document.domain+"/"+document.title]),_paq.push(["setCookieDomain","*.d [...]
<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
<a class=dropdown-item href=/en/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/blog/><span>Blog</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true aria-expanded=false>ECOSYSTEM</ [...]
<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
@@ -693,76 +693,89 @@
<label for=m-enoverviewnoticesprotocol-check><a href=/en/overview/notices/protocol/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewnoticesprotocol><span>RPC Protocol Security</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewnoticesregistry-li><input type=checkbox id=m-enoverviewnoticesregistry-check>
<label for=m-enoverviewnoticesregistry-check><a href=/en/overview/notices/registry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewnoticesregistry><span>Registry Center Security</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewnoticesadmin-li><input type=checkbox id=m-enoverviewnoticesadmin-check>
<label for=m-enoverviewnoticesadmin-check><a href=/en/overview/notices/admin/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewnoticesadmin><span>Dubbo Admin Security</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enoverviewnoticeslog4j-li><input type=checkbox id=m-enoverviewnoticeslog4j-check>
-<label for=m-enoverviewnoticeslog4j-check><a href=/en/overview/notices/log4j/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewnoticeslog4j><span>Log4j Vulnerability Impact</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/overview/>Documentation</a></li><li class=breadcrumb-item><a [...]
-</span></span><span style=display:flex><span> (exposes /metrics or /prometheus endpoint)
-</span></span></code></pre></div><p>Prometheus actively scrapes metrics from Dubbo-Go applications.</p><h3 id=12-push-mode-for-short-lived-jobs>1.2 Push Mode (For short-lived jobs)</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>Dubbo-Go Application ---> Pushgateway ---> Prometheus ---> Grafana
-</span></span></code></pre></div><p>Applications push metrics to Pushgateway. Prometheus scrapes Pushgateway.</p><p>Pushgateway is designed for <strong>short-lived jobs (batch / cron)</strong> and is not recommended for long-running services.</p><h2 id=2-components-overview>2. Components Overview</h2><table><thead><tr><th>Component</th><th>Port</th><th>Description</th></tr></thead><tbody><tr><td>Grafana</td><td>3000</td><td>Metrics visualization dashboard</td></tr><tr><td>Prometheus</td> [...]
-</span></span></code></pre></div><p>Start services:</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-compose up -d
-</span></span></code></pre></div><p>Access:</p><ul><li>Grafana: <a href=http://localhost:3000>http://localhost:3000</a></li><li>Prometheus: <a href=http://localhost:9090>http://localhost:9090</a></li><li>Pushgateway: <a href=http://localhost:9091>http://localhost:9091</a></li></ul><h3 id=32-configure-environment-variables>3.2 Configure Environment Variables</h3><p>Both client and server share the same configuration:</p><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-c [...]
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span><span style=color:#586e75># Required for Push mode</span>
+<label for=m-enoverviewnoticeslog4j-check><a href=/en/overview/notices/log4j/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enoverviewnoticeslog4j><span>Log4j Vulnerability Impact</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/overview/>Documentation</a></li><li class=breadcrumb-item><a [...]
+</span></span><span style=display:flex><span> |
+</span></span><span style=display:flex><span> v
+</span></span><span style=display:flex><span>Prometheus scrapes the application
+</span></span><span style=display:flex><span> |
+</span></span><span style=display:flex><span> v
+</span></span><span style=display:flex><span>Grafana queries Prometheus and renders dashboards
+</span></span></code></pre></div><p>Pull mode is the standard Prometheus model and is recommended for long-running Dubbo-Go providers and consumers. In this sample:</p><table><thead><tr><th>Application</th><th>Metrics endpoint</th></tr></thead><tbody><tr><td>go-server</td><td><code>http://localhost:9099/prometheus</code></td></tr><tr><td>go-client</td><td><code>http://localhost:9097/prometheus</code></td></tr></tbody></table><p>The Dubbo-Go default metrics endpoint is <code>http://localh [...]
+</span></span><span style=display:flex><span> |
+</span></span><span style=display:flex><span> v
+</span></span><span style=display:flex><span>Pushgateway stores the metrics temporarily
+</span></span><span style=display:flex><span> |
+</span></span><span style=display:flex><span> v
+</span></span><span style=display:flex><span>Prometheus scrapes Pushgateway
+</span></span><span style=display:flex><span> |
+</span></span><span style=display:flex><span> v
+</span></span><span style=display:flex><span>Grafana queries Prometheus and renders dashboards
+</span></span></code></pre></div><p>Pushgateway is better suited to short-lived jobs such as batch or cron jobs. Prefer Pull mode for long-running services. If you use Pushgateway, configure cleanup so stale metrics do not remain after a job exits.</p><h2 id=2-prepare-the-sample>2. Prepare the Sample</h2><p>Clone the samples repository and enter the sample directory:</p><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-siz [...]
+</span></span><span style=display:flex><span><span style=color:#b58900>cd</span> dubbo-go-samples/observability/prometheus_grafana
+</span></span></code></pre></div><p>The directory contains:</p><table><thead><tr><th>File or directory</th><th>Description</th></tr></thead><tbody><tr><td><code>docker-compose.yml</code></td><td>Starts ZooKeeper, Prometheus, Pushgateway, and Grafana</td></tr><tr><td><code>prometheus_pull.yml</code></td><td>Prometheus configuration for Pull mode</td></tr><tr><td><code>prometheus_push.yml</code></td><td>Prometheus configuration for Pushgateway mode</td></tr><tr><td><code>go-server/cmd/main [...]
+</span></span></code></pre></div><p>If your environment still uses Docker Compose v1, run:</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-compose up -d
+</span></span></code></pre></div><p>After startup, visit:</p><table><thead><tr><th>Component</th><th>URL</th></tr></thead><tbody><tr><td>Grafana</td><td><code>http://localhost:3000</code></td></tr><tr><td>Prometheus</td><td><code>http://localhost:9090</code></td></tr><tr><td>Pushgateway</td><td><code>http://localhost:9091</code></td></tr><tr><td>ZooKeeper</td><td><code>127.0.0.1:2181</code></td></tr></tbody></table><h2 id=3-pull-mode-workflow>3. Pull Mode Workflow</h2><p><code>docker-com [...]
+</span></span></code></pre></div><p>For Windows PowerShell:</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-powershell data-lang=powershell><span style=display:flex><span><span style=color:#268bd2>$env:ZK_ADDRESS</span>=<span style=color:#2aa198>"127.0.0.1:2181"</span>
+</span></span></code></pre></div><ol start=2><li>Start the provider:</li></ol><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>go run ./go-server/cmd/main.go --push<span style=color:#719e07>=</span><span style=color:#b58900>false</span>
+</span></span></code></pre></div><ol start=3><li>Open another terminal, enter the same directory, and start the consumer:</li></ol><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><span style=color:#b58900>cd</span> dubbo-go-samples/observability/prometheus_grafana
+</span></span><span style=display:flex><span><span style=color:#b58900>export</span> <span style=color:#268bd2>ZK_ADDRESS</span><span style=color:#719e07>=</span><span style=color:#2aa198>"127.0.0.1:2181"</span>
+</span></span><span style=display:flex><span>go run ./go-client/cmd/main.go --push<span style=color:#719e07>=</span><span style=color:#b58900>false</span>
+</span></span></code></pre></div><ol start=4><li>Visit the metrics endpoints exposed by the applications:</li></ol><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>curl http://localhost:9099/prometheus
+</span></span><span style=display:flex><span>curl http://localhost:9097/prometheus
+</span></span></code></pre></div><p>The output includes metrics such as <code>dubbo_provider_</code>, <code>dubbo_consumer_</code>, and <code>dubbo_application_</code>. For example:</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-text data-lang=text><span style=display:flex><span>dubbo_provider_requests_total
+</span></span><span style=display:flex><span>dubbo_consumer_requests_succeed_total
+</span></span></code></pre></div><ol start=5><li>Open <code>http://localhost:9090/targets</code> and verify that <code>dubbo-provider</code> and <code>dubbo-consumer</code> are <code>UP</code>.</li></ol><h2 id=4-pushgateway-mode-workflow>4. Pushgateway Mode Workflow</h2><p>In Pushgateway mode, Prometheus scrapes Pushgateway instead of scraping the Dubbo-Go applications directly.</p><ol><li>Change the Prometheus volume in <code>docker-compose.yml</code> from the Pull configuration to the [...]
+</span></span><span style=display:flex><span> - ./prometheus_push.yml:/etc/prometheus/prometheus.yml
+</span></span></code></pre></div><ol start=2><li>Restart the monitoring stack:</li></ol><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 compose down
+</span></span><span style=display:flex><span>docker compose up -d
+</span></span></code></pre></div><ol start=3><li>Set environment variables:</li></ol><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><span style=color:#b58900>export</span> <span style=color:#268bd2>ZK_ADDRESS</span><span style=color:#719e07>=</span><span style=color:#2aa198>"127.0.0.1:2181"</span>
</span></span><span style=display:flex><span><span style=color:#b58900>export</span> <span style=color:#268bd2>PUSHGATEWAY_URL</span><span style=color:#719e07>=</span><span style=color:#2aa198>"127.0.0.1:9091"</span>
</span></span><span style=display:flex><span><span style=color:#b58900>export</span> <span style=color:#268bd2>JOB_NAME</span><span style=color:#719e07>=</span><span style=color:#2aa198>"dubbo-service"</span>
</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span><span style=color:#586e75># Optional</span>
+</span></span><span style=display:flex><span><span style=color:#586e75># Set these only when Pushgateway uses Basic Auth</span>
</span></span><span style=display:flex><span><span style=color:#b58900>export</span> <span style=color:#268bd2>PUSHGATEWAY_USER</span><span style=color:#719e07>=</span><span style=color:#2aa198>"username"</span>
</span></span><span style=display:flex><span><span style=color:#b58900>export</span> <span style=color:#268bd2>PUSHGATEWAY_PASS</span><span style=color:#719e07>=</span><span style=color:#2aa198>"1234"</span>
-</span></span></code></pre></div><h3 id=33-start-dubbo-go-server>3.3 Start Dubbo-Go Server</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-bash data-lang=bash><span style=display:flex><span>go run ./go-server/cmd/main.go
-</span></span></code></pre></div><h3 id=34-start-dubbo-go-client>3.4 Start Dubbo-Go Client</h3><h4 id=default-push-mode>Default (Push Mode)</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-bash data-lang=bash><span style=display:flex><span>go run ./go-client/cmd/main.go
-</span></span></code></pre></div><h4 id=pull-mode>Pull Mode</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-bash data-lang=bash><span style=display:flex><span>go run ./go-client/cmd/main.go --push<span style=color:#719e07>=</span><span style=color:#b58900>false</span>
-</span></span><span style=display:flex><span>go run ./go-server/cmd/main.go --push<span style=color:#719e07>=</span><span style=color:#b58900>false</span>
-</span></span></code></pre></div><h3 id=35-verify-metrics>3.5 Verify Metrics</h3><h4 id=push-mode>Push Mode</h4><p>Open:</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>http://localhost:9091/metrics
-</span></span></code></pre></div><h4 id=pull-mode-1>Pull Mode</h4><p><code><app_port></code> means the HTTP metrics port exposed by the Dubbo-Go application itself, not the Prometheus or Pushgateway port.</p><p>In this sample:</p><ul><li>Provider: <code>http://localhost:9099/prometheus</code></li><li>Consumer: <code>http://localhost:9097/prometheus</code></li></ul><p>These ports are defined in <a href=https://github.com/apache/dubbo-go-samples/blob/main/metrics/prometheus_grafana/prom [...]
-</span></span></code></pre></div><ol start=4><li>Click <strong>Add new data source</strong></li><li>Select <strong>Prometheus</strong></li><li>Enter:</li></ol><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>http://host.docker.internal:9090
-</span></span></code></pre></div><blockquote><p>Note: <code>host.docker.internal</code> allows Docker containers to access the host network. Replace with your actual IP if necessary.</p></blockquote><ol start=7><li>Click <strong>Save & Test</strong></li></ol><h3 id=42-import-dubbo-dashboard>4.2 Import Dubbo Dashboard</h3><ol><li>Navigate to:</li></ol><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=lang [...]
-</span></span></code></pre></div><ol start=2><li>Import the dashboard with one of these methods:</li></ol><ul><li>Upload <a href=https://github.com/apache/dubbo-go-samples/blob/main/metrics/prometheus_grafana/grafana.json><code>grafana.json</code></a> from the sample directory</li><li>Enter Grafana dashboard ID <code>19294</code> (<code>Dubbo Observability</code>) and click <strong>Load</strong></li><li>Or download the JSON from <a href=https://grafana.com/grafana/dashboards/19294-dubbo- [...]
-</span></span></code></pre></div><p>returns results</p><h3 id=62-hostdockerinternal-not-reachable>6.2 host.docker.internal Not Reachable</h3><p>Replace it with your actual host IP:</p><ul><li>Update <code>metrics/prometheus_grafana/prometheus_pull.yml</code></li><li>Update Grafana data source URL</li></ul><h2 id=7-kubernetes-deployment>7. Kubernetes Deployment</h2><p>Recommended:</p><blockquote><p>kube-prometheus
-<a href=https://github.com/prometheus-operator/kube-prometheus>https://github.com/prometheus-operator/kube-prometheus</a></p></blockquote><h3 id=71-create-podmonitor>7.1 Create PodMonitor</h3><p>Create <code>dubboPodMonitor.yaml</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-yaml data-lang=yaml><span style=display:flex><span><span style=color:#268bd2>apiVersion</span>: monitoring.c [...]
-</span></span><span style=display:flex><span><span style=color:#268bd2>kind</span>: PodMonitor
-</span></span><span style=display:flex><span><span style=color:#268bd2>metadata</span>:
-</span></span><span style=display:flex><span> <span style=color:#268bd2>name</span>: dubbo-pod-monitor
-</span></span><span style=display:flex><span> <span style=color:#268bd2>namespace</span>: monitoring
-</span></span><span style=display:flex><span><span style=color:#268bd2>spec</span>:
-</span></span><span style=display:flex><span> <span style=color:#268bd2>namespaceSelector</span>:
-</span></span><span style=display:flex><span> <span style=color:#268bd2>matchNames</span>:
-</span></span><span style=display:flex><span> - dubbo-system
-</span></span><span style=display:flex><span> <span style=color:#268bd2>selector</span>:
-</span></span><span style=display:flex><span> <span style=color:#268bd2>matchLabels</span>:
-</span></span><span style=display:flex><span> <span style=color:#268bd2>app-type</span>: dubbo
-</span></span><span style=display:flex><span> <span style=color:#268bd2>podMetricsEndpoints</span>:
-</span></span><span style=display:flex><span> - <span style=color:#268bd2>port</span>: metrics
-</span></span><span style=display:flex><span> <span style=color:#268bd2>path</span>: /prometheus
-</span></span></code></pre></div><h3 id=72-optional-add-rbac-permissions-when-rbac-is-enabled>7.2 Optional: Add RBAC Permissions When RBAC Is Enabled</h3><p>If your cluster enforces RBAC, grant Prometheus permission to read Pods in <code>dubbo-system</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-yaml data-lang=yaml><span style=display:flex><span><span style=color:#268bd2>apiVersio [...]
-</span></span><span style=display:flex><span><span style=color:#268bd2>kind</span>: Role
-</span></span><span style=display:flex><span><span style=color:#268bd2>metadata</span>:
-</span></span><span style=display:flex><span> <span style=color:#268bd2>namespace</span>: dubbo-system
-</span></span><span style=display:flex><span> <span style=color:#268bd2>name</span>: pod-reader
-</span></span><span style=display:flex><span><span style=color:#268bd2>rules</span>:
-</span></span><span style=display:flex><span> - <span style=color:#268bd2>apiGroups</span>: [<span style=color:#2aa198>""</span>]
-</span></span><span style=display:flex><span> <span style=color:#268bd2>resources</span>: [<span style=color:#2aa198>"pods"</span>]
-</span></span><span style=display:flex><span> <span style=color:#268bd2>verbs</span>: [<span style=color:#2aa198>"get"</span>, <span style=color:#2aa198>"list"</span>, <span style=color:#2aa198>"watch"</span>]
-</span></span><span style=display:flex><span>---
-</span></span><span style=display:flex><span><span style=color:#268bd2>apiVersion</span>: rbac.authorization.k8s.io/v1
-</span></span><span style=display:flex><span><span style=color:#268bd2>kind</span>: RoleBinding
-</span></span><span style=display:flex><span><span style=color:#268bd2>metadata</span>:
-</span></span><span style=display:flex><span> <span style=color:#268bd2>name</span>: pod-reader-binding
-</span></span><span style=display:flex><span> <span style=color:#268bd2>namespace</span>: dubbo-system
-</span></span><span style=display:flex><span><span style=color:#268bd2>roleRef</span>:
-</span></span><span style=display:flex><span> <span style=color:#268bd2>apiGroup</span>: rbac.authorization.k8s.io
-</span></span><span style=display:flex><span> <span style=color:#268bd2>kind</span>: Role
-</span></span><span style=display:flex><span> <span style=color:#268bd2>name</span>: pod-reader
-</span></span><span style=display:flex><span><span style=color:#268bd2>subjects</span>:
-</span></span><span style=display:flex><span> - <span style=color:#268bd2>kind</span>: ServiceAccount
-</span></span><span style=display:flex><span> <span style=color:#268bd2>name</span>: prometheus-k8s
-</span></span><span style=display:flex><span> <span style=color:#268bd2>namespace</span>: monitoring
-</span></span></code></pre></div><p>If your Prometheus installation uses a different service account, replace the <code>subjects</code> section accordingly.</p><h3 id=73-deploy-application>7.3 Deploy Application</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-bash data-lang=bash><span style=display:flex><span>kubectl apply -f Deployment.yaml
-</span></span></code></pre></div><h3 id=74-verify>7.4 Verify</h3><p>Visit:</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>http://<prometheus-nodeport>/targets
-</span></span></code></pre></div><p>Ensure your pods show:</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>UP
-</span></span></code></pre></div><h2 id=8-production-recommendations>8. Production Recommendations</h2><table><thead><tr><th>Scenario</th><th>Recommended Mode</th></tr></thead><tbody><tr><td>Long-running services</td><td>Pull</td></tr><tr><td>Short-lived jobs</td><td>Push</td></tr><tr><td>Kubernetes</td><td>Pull + PodMonitor</td></tr><tr><td>Pushgateway usage</td><td>Use pgw-cleaner</td></tr></tbody></table><h2 id=9-summary>9. Summary</h2><p>Dubbo-Go provides:</p><ul><li>Pull-based Prome [...]
-<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
+</span></span></code></pre></div><ol start=4><li>Start the provider and consumer:</li></ol><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>go run ./go-server/cmd/main.go
+</span></span></code></pre></div><p>In another terminal:</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><span style=color:#b58900>cd</span> dubbo-go-samples/observability/prometheus_grafana
+</span></span><span style=display:flex><span><span style=color:#b58900>export</span> <span style=color:#268bd2>ZK_ADDRESS</span><span style=color:#719e07>=</span><span style=color:#2aa198>"127.0.0.1:2181"</span>
+</span></span><span style=display:flex><span><span style=color:#b58900>export</span> <span style=color:#268bd2>PUSHGATEWAY_URL</span><span style=color:#719e07>=</span><span style=color:#2aa198>"127.0.0.1:9091"</span>
+</span></span><span style=display:flex><span><span style=color:#b58900>export</span> <span style=color:#268bd2>JOB_NAME</span><span style=color:#719e07>=</span><span style=color:#2aa198>"dubbo-service"</span>
+</span></span><span style=display:flex><span>go run ./go-client/cmd/main.go
+</span></span></code></pre></div><ol start=5><li>Visit the Pushgateway metrics endpoint:</li></ol><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>curl http://localhost:9091/metrics
+</span></span></code></pre></div><ol start=6><li>Open <code>http://localhost:9090/targets</code> and verify that the <code>pushgateway</code> target is <code>UP</code>.</li></ol><p>The sample registers <code>job_pushed_at_seconds</code> and calls the Pushgateway DELETE API on graceful shutdown. If the process is killed forcefully, cleanup may not run. For production, use <a href=https://github.com/apache/dubbo-go-samples/tree/main/tools/pgw-cleaner target=_blank>pgw-cleaner</a> or anothe [...]
+</span></span><span style=display:flex><span> <span style=color:#268bd2>evaluation_interval</span>: 15s
+</span></span><span style=display:flex><span> <span style=color:#268bd2>scrape_interval</span>: 15s
+</span></span><span style=display:flex><span><span style=color:#268bd2>scrape_configs</span>:
+</span></span><span style=display:flex><span> - <span style=color:#268bd2>job_name</span>: dubbo-provider
+</span></span><span style=display:flex><span> <span style=color:#268bd2>scrape_interval</span>: 15s
+</span></span><span style=display:flex><span> <span style=color:#268bd2>scrape_timeout</span>: 5s
+</span></span><span style=display:flex><span> <span style=color:#268bd2>metrics_path</span>: /prometheus
+</span></span><span style=display:flex><span> <span style=color:#268bd2>static_configs</span>:
+</span></span><span style=display:flex><span> - <span style=color:#268bd2>targets</span>: [<span style=color:#2aa198>'host.docker.internal:9099'</span>]
+</span></span><span style=display:flex><span> - <span style=color:#268bd2>job_name</span>: dubbo-consumer
+</span></span><span style=display:flex><span> <span style=color:#268bd2>scrape_interval</span>: 15s
+</span></span><span style=display:flex><span> <span style=color:#268bd2>scrape_timeout</span>: 5s
+</span></span><span style=display:flex><span> <span style=color:#268bd2>metrics_path</span>: /prometheus
+</span></span><span style=display:flex><span> <span style=color:#268bd2>static_configs</span>:
+</span></span><span style=display:flex><span> - <span style=color:#268bd2>targets</span>: [<span style=color:#2aa198>'host.docker.internal:9097'</span>]
+</span></span></code></pre></div><p><code>host.docker.internal</code> lets the Prometheus container reach Dubbo-Go processes running on the host. If Prometheus and the applications run in the same Docker network, replace it with the container name. On Linux, if this hostname is unavailable, use the host IP or add a <code>host-gateway</code> mapping in Docker Compose.</p><h3 id=52-pushgateway-configuration>5.2 Pushgateway Configuration</h3><p><code>prometheus_push.yml</code> scrapes only [...]
+</span></span><span style=display:flex><span> <span style=color:#268bd2>evaluation_interval</span>: 15s
+</span></span><span style=display:flex><span> <span style=color:#268bd2>scrape_interval</span>: 15s
+</span></span><span style=display:flex><span><span style=color:#268bd2>scrape_configs</span>:
+</span></span><span style=display:flex><span> - <span style=color:#268bd2>job_name</span>: <span style=color:#2aa198>'pushgateway'</span>
+</span></span><span style=display:flex><span> <span style=color:#268bd2>static_configs</span>:
+</span></span><span style=display:flex><span> - <span style=color:#268bd2>targets</span>: [<span style=color:#2aa198>'host.docker.internal:9091'</span>]
+</span></span><span style=display:flex><span> <span style=color:#268bd2>honor_labels</span>: <span style=color:#cb4b16>true</span>
+</span></span></code></pre></div><p><code>honor_labels: true</code> keeps labels such as <code>job</code> and <code>instance</code> that were pushed by the application, which helps Grafana display data by service dimension.</p><h2 id=6-import-the-grafana-dashboard>6. Import the Grafana Dashboard</h2><ol><li>Open <code>http://localhost:3000</code>. The default credentials are <code>admin</code> / <code>admin</code>.</li><li>Go to <code>Home -> Connections -> Data sources</code> and click [...]
+</span></span><span style=display:flex><span>curl http://localhost:9097/prometheus
+</span></span><span style=display:flex><span>curl http://localhost:9091/metrics
+</span></span></code></pre></div><p>If the host can access them but the Prometheus container cannot, the issue is usually Docker networking. Replace <code>host.docker.internal</code> with the real host IP, or add this to the Prometheus service on Linux:</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>extra_hosts</span>:
+</span></span><span style=display:flex><span> - <span style=color:#2aa198>"host.docker.internal:host-gateway"</span>
+</span></span></code></pre></div><h3 id=73-grafana-shows-no-data>7.3 Grafana Shows No Data</h3><p>Confirm that the Prometheus data source passes <code>Save & test</code>; check <code>http://localhost:9090/targets</code> for <code>UP</code> targets; then query <code>dubbo_consumer_requests_succeed_total</code> or <code>dubbo_provider_requests_total</code> in Prometheus. If the query is empty, make sure the client is continuously calling the server and wait for one scrape interval.</p><h3 [...]
+<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en//overview/mannual/golang-sdk/tutorial/observability/rpc_metrics?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=Metrics%20Monitoring" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#1-monitoring-architecture>1. Monitoring Architecture</a><ul><li><a href=#11-pull-mode-recommended-for-production>1.1 Pull Mode (Recommended for production)</a></li><li><a href=#12-push-mode-for-short-lived-jobs>1.2 Push Mode (For short-lived jobs)</a></li></ul></li><li><a href=#2-components-overview>2. Components Overvi [...]
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#1-monitoring-modes>1. Monitoring Modes</a><ul><li><a href=#11-pull-mode>1.1 Pull Mode</a></li><li><a href=#12-pushgateway-mode>1.2 Pushgateway Mode</a></li></ul></li><li><a href=#2-prepare-the-sample>2. Prepare the Sample</a></li><li><a href=#3-pull-mode-workflow>3. Pull Mode Workflow</a></li><li><a href=#4-pushgateway- [...]
<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
<button class=contact-btn><a href=https://github.com/apache/dubbo/>GitHub</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/en/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/en/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px solid #ddd [...]
project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
diff --git a/en/sitemap.xml b/en/sitemap.xml
index a85f5e99116..255554373e1 100644
--- a/en/sitemap.xml
+++ b/en/sitemap.xml
@@ -1 +1 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"><url><loc>https://cn.dubbo.apache.org/en/blog/2023/01/16/alibaba-upgrades-dubbo3-to-fully-replace-hsf2/</loc><lastmod>2024-09-30T17:53:33+08:00</lastmod><changefreq>monthly</changefreq><priority>0.5</priority><xhtml:link rel="alternate" hreflang="zh-cn" href="https://cn.dubbo.apache.org/zh-cn/blog/2023/01/16/%E9%98%BF%E9%87%8C%E5%B7 [...]
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8" standalone="yes"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"><url><loc>https://cn.dubbo.apache.org/en/blog/2023/01/16/alibaba-upgrades-dubbo3-to-fully-replace-hsf2/</loc><lastmod>2024-09-30T17:53:33+08:00</lastmod><changefreq>monthly</changefreq><priority>0.5</priority><xhtml:link rel="alternate" hreflang="zh-cn" href="https://cn.dubbo.apache.org/zh-cn/blog/2023/01/16/%E9%98%BF%E9%87%8C%E5%B7 [...]
\ No newline at end of file
diff --git a/js/app.js b/js/app.js
index b17e7b31a97..069248774b1 100644
--- a/js/app.js
+++ b/js/app.js
@@ -1,2 +1 @@
-(function(){"use strict";var t={5030:function(t,e,r){var n=r(2856),o=function(){var t=this,e=t._self._c;return e("div",{attrs:{id:"app"}},[e("el-row",[e("el-col",{attrs:{span:24}},[e("div",{staticStyle:{"font-size":"30px"}},[t._v("Dubbo 基准测试")])])],1),e("el-row",[e("el-col",{attrs:{span:24}},[e("div",{staticStyle:{"font-size":"15px","text-align":"right"}},[e("a",{attrs:{target:"_blank",href:"https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners/about- [...]
-//# sourceMappingURL=app.a7f8f515.js.map
\ No newline at end of file
+// Respond to static link checks, which will be dynamically replaced at build time
\ No newline at end of file
diff --git a/js/chunk-vendors.js b/js/chunk-vendors.js
index e33ee56a2ec..069248774b1 100644
--- a/js/chunk-vendors.js
+++ b/js/chunk-vendors.js
@@ -1,60 +1 @@
-(self["webpackChunkdubbo_benchmark"]=self["webpackChunkdubbo_benchmark"]||[]).push([[504],{1656:function(e,t,n){"use strict";function i(e,t,n,i,r,o,a,s){var l,u="function"===typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=n,u._compiled=!0),i&&(u.functional=!0),o&&(u._scopeId="data-v-"+o),a?(l=function(e){e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,e||"undefined"===typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&& [...]
-/**
- * @license
- * Lodash <https://lodash.com/>
- * Copyright JS Foundation and other contributors <https://js.foundation/>
- * Released under MIT license <https://lodash.com/license>
- * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
- * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
- */(function(){var o,a="4.17.10",s=200,l="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",u="Expected a function",c="__lodash_hash_undefined__",h=500,d="__lodash_placeholder__",p=1,f=2,g=4,v=1,m=2,y=1,b=2,_=4,x=8,w=16,S=32,C=64,k=128,M=256,T=512,D=30,I="...",O=800,A=16,E=1,P=2,L=3,N=1/0,R=9007199254740991,$=17976931348623157e292,z=NaN,V=4294967295,F=V-1,B=V>>>1,j=[["ary",k],["bind",y],["bindKey",b],["curry",x],["curryRight",w],["flip",T],["partial",S],["partialRight",C], [...]
-/**
- * @fileOverview Kickass library to create and place poppers near their reference elements.
- * @version {{version}}
- * @license
- * Copyright (c) 2016 Federico Zivolo and contributors
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */(function(o,a){i=a,r="function"===typeof i?i.call(t,n,t,e):i,void 0===r||(e.exports=r)})(0,function(){var e=window,t={placement:"bottom",gpuAcceleration:!0,offset:0,boundariesElement:"viewport",boundariesPadding:5,preventOverflowOrder:["left","right","top","bottom"],flipBehavior:"flip",arrowElement:"[x-arrow]",arrowOffset:0,modifiers:["shift","offset","preventOverflow","keepTogether","arrow","flip","applyStyle"],modifiersIgnored:[],forceAbsolute:!1};function n(e,n,i){this._reference=e [...]
-/*!
- * jQuery JavaScript Library v3.7.1
- * https://jquery.com/
- *
- * Copyright OpenJS Foundation and other contributors
- * Released under the MIT license
- * https://jquery.org/license
- *
- * Date: 2023-08-28T13:37Z
- */
-function(t,n){"use strict";"object"===typeof e.exports?e.exports=t.document?n(t,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return n(e)}:n(t)}("undefined"!==typeof window?window:this,function(n,o){"use strict";var a=[],s=Object.getPrototypeOf,l=a.slice,u=a.flat?function(e){return a.flat.call(e)}:function(e){return a.concat.apply([],e)},c=a.push,h=a.indexOf,d={},p=d.toString,f=d.hasOwnProperty,g=f.toString,v=g.call(Object),m={},y=function(e){ [...]
-/**
- * Checks if an event is supported in the current execution environment.
- *
- * NOTE: This will not work correctly for non-generic events such as `change`,
- * `reset`, `load`, `error`, and `select`.
- *
- * Borrows from Modernizr.
- *
- * @param {string} eventNameSuffix Event name, e.g. "click".
- * @param {?boolean} capture Check if the capture phase is supported.
- * @return {boolean} True if the event is supported.
- * @internal
- * @license Modernizr 3.0.0pre (Custom Build) | MIT
- */
-function o(e,t){if(!r.canUseDOM||t&&!("addEventListener"in document))return!1;var n="on"+e,o=n in document;if(!o){var a=document.createElement("div");a.setAttribute(n,"return;"),o="function"===typeof a[n]}return!o&&i&&"wheel"===e&&(o=document.implementation.hasFeature("Events.wheel","3.0")),o}r.canUseDOM&&(i=document.implementation&&document.implementation.hasFeature&&!0!==document.implementation.hasFeature("","")),e.exports=o},9030:function(e,t,n){"use strict";var i=n(8656),r=n(2021),o= [...]
-//# sourceMappingURL=chunk-vendors.8eb077c9.js.map
\ No newline at end of file
+// Respond to static link checks, which will be dynamically replaced at build time
\ No newline at end of file
diff --git a/sitemap.xml b/sitemap.xml
index 020f48e1985..6bfdf17b92c 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -1 +1 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?><sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><sitemap><loc>https://cn.dubbo.apache.org/zh-cn/sitemap.xml</loc><lastmod>2026-08-07T20:51:37+08:00</lastmod></sitemap><sitemap><loc>https://cn.dubbo.apache.org/en/sitemap.xml</loc><lastmod>2026-08-07T20:51:37+08:00</lastmod></sitemap></sitemapindex>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8" standalone="yes"?><sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><sitemap><loc>https://cn.dubbo.apache.org/zh-cn/sitemap.xml</loc><lastmod>2026-08-09T12:45:10+08:00</lastmod></sitemap><sitemap><loc>https://cn.dubbo.apache.org/en/sitemap.xml</loc><lastmod>2026-08-09T12:45:10+08:00</lastmod></sitemap></sitemapindex>
\ No newline at end of file
diff --git a/zh-cn/index.xml b/zh-cn/index.xml
index df0a5d3b9a2..613830c0b77 100644
--- a/zh-cn/index.xml
+++ b/zh-cn/index.xml
@@ -13428,63 +13428,51 @@ Dubbo 可支持集群规模步入百万实例层次。</li>
<li>基于 HTTP 的通信模式,加上相对比较完善的入门文档和演示 demo 和 starters,让开发者在第一感觉上更易于上手</li>
</ul>
<p>Spring Cloud 的问题有:</p></description></item><item><title>指标监控 (Metrics)</title><link>https://cn.dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/observability/rpc_metrics/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cn.dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/observability/rpc_metrics/</guid><description><h1 id="dubbo-go-指标监控">Dubbo-Go 指标监控</h1>
-<p>Dubbo-Go 支持采集运行态 Metrics 指标,并接入 <strong>Prometheus + Grafana</strong> 实现微服务可观测性。</p>
-<p>当前示例支持两种监控模式:</p>
-<ul>
-<li><strong>Pull 模式</strong>:Prometheus 主动抓取 Dubbo-Go 应用暴露的指标,适合长期运行的服务。</li>
-<li><strong>Push 模式</strong>:Dubbo-Go 应用主动将指标推送到 Pushgateway,仅建议用于短生命周期任务。</li>
-</ul>
-<p>示例源码:</p>
+<p>Dubbo-Go 可以采集 RPC、元数据、注册中心、配置中心等运行态指标,并通过 Prometheus 与 Grafana 构建可观测性看板。本文以 <a href="https://github.com/apache/dubbo-go-samples/tree/main/observability/prometheus_grafana" target="_blank">dubbo-go-samples/observability/prometheus_grafana</a> 为例,说明 Pull 与 Pushgateway 两种运行方式。</p>
<blockquote>
-<p><a href="https://github.com/apache/dubbo-go-samples/tree/main/metrics">https://github.com/apache/dubbo-go-samples/tree/main/metrics</a></p>
+<p>说明:部分旧文档或任务描述可能仍写作 <code>metrics/prometheus_grafana</code>,当前 sample 仓库中的实际目录是 <code>observability/prometheus_grafana</code>。</p>
</blockquote>
-<h2 id="1-监控架构说明">1. 监控架构说明</h2>
-<h3 id="11-pull-模式推荐生产模式">1.1 Pull 模式(推荐生产模式)</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>Dubbo-Go 应用 ---&gt; Prometheus ---&gt; Grafana
-</span></span><span style="display:flex;"><span> (暴露 /metrics 或 /prometheus 接口)
-</span></span></code></pre></div><p>Prometheus 主动抓取 Dubbo-Go 应用指标。</p>
-<h3 id="12-push-模式适用于短生命周期任务">1.2 Push 模式(适用于短生命周期任务)</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>Dubbo-Go 应用 ---&gt; Pushgateway ---&gt; Prometheus ---&gt; Grafana
-</span></span></code></pre></div><p>应用主动推送指标到 Pushgateway,Prometheus 再拉取。</p>
-<p>Pushgateway 适用于 <strong>短生命周期任务(如 batch / cron job)</strong>,不推荐用于长期运行的服务。</p>
-<h2 id="2-示例组件说明">2. 示例组件说明</h2>
+<h2 id="1-工作模式">1. 工作模式</h2>
+<h3 id="11-pull-模式">1.1 Pull 模式</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-text" data-lang="text"><span style="display:flex;"><span>Dubbo-Go 应用暴露 /prometheus 或 /metrics
+</span></span><span style="display:flex;"><span> |
+</span></span><span style="display:flex;"><span> v
+</span></span><span style="display:flex;"><span>Prometheus 定时拉取
+</span></span><span style="display:flex;"><span> |
+</span></span><span style="display:flex;"><span> v
+</span></span><span style="display:flex;"><span>Grafana 查询 Prometheus 并展示大盘
+</span></span></code></pre></div><p>Pull 模式是 Prometheus 的标准模式,适合长期运行的 Dubbo-Go Provider 与 Consumer。当前 sample 中:</p>
<table>
<thead>
<tr>
- <th>组件</th>
- <th>端口</th>
- <th>说明</th>
+ <th>应用</th>
+ <th>指标地址</th>
</tr>
</thead>
<tbody>
<tr>
- <td>Grafana</td>
- <td>3000</td>
- <td>指标可视化</td>
- </tr>
- <tr>
- <td>Prometheus</td>
- <td>9090</td>
- <td>指标存储与查询</td>
- </tr>
- <tr>
- <td>Pushgateway</td>
- <td>9091</td>
- <td>接收应用推送指标</td>
- </tr>
- <tr>
- <td>go-server 指标端口</td>
- <td>本示例中为 9099</td>
- <td>Pull 模式下 Provider 指标暴露端口</td>
+ <td>go-server</td>
+ <td><code>http://localhost:9099/prometheus</code></td>
</tr>
<tr>
- <td>go-client 指标端口</td>
- <td>本示例中为 9097</td>
- <td>Pull 模式下 Consumer 指标暴露端口</td>
+ <td>go-client</td>
+ <td><code>http://localhost:9097/prometheus</code></td>
</tr>
</tbody>
</table>
-<p>如果不使用本示例,而是直接使用 Dubbo-Go 默认配置,则默认指标端点为 <code>http://localhost:9090/metrics</code>。当前 sample 将指标路径改成了 <code>/prometheus</code>。</p></description></item><item><title>注册中心、配置中心和元数据中心</title><link>https://cn.dubbo.apache.org/zh-cn/overview/reference/proposals/registry-config-meta/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cn.dubbo.apache.org/zh-cn/overview/reference/proposals/registry-config-meta/</guid><description><h2 id [...]
+<p>Dubbo-Go 默认指标地址是 <code>http://localhost:9090/metrics</code>。sample 通过 <code>metrics.WithPort(9099)</code>、<code>metrics.WithPort(9097)</code> 和 <code>metrics.WithPath(&quot;/prometheus&quot;)</code> 改成了上面的端口与路径。</p>
+<h3 id="12-pushgateway-模式">1.2 Pushgateway 模式</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-text" data-lang="text"><span style="display:flex;"><span>Dubbo-Go 应用推送指标
+</span></span><span style="display:flex;"><span> |
+</span></span><span style="display:flex;"><span> v
+</span></span><span style="display:flex;"><span>Pushgateway 暂存指标
+</span></span><span style="display:flex;"><span> |
+</span></span><span style="display:flex;"><span> v
+</span></span><span style="display:flex;"><span>Prometheus 拉取 Pushgateway
+</span></span><span style="display:flex;"><span> |
+</span></span><span style="display:flex;"><span> v
+</span></span><span style="display:flex;"><span>Grafana 查询 Prometheus 并展示大盘
+</span></span></code></pre></div><p>Pushgateway 更适合 batch、cron job 等短生命周期任务。长期运行的服务优先使用 Pull 模式;如果必须使用 Pushgateway,请配合清理机制,避免停止后的旧指标继续留在 Pushgateway 中。</p></description></item><item><title>注册中心、配置中心和元数据中心</title><link>https://cn.dubbo.apache.org/zh-cn/overview/reference/proposals/registry-config-meta/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cn.dubbo.apache.org/zh-cn/overview/reference/proposals/registry-config-meta/< [...]
<blockquote>
<p>本节侧重描述传统模式下的 Dubbo 部署架构,在云原生背景下的部署架构会有些变化,主要体现在基础设施(Kubernetes、Service Mesh等)会承担更多的职责,
中心化组件如注册中心、元数据中心、配置中心等的职责被集成、运维变得更加简单,但通过强调这些中心化的组件能让我们更容易理解 Dubbo 的工作原理。</p>
diff --git a/zh-cn/overview/mannual/golang-sdk/tutorial/observability/index.xml b/zh-cn/overview/mannual/golang-sdk/tutorial/observability/index.xml
index 543e11d8331..9b8ec11e329 100644
--- a/zh-cn/overview/mannual/golang-sdk/tutorial/observability/index.xml
+++ b/zh-cn/overview/mannual/golang-sdk/tutorial/observability/index.xml
@@ -47,63 +47,51 @@
<h2 id="2-完全自定义日志">2. 完全自定义日志</h2>
<p>当前 dubbo-go 框架支持 zap、logrus 两个日志框架,如果您想让 dubbo 框架内核使用其他日志框架打印日志,推荐以标准扩展形式增加支持,具体可参考核心库中内置的 <a href="https://github.com/apache/dubbo-go/tree/main/logger">源码实现</a>。</p></description></item><item><title>指标监控 (Metrics)</title><link>https://cn.dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/observability/rpc_metrics/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cn.dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/observ [...]
-<p>Dubbo-Go 支持采集运行态 Metrics 指标,并接入 <strong>Prometheus + Grafana</strong> 实现微服务可观测性。</p>
-<p>当前示例支持两种监控模式:</p>
-<ul>
-<li><strong>Pull 模式</strong>:Prometheus 主动抓取 Dubbo-Go 应用暴露的指标,适合长期运行的服务。</li>
-<li><strong>Push 模式</strong>:Dubbo-Go 应用主动将指标推送到 Pushgateway,仅建议用于短生命周期任务。</li>
-</ul>
-<p>示例源码:</p>
+<p>Dubbo-Go 可以采集 RPC、元数据、注册中心、配置中心等运行态指标,并通过 Prometheus 与 Grafana 构建可观测性看板。本文以 <a href="https://github.com/apache/dubbo-go-samples/tree/main/observability/prometheus_grafana" target="_blank">dubbo-go-samples/observability/prometheus_grafana</a> 为例,说明 Pull 与 Pushgateway 两种运行方式。</p>
<blockquote>
-<p><a href="https://github.com/apache/dubbo-go-samples/tree/main/metrics">https://github.com/apache/dubbo-go-samples/tree/main/metrics</a></p>
+<p>说明:部分旧文档或任务描述可能仍写作 <code>metrics/prometheus_grafana</code>,当前 sample 仓库中的实际目录是 <code>observability/prometheus_grafana</code>。</p>
</blockquote>
-<h2 id="1-监控架构说明">1. 监控架构说明</h2>
-<h3 id="11-pull-模式推荐生产模式">1.1 Pull 模式(推荐生产模式)</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>Dubbo-Go 应用 ---&gt; Prometheus ---&gt; Grafana
-</span></span><span style="display:flex;"><span> (暴露 /metrics 或 /prometheus 接口)
-</span></span></code></pre></div><p>Prometheus 主动抓取 Dubbo-Go 应用指标。</p>
-<h3 id="12-push-模式适用于短生命周期任务">1.2 Push 模式(适用于短生命周期任务)</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>Dubbo-Go 应用 ---&gt; Pushgateway ---&gt; Prometheus ---&gt; Grafana
-</span></span></code></pre></div><p>应用主动推送指标到 Pushgateway,Prometheus 再拉取。</p>
-<p>Pushgateway 适用于 <strong>短生命周期任务(如 batch / cron job)</strong>,不推荐用于长期运行的服务。</p>
-<h2 id="2-示例组件说明">2. 示例组件说明</h2>
+<h2 id="1-工作模式">1. 工作模式</h2>
+<h3 id="11-pull-模式">1.1 Pull 模式</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-text" data-lang="text"><span style="display:flex;"><span>Dubbo-Go 应用暴露 /prometheus 或 /metrics
+</span></span><span style="display:flex;"><span> |
+</span></span><span style="display:flex;"><span> v
+</span></span><span style="display:flex;"><span>Prometheus 定时拉取
+</span></span><span style="display:flex;"><span> |
+</span></span><span style="display:flex;"><span> v
+</span></span><span style="display:flex;"><span>Grafana 查询 Prometheus 并展示大盘
+</span></span></code></pre></div><p>Pull 模式是 Prometheus 的标准模式,适合长期运行的 Dubbo-Go Provider 与 Consumer。当前 sample 中:</p>
<table>
<thead>
<tr>
- <th>组件</th>
- <th>端口</th>
- <th>说明</th>
+ <th>应用</th>
+ <th>指标地址</th>
</tr>
</thead>
<tbody>
<tr>
- <td>Grafana</td>
- <td>3000</td>
- <td>指标可视化</td>
- </tr>
- <tr>
- <td>Prometheus</td>
- <td>9090</td>
- <td>指标存储与查询</td>
- </tr>
- <tr>
- <td>Pushgateway</td>
- <td>9091</td>
- <td>接收应用推送指标</td>
- </tr>
- <tr>
- <td>go-server 指标端口</td>
- <td>本示例中为 9099</td>
- <td>Pull 模式下 Provider 指标暴露端口</td>
+ <td>go-server</td>
+ <td><code>http://localhost:9099/prometheus</code></td>
</tr>
<tr>
- <td>go-client 指标端口</td>
- <td>本示例中为 9097</td>
- <td>Pull 模式下 Consumer 指标暴露端口</td>
+ <td>go-client</td>
+ <td><code>http://localhost:9097/prometheus</code></td>
</tr>
</tbody>
</table>
-<p>如果不使用本示例,而是直接使用 Dubbo-Go 默认配置,则默认指标端点为 <code>http://localhost:9090/metrics</code>。当前 sample 将指标路径改成了 <code>/prometheus</code>。</p></description></item><item><title>Kubernetes 生命周期探针</title><link>https://cn.dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/observability/probe/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cn.dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/observability/probe/</guid><descr [...]
+<p>Dubbo-Go 默认指标地址是 <code>http://localhost:9090/metrics</code>。sample 通过 <code>metrics.WithPort(9099)</code>、<code>metrics.WithPort(9097)</code> 和 <code>metrics.WithPath(&quot;/prometheus&quot;)</code> 改成了上面的端口与路径。</p>
+<h3 id="12-pushgateway-模式">1.2 Pushgateway 模式</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-text" data-lang="text"><span style="display:flex;"><span>Dubbo-Go 应用推送指标
+</span></span><span style="display:flex;"><span> |
+</span></span><span style="display:flex;"><span> v
+</span></span><span style="display:flex;"><span>Pushgateway 暂存指标
+</span></span><span style="display:flex;"><span> |
+</span></span><span style="display:flex;"><span> v
+</span></span><span style="display:flex;"><span>Prometheus 拉取 Pushgateway
+</span></span><span style="display:flex;"><span> |
+</span></span><span style="display:flex;"><span> v
+</span></span><span style="display:flex;"><span>Grafana 查询 Prometheus 并展示大盘
+</span></span></code></pre></div><p>Pushgateway 更适合 batch、cron job 等短生命周期任务。长期运行的服务优先使用 Pull 模式;如果必须使用 Pushgateway,请配合清理机制,避免停止后的旧指标继续留在 Pushgateway 中。</p></description></item><item><title>Kubernetes 生命周期探针</title><link>https://cn.dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/observability/probe/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cn.dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/obser [...]
<p>Dubbo-Go 提供内置的 <strong>Kubernetes HTTP Probe 服务</strong>,用于支持:</p>
<ul>
<li>✅ <code>liveness</code></li>
diff --git a/zh-cn/overview/mannual/golang-sdk/tutorial/observability/rpc_metrics/index.html b/zh-cn/overview/mannual/golang-sdk/tutorial/observability/rpc_metrics/index.html
index df2964a6c10..fd9c5af9760 100644
--- a/zh-cn/overview/mannual/golang-sdk/tutorial/observability/rpc_metrics/index.html
+++ b/zh-cn/overview/mannual/golang-sdk/tutorial/observability/rpc_metrics/index.html
@@ -1,4 +1,4 @@
-<!doctype html><html lang=zh-cn class=no-js><head><meta name=ROBOTS content="INDEX, FOLLOW"><link rel=alternate hreflang=en href=https://cn.dubbo.apache.org/en/overview/mannual/golang-sdk/tutorial/observability/rpc_metrics/><link rel=canonical href=https://cn.dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/observability/rpc_metrics/><script>var _paq=window._paq=window._paq||[];_paq.push(["setDocumentTitle",document.domain+"/"+document.title]),_paq.push(["setCookieDomain","*.d [...]
+<!doctype html><html lang=zh-cn class=no-js><head><meta name=ROBOTS content="INDEX, FOLLOW"><link rel=alternate hreflang=en href=https://cn.dubbo.apache.org/en/overview/mannual/golang-sdk/tutorial/observability/rpc_metrics/><link rel=canonical href=https://cn.dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/observability/rpc_metrics/><script>var _paq=window._paq=window._paq||[];_paq.push(["setDocumentTitle",document.domain+"/"+document.title]),_paq.push(["setCookieDomain","*.d [...]
<a class=dropdown-item href=/zh-cn/overview/notices/>安全公告</a>
<a class=dropdown-item href=/zh-cn/contact/>贡献者指南</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/zh-cn/blog/><span>博客</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/zh-cn/download/><span>下载</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true aria-expanded=false>生态</a><div class="dropdo [...]
<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>可视化控制台</a>
@@ -688,77 +688,89 @@
<label for=m-zh-cnoverviewnoticesprotocol-check><a href=/zh-cn/overview/notices/protocol/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewnoticesprotocol><span>RPC 协议安全</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewnoticesregistry-li><input type=checkbox id=m-zh-cnoverviewnoticesregistry-check>
<label for=m-zh-cnoverviewnoticesregistry-check><a href=/zh-cn/overview/notices/registry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewnoticesregistry><span>注册中心安全</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewnoticesadmin-li><input type=checkbox id=m-zh-cnoverviewnoticesadmin-check>
<label for=m-zh-cnoverviewnoticesadmin-check><a href=/zh-cn/overview/notices/admin/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewnoticesadmin><span>Dubbo Admin 安全</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewnoticeslog4j-li><input type=checkbox id=m-zh-cnoverviewnoticeslog4j-check>
-<label for=m-zh-cnoverviewnoticeslog4j-check><a href=/zh-cn/overview/notices/log4j/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewnoticeslog4j><span>Log4j 漏洞影响</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/zh-cn/overview/>文档</a></li><li class=breadcrumb-item><a href=/zh-cn/ove [...]
-</span></span><span style=display:flex><span> (暴露 /metrics 或 /prometheus 接口)
-</span></span></code></pre></div><p>Prometheus 主动抓取 Dubbo-Go 应用指标。</p><h3 id=12-push-模式适用于短生命周期任务>1.2 Push 模式(适用于短生命周期任务)</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>Dubbo-Go 应用 ---> Pushgateway ---> Prometheus ---> Grafana
-</span></span></code></pre></div><p>应用主动推送指标到 Pushgateway,Prometheus 再拉取。</p><p>Pushgateway 适用于 <strong>短生命周期任务(如 batch / cron job)</strong>,不推荐用于长期运行的服务。</p><h2 id=2-示例组件说明>2. 示例组件说明</h2><table><thead><tr><th>组件</th><th>端口</th><th>说明</th></tr></thead><tbody><tr><td>Grafana</td><td>3000</td><td>指标可视化</td></tr><tr><td>Prometheus</td><td>9090</td><td>指标存储与查询</td></tr><tr><td>Pushgateway</td><td>9091</td><td>接收应用推送指标</td></tr><tr><td>go-server 指标端口</td><td>本示例中为 9099</td><td>Pull 模式下 Provid [...]
-</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-bash data-lang=bash><span style=display:flex><span>docker-compose up -d
-</span></span></code></pre></div><p>访问地址:</p><ul><li>Grafana: <a href=http://localhost:3000>http://localhost:3000</a></li><li>Prometheus: <a href=http://localhost:9090>http://localhost:9090</a></li><li>Pushgateway: <a href=http://localhost:9091>http://localhost:9091</a></li></ul><h3 id=32-配置环境变量>3.2 配置环境变量</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-lan [...]
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span><span style=color:#586e75># Push 模式必需</span>
+<label for=m-zh-cnoverviewnoticeslog4j-check><a href=/zh-cn/overview/notices/log4j/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewnoticeslog4j><span>Log4j 漏洞影响</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/zh-cn/overview/>文档</a></li><li class=breadcrumb-item><a href=/zh-cn/ove [...]
+</span></span><span style=display:flex><span> |
+</span></span><span style=display:flex><span> v
+</span></span><span style=display:flex><span>Prometheus 定时拉取
+</span></span><span style=display:flex><span> |
+</span></span><span style=display:flex><span> v
+</span></span><span style=display:flex><span>Grafana 查询 Prometheus 并展示大盘
+</span></span></code></pre></div><p>Pull 模式是 Prometheus 的标准模式,适合长期运行的 Dubbo-Go Provider 与 Consumer。当前 sample 中:</p><table><thead><tr><th>应用</th><th>指标地址</th></tr></thead><tbody><tr><td>go-server</td><td><code>http://localhost:9099/prometheus</code></td></tr><tr><td>go-client</td><td><code>http://localhost:9097/prometheus</code></td></tr></tbody></table><p>Dubbo-Go 默认指标地址是 <code>http://localhost:9090/metrics</code>。sample 通过 <code>metrics.WithPort(9099)</code>、<code>metrics.WithPort(9097) [...]
+</span></span><span style=display:flex><span> |
+</span></span><span style=display:flex><span> v
+</span></span><span style=display:flex><span>Pushgateway 暂存指标
+</span></span><span style=display:flex><span> |
+</span></span><span style=display:flex><span> v
+</span></span><span style=display:flex><span>Prometheus 拉取 Pushgateway
+</span></span><span style=display:flex><span> |
+</span></span><span style=display:flex><span> v
+</span></span><span style=display:flex><span>Grafana 查询 Prometheus 并展示大盘
+</span></span></code></pre></div><p>Pushgateway 更适合 batch、cron job 等短生命周期任务。长期运行的服务优先使用 Pull 模式;如果必须使用 Pushgateway,请配合清理机制,避免停止后的旧指标继续留在 Pushgateway 中。</p><h2 id=2-准备示例>2. 准备示例</h2><p>克隆 samples 仓库并进入示例目录:</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>git clone --depth <span style=color:#2aa198>1</span> https://github.com/apache/dubbo-go- [...]
+</span></span><span style=display:flex><span><span style=color:#b58900>cd</span> dubbo-go-samples/observability/prometheus_grafana
+</span></span></code></pre></div><p>该目录包含:</p><table><thead><tr><th>文件或目录</th><th>说明</th></tr></thead><tbody><tr><td><code>docker-compose.yml</code></td><td>启动 ZooKeeper、Prometheus、Pushgateway、Grafana</td></tr><tr><td><code>prometheus_pull.yml</code></td><td>Pull 模式的 Prometheus 配置</td></tr><tr><td><code>prometheus_push.yml</code></td><td>Pushgateway 模式的 Prometheus 配置</td></tr><tr><td><code>go-server/cmd/main.go</code></td><td>Provider 示例,RPC 端口 <code>20000</code>,指标端口 <code>9099</code></ [...]
+</span></span></code></pre></div><p>如果你的环境还在使用 Docker Compose v1,可以执行:</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-compose up -d
+</span></span></code></pre></div><p>启动后可访问:</p><table><thead><tr><th>组件</th><th>地址</th></tr></thead><tbody><tr><td>Grafana</td><td><code>http://localhost:3000</code></td></tr><tr><td>Prometheus</td><td><code>http://localhost:9090</code></td></tr><tr><td>Pushgateway</td><td><code>http://localhost:9091</code></td></tr><tr><td>ZooKeeper</td><td><code>127.0.0.1:2181</code></td></tr></tbody></table><h2 id=3-pull-模式运行流程>3. Pull 模式运行流程</h2><p><code>docker-compose.yml</code> 默认挂载 <code>prometheu [...]
+</span></span></code></pre></div><p>Windows PowerShell 使用:</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-powershell data-lang=powershell><span style=display:flex><span><span style=color:#268bd2>$env:ZK_ADDRESS</span>=<span style=color:#2aa198>"127.0.0.1:2181"</span>
+</span></span></code></pre></div><ol start=2><li>启动 Provider:</li></ol><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>go run ./go-server/cmd/main.go --push<span style=color:#719e07>=</span><span style=color:#b58900>false</span>
+</span></span></code></pre></div><ol start=3><li>新开终端,进入同一目录后启动 Consumer:</li></ol><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><span style=color:#b58900>cd</span> dubbo-go-samples/observability/prometheus_grafana
+</span></span><span style=display:flex><span><span style=color:#b58900>export</span> <span style=color:#268bd2>ZK_ADDRESS</span><span style=color:#719e07>=</span><span style=color:#2aa198>"127.0.0.1:2181"</span>
+</span></span><span style=display:flex><span>go run ./go-client/cmd/main.go --push<span style=color:#719e07>=</span><span style=color:#b58900>false</span>
+</span></span></code></pre></div><ol start=4><li>访问应用暴露的指标端点:</li></ol><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>curl http://localhost:9099/prometheus
+</span></span><span style=display:flex><span>curl http://localhost:9097/prometheus
+</span></span></code></pre></div><p>输出中可以看到 <code>dubbo_provider_</code>、<code>dubbo_consumer_</code>、<code>dubbo_application_</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-text data-lang=text><span style=display:flex><span>dubbo_provider_requests_total
+</span></span><span style=display:flex><span>dubbo_consumer_requests_succeed_total
+</span></span></code></pre></div><ol start=5><li>打开 <code>http://localhost:9090/targets</code>,确认 <code>dubbo-provider</code> 与 <code>dubbo-consumer</code> 两个 target 为 <code>UP</code>。</li></ol><h2 id=4-pushgateway-模式运行流程>4. Pushgateway 模式运行流程</h2><p>Pushgateway 模式需要让 Prometheus 拉取 Pushgateway,而不是直接拉取 Dubbo-Go 应用。</p><ol><li>将 <code>docker-compose.yml</code> 中 Prometheus 的配置文件挂载从 Pull 配置改为 Push 配置:</li></ol><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36 [...]
+</span></span><span style=display:flex><span> - ./prometheus_push.yml:/etc/prometheus/prometheus.yml
+</span></span></code></pre></div><ol start=2><li>重新启动监控组件:</li></ol><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 compose down
+</span></span><span style=display:flex><span>docker compose up -d
+</span></span></code></pre></div><ol start=3><li>设置环境变量:</li></ol><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><span style=color:#b58900>export</span> <span style=color:#268bd2>ZK_ADDRESS</span><span style=color:#719e07>=</span><span style=color:#2aa198>"127.0.0.1:2181"</span>
</span></span><span style=display:flex><span><span style=color:#b58900>export</span> <span style=color:#268bd2>PUSHGATEWAY_URL</span><span style=color:#719e07>=</span><span style=color:#2aa198>"127.0.0.1:9091"</span>
</span></span><span style=display:flex><span><span style=color:#b58900>export</span> <span style=color:#268bd2>JOB_NAME</span><span style=color:#719e07>=</span><span style=color:#2aa198>"dubbo-service"</span>
</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span><span style=color:#586e75># 可选</span>
+</span></span><span style=display:flex><span><span style=color:#586e75># 如果 Pushgateway 开启了 Basic Auth,再设置以下变量</span>
</span></span><span style=display:flex><span><span style=color:#b58900>export</span> <span style=color:#268bd2>PUSHGATEWAY_USER</span><span style=color:#719e07>=</span><span style=color:#2aa198>"username"</span>
</span></span><span style=display:flex><span><span style=color:#b58900>export</span> <span style=color:#268bd2>PUSHGATEWAY_PASS</span><span style=color:#719e07>=</span><span style=color:#2aa198>"1234"</span>
-</span></span></code></pre></div><h3 id=33-启动-dubbo-go-服务端>3.3 启动 Dubbo-Go 服务端</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-bash data-lang=bash><span style=display:flex><span>go run ./go-server/cmd/main.go
-</span></span></code></pre></div><h3 id=34-启动-dubbo-go-客户端>3.4 启动 Dubbo-Go 客户端</h3><h4 id=默认-push-模式>默认 Push 模式</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-bash data-lang=bash><span style=display:flex><span>go run ./go-client/cmd/main.go
-</span></span></code></pre></div><h4 id=使用-pull-模式>使用 Pull 模式</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-bash data-lang=bash><span style=display:flex><span>go run ./go-client/cmd/main.go --push<span style=color:#719e07>=</span><span style=color:#b58900>false</span>
-</span></span><span style=display:flex><span>go run ./go-server/cmd/main.go --push<span style=color:#719e07>=</span><span style=color:#b58900>false</span>
-</span></span></code></pre></div><h3 id=35-验证指标>3.5 验证指标</h3><h4 id=push-模式>Push 模式</h4><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>http://localhost:9091/metrics
-</span></span></code></pre></div><h4 id=pull-模式>Pull 模式</h4><p><code><应用端口></code> 指的是 Dubbo-Go 应用自身暴露 Prometheus 指标的 HTTP 端口,不是 Prometheus 或 Pushgateway 的端口。</p><p>在当前 sample 中:</p><ul><li>Provider:<code>http://localhost:9099/prometheus</code></li><li>Consumer:<code>http://localhost:9097/prometheus</code></li></ul><p>这两个端口定义在 <a href=https://github.com/apache/dubbo-go-samples/blob/main/metrics/prometheus_grafana/prometheus_pull.yml><code>metrics/prometheus_grafana/prometheus_pull.yml [...]
-</span></span></code></pre></div><ol start=4><li>点击 <strong>Add new data source</strong></li><li>选择 Prometheus</li><li>填写:</li></ol><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>http://host.docker.internal:9090
-</span></span></code></pre></div><blockquote><p>说明:<code>host.docker.internal</code> 用于让 Docker 容器访问宿主机网络。如果该地址不可用,请替换为宿主机实际 IP。</p></blockquote><ol start=7><li>点击 Save & Test</li></ol><h3 id=42-导入-dubbo-监控大盘>4.2 导入 Dubbo 监控大盘</h3><ol><li>进入:</li></ol><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>Home → Dashboards → New → Import
-</span></span></code></pre></div><ol start=2><li>使用以下任一方式导入:</li></ol><ul><li>直接上传 sample 目录中的 <a href=https://github.com/apache/dubbo-go-samples/blob/main/metrics/prometheus_grafana/grafana.json><code>grafana.json</code></a></li><li>输入 Grafana dashboard ID <code>19294</code>(<code>Dubbo Observability</code>)后点击 <strong>Load</strong></li><li>或从 <a href=https://grafana.com/grafana/dashboards/19294-dubbo-observability/>Grafana Labs</a> 下载 JSON 文件再上传</li></ul><ol start=3><li><p>sample 仓库已经直 [...]
-</span></span></code></pre></div><p>是否有数据</p><h3 id=62-hostdockerinternal-无法访问>6.2 host.docker.internal 无法访问</h3><p>请改为实际 IP 地址:</p><ul><li>修改 <code>metrics/prometheus_grafana/prometheus_pull.yml</code></li><li>修改 Grafana 数据源 URL</li></ul><h2 id=7-kubernetes-部署>7. Kubernetes 部署</h2><p>推荐使用:</p><blockquote><p>kube-prometheus
-<a href=https://github.com/prometheus-operator/kube-prometheus>https://github.com/prometheus-operator/kube-prometheus</a></p></blockquote><h3 id=71-添加-podmonitor>7.1 添加 PodMonitor</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>dubboPodMonitor.yaml
-</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-yaml data-lang=yaml><span style=display:flex><span><span style=color:#268bd2>apiVersion</span>: monitoring.coreos.com/v1
-</span></span><span style=display:flex><span><span style=color:#268bd2>kind</span>: PodMonitor
-</span></span><span style=display:flex><span><span style=color:#268bd2>metadata</span>:
-</span></span><span style=display:flex><span> <span style=color:#268bd2>name</span>: dubbo-pod-monitor
-</span></span><span style=display:flex><span> <span style=color:#268bd2>namespace</span>: monitoring
-</span></span><span style=display:flex><span><span style=color:#268bd2>spec</span>:
-</span></span><span style=display:flex><span> <span style=color:#268bd2>namespaceSelector</span>:
-</span></span><span style=display:flex><span> <span style=color:#268bd2>matchNames</span>:
-</span></span><span style=display:flex><span> - dubbo-system
-</span></span><span style=display:flex><span> <span style=color:#268bd2>selector</span>:
-</span></span><span style=display:flex><span> <span style=color:#268bd2>matchLabels</span>:
-</span></span><span style=display:flex><span> <span style=color:#268bd2>app-type</span>: dubbo
-</span></span><span style=display:flex><span> <span style=color:#268bd2>podMetricsEndpoints</span>:
-</span></span><span style=display:flex><span> - <span style=color:#268bd2>port</span>: metrics
-</span></span><span style=display:flex><span> <span style=color:#268bd2>path</span>: /prometheus
-</span></span></code></pre></div><h3 id=72-可选集群启用-rbac-时补充权限配置>7.2 可选:集群启用 RBAC 时补充权限配置</h3><p>如果集群开启了 RBAC,建议为 Prometheus 增加对 <code>dubbo-system</code> 命名空间内 Pod 的读取权限:</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>apiVersion</span>: rbac.authorization.k8s.io/v1
-</span></span><span style=display:flex><span><span style=color:#268bd2>kind</span>: Role
-</span></span><span style=display:flex><span><span style=color:#268bd2>metadata</span>:
-</span></span><span style=display:flex><span> <span style=color:#268bd2>namespace</span>: dubbo-system
-</span></span><span style=display:flex><span> <span style=color:#268bd2>name</span>: pod-reader
-</span></span><span style=display:flex><span><span style=color:#268bd2>rules</span>:
-</span></span><span style=display:flex><span> - <span style=color:#268bd2>apiGroups</span>: [<span style=color:#2aa198>""</span>]
-</span></span><span style=display:flex><span> <span style=color:#268bd2>resources</span>: [<span style=color:#2aa198>"pods"</span>]
-</span></span><span style=display:flex><span> <span style=color:#268bd2>verbs</span>: [<span style=color:#2aa198>"get"</span>, <span style=color:#2aa198>"list"</span>, <span style=color:#2aa198>"watch"</span>]
-</span></span><span style=display:flex><span>---
-</span></span><span style=display:flex><span><span style=color:#268bd2>apiVersion</span>: rbac.authorization.k8s.io/v1
-</span></span><span style=display:flex><span><span style=color:#268bd2>kind</span>: RoleBinding
-</span></span><span style=display:flex><span><span style=color:#268bd2>metadata</span>:
-</span></span><span style=display:flex><span> <span style=color:#268bd2>name</span>: pod-reader-binding
-</span></span><span style=display:flex><span> <span style=color:#268bd2>namespace</span>: dubbo-system
-</span></span><span style=display:flex><span><span style=color:#268bd2>roleRef</span>:
-</span></span><span style=display:flex><span> <span style=color:#268bd2>apiGroup</span>: rbac.authorization.k8s.io
-</span></span><span style=display:flex><span> <span style=color:#268bd2>kind</span>: Role
-</span></span><span style=display:flex><span> <span style=color:#268bd2>name</span>: pod-reader
-</span></span><span style=display:flex><span><span style=color:#268bd2>subjects</span>:
-</span></span><span style=display:flex><span> - <span style=color:#268bd2>kind</span>: ServiceAccount
-</span></span><span style=display:flex><span> <span style=color:#268bd2>name</span>: prometheus-k8s
-</span></span><span style=display:flex><span> <span style=color:#268bd2>namespace</span>: monitoring
-</span></span></code></pre></div><p>如果你的 Prometheus 安装使用的 ServiceAccount 不是 <code>prometheus-k8s</code>,请按实际名称修改 <code>subjects</code>。</p><h3 id=73-部署应用>7.3 部署应用</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-bash data-lang=bash><span style=display:flex><span>kubectl apply -f Deployment.yaml
-</span></span></code></pre></div><h3 id=74-验证>7.4 验证</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>http://<prometheus-nodeport>/targets
-</span></span></code></pre></div><p>确认 Pod 状态为:</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>UP
-</span></span></code></pre></div><h2 id=8-生产建议>8. 生产建议</h2><table><thead><tr><th>场景</th><th>推荐模式</th></tr></thead><tbody><tr><td>长期运行服务</td><td>Pull</td></tr><tr><td>短生命周期任务</td><td>Push</td></tr><tr><td>K8s 环境</td><td>Pull + PodMonitor</td></tr><tr><td>需要清理能力</td><td>配合 pgw-cleaner</td></tr></tbody></table><h2 id=9-总结>9. 总结</h2><p>Dubbo-Go 当前支持:</p><ul><li>Pull 模式(标准 Prometheus 模式)</li><li>Push 模式(Pushgateway)</li><li>Docker 快速部署</li><li>Kubernetes PodMonitor</li><li>Grafana 大盘</li><li> [...]
-<button class="btn btn-primary mb-4 feedback--no">否</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disabled [...]
+</span></span></code></pre></div><ol start=4><li>启动 Provider 与 Consumer:</li></ol><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>go run ./go-server/cmd/main.go
+</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-bash data-lang=bash><span style=display:flex><span><span style=color:#b58900>cd</span> dubbo-go-samples/observability/prometheus_grafana
+</span></span><span style=display:flex><span><span style=color:#b58900>export</span> <span style=color:#268bd2>ZK_ADDRESS</span><span style=color:#719e07>=</span><span style=color:#2aa198>"127.0.0.1:2181"</span>
+</span></span><span style=display:flex><span><span style=color:#b58900>export</span> <span style=color:#268bd2>PUSHGATEWAY_URL</span><span style=color:#719e07>=</span><span style=color:#2aa198>"127.0.0.1:9091"</span>
+</span></span><span style=display:flex><span><span style=color:#b58900>export</span> <span style=color:#268bd2>JOB_NAME</span><span style=color:#719e07>=</span><span style=color:#2aa198>"dubbo-service"</span>
+</span></span><span style=display:flex><span>go run ./go-client/cmd/main.go
+</span></span></code></pre></div><ol start=5><li>访问 Pushgateway 指标:</li></ol><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>curl http://localhost:9091/metrics
+</span></span></code></pre></div><ol start=6><li>打开 <code>http://localhost:9090/targets</code>,确认 <code>pushgateway</code> target 为 <code>UP</code>。</li></ol><p>示例应用注册了 <code>job_pushed_at_seconds</code>,并在优雅退出时调用 Pushgateway DELETE API 清理自身 job。直接强制结束进程时可能来不及清理,生产环境建议配合 <a href=https://github.com/apache/dubbo-go-samples/tree/main/tools/pgw-cleaner target=_blank>pgw-cleaner</a> 定期清理过期指标。</p><h2 id=5-prometheus-配置说明>5. Prometheus 配置说明</h2><h3 id=51-pull-配置>5.1 Pull 配置</h3><p><code>prometh [...]
+</span></span><span style=display:flex><span> <span style=color:#268bd2>evaluation_interval</span>: 15s
+</span></span><span style=display:flex><span> <span style=color:#268bd2>scrape_interval</span>: 15s
+</span></span><span style=display:flex><span><span style=color:#268bd2>scrape_configs</span>:
+</span></span><span style=display:flex><span> - <span style=color:#268bd2>job_name</span>: dubbo-provider
+</span></span><span style=display:flex><span> <span style=color:#268bd2>scrape_interval</span>: 15s
+</span></span><span style=display:flex><span> <span style=color:#268bd2>scrape_timeout</span>: 5s
+</span></span><span style=display:flex><span> <span style=color:#268bd2>metrics_path</span>: /prometheus
+</span></span><span style=display:flex><span> <span style=color:#268bd2>static_configs</span>:
+</span></span><span style=display:flex><span> - <span style=color:#268bd2>targets</span>: [<span style=color:#2aa198>'host.docker.internal:9099'</span>]
+</span></span><span style=display:flex><span> - <span style=color:#268bd2>job_name</span>: dubbo-consumer
+</span></span><span style=display:flex><span> <span style=color:#268bd2>scrape_interval</span>: 15s
+</span></span><span style=display:flex><span> <span style=color:#268bd2>scrape_timeout</span>: 5s
+</span></span><span style=display:flex><span> <span style=color:#268bd2>metrics_path</span>: /prometheus
+</span></span><span style=display:flex><span> <span style=color:#268bd2>static_configs</span>:
+</span></span><span style=display:flex><span> - <span style=color:#268bd2>targets</span>: [<span style=color:#2aa198>'host.docker.internal:9097'</span>]
+</span></span></code></pre></div><p><code>host.docker.internal</code> 表示 Prometheus 容器访问宿主机上的 Dubbo-Go 进程。如果 Prometheus 与应用都运行在同一个 Docker 网络内,可改成容器名;如果是在 Linux 环境且该域名不可用,请改成宿主机实际 IP,或在 compose 中增加 <code>host-gateway</code> 映射。</p><h3 id=52-pushgateway-配置>5.2 Pushgateway 配置</h3><p><code>prometheus_push.yml</code> 只抓取 Pushgateway:</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 [...]
+</span></span><span style=display:flex><span> <span style=color:#268bd2>evaluation_interval</span>: 15s
+</span></span><span style=display:flex><span> <span style=color:#268bd2>scrape_interval</span>: 15s
+</span></span><span style=display:flex><span><span style=color:#268bd2>scrape_configs</span>:
+</span></span><span style=display:flex><span> - <span style=color:#268bd2>job_name</span>: <span style=color:#2aa198>'pushgateway'</span>
+</span></span><span style=display:flex><span> <span style=color:#268bd2>static_configs</span>:
+</span></span><span style=display:flex><span> - <span style=color:#268bd2>targets</span>: [<span style=color:#2aa198>'host.docker.internal:9091'</span>]
+</span></span><span style=display:flex><span> <span style=color:#268bd2>honor_labels</span>: <span style=color:#cb4b16>true</span>
+</span></span></code></pre></div><p><code>honor_labels: true</code> 会保留应用推送到 Pushgateway 的 <code>job</code>、<code>instance</code> 等标签,便于 Grafana dashboard 按服务维度展示。</p><h2 id=6-grafana-dashboard-导入>6. Grafana dashboard 导入</h2><ol><li>打开 <code>http://localhost:3000</code>,默认账号密码为 <code>admin</code> / <code>admin</code>。</li><li>进入 <code>Home -> Connections -> Data sources</code>,点击 <code>Add new data source</code>。</li><li>选择 <code>Prometheus</code>,数据源地址填写 <code>http://host.docker.interna [...]
+</span></span><span style=display:flex><span>curl http://localhost:9097/prometheus
+</span></span><span style=display:flex><span>curl http://localhost:9091/metrics
+</span></span></code></pre></div><p>如果宿主机可以访问而 Prometheus 容器访问失败,通常是 Docker 网络地址问题。把 <code>host.docker.internal</code> 改为宿主机实际 IP,或在 Linux Docker Compose 中为 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>extra_hosts</span>:
+</span></span><span style=display:flex><span> - <span style=color:#2aa198>"host.docker.internal:host-gateway"</span>
+</span></span></code></pre></div><h3 id=73-grafana-显示-no-data>7.3 Grafana 显示 No Data</h3><p>确认 Prometheus 数据源 <code>Save & test</code> 成功;在 <code>http://localhost:9090/targets</code> 确认 target 为 <code>UP</code>;在 Prometheus 查询 <code>dubbo_consumer_requests_succeed_total</code> 或 <code>dubbo_provider_requests_total</code>。如果查询为空,请确认 client 正在持续调用 server,并等待一个 scrape interval。</p><h3 id=74-pushgateway-中有旧-job>7.4 Pushgateway 中有旧 job</h3><p>Pushgateway 默认不会自动删除旧指标。优雅退出 sample 进程可以触发清理逻辑;生产环 [...]
+<button class="btn btn-primary mb-4 feedback--no">否</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disabled [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/zh-cn//overview/mannual/golang-sdk/tutorial/observability/rpc_metrics?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=%e6%8c%87%e6%a0%87%e7%9b%91%e6%8e%a7%20%28Metrics%29" target=_blank><i class="fab fa-github fa-fw"></i> 登记问题</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> 提交项目问题</a></div><nav id=TableOfContents><ul><li><a href=#1-监控架构说明>1. 监控架构说明</a><ul><li><a href=#11-pull-模式推荐生产模式>1.1 Pull 模式(推荐生产模式)</a></li><li><a href=#12-push-模式适用于短生命周期任务>1.2 Push 模式(适用于短生命周期任务)</a></li></ul></li><li><a href=#2-示例组件说明>2. 示例组件说明</a></li><li><a href=#3-快速开始>3. 快速开始</a><ul><li><a href=#31-启动监控服务栈>3.1 启动监控服务栈</a></li><li><a href=#32-配置环境变量>3.2 配置环境变量</a></li><li><a href=#3 [...]
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> 提交项目问题</a></div><nav id=TableOfContents><ul><li><a href=#1-工作模式>1. 工作模式</a><ul><li><a href=#11-pull-模式>1.1 Pull 模式</a></li><li><a href=#12-pushgateway-模式>1.2 Pushgateway 模式</a></li></ul></li><li><a href=#2-准备示例>2. 准备示例</a></li><li><a href=#3-pull-模式运行流程>3. Pull 模式运行流程</a></li><li><a href=#4-pushgateway-模式运行流程>4. Pushgateway 模式运行流程</a></li><li><a href=#5-prometheus-配置说明>5. Prometheus 配置说明</ [...]
<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>钉钉<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
<button class=contact-btn><a href=https://github.com/apache/dubbo/>GitHub</a></button></div></div><div class=footer-container-right><ul><li>文档</li><li><a href=/zh-cn/overview/home/>概览</a></li><li><a href=/zh-cn/overview/quickstart/>快速开始</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>开发者指南</a></li></ul><ul><li>资源</li><li><a href=/zh-cn/contact/>社区</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px solid #dddee4;margin-bottom:32px"></div>< [...]
project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
diff --git a/zh-cn/sitemap.xml b/zh-cn/sitemap.xml
index cc27999c7a5..05dd5fb4c09 100644
--- a/zh-cn/sitemap.xml
+++ b/zh-cn/sitemap.xml
@@ -1 +1 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"><url><loc>https://cn.dubbo.apache.org/zh-cn/blog/2023/01/16/%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4%E5%8D%87%E7%BA%A7-dubbo3-%E5%85%A8%E9%9D%A2%E5%8F%96%E4%BB%A3-hsf2/</loc><lastmod>2023-11-28T15:14:12+08:00</lastmod><changefreq>monthly</changefreq><priority>0.5</priority><xhtml:link rel="alternate" hreflang="en" href="https://cn.dubbo [...]
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8" standalone="yes"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"><url><loc>https://cn.dubbo.apache.org/zh-cn/blog/2023/01/16/%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4%E5%8D%87%E7%BA%A7-dubbo3-%E5%85%A8%E9%9D%A2%E5%8F%96%E4%BB%A3-hsf2/</loc><lastmod>2023-11-28T15:14:12+08:00</lastmod><changefreq>monthly</changefreq><priority>0.5</priority><xhtml:link rel="alternate" hreflang="en" href="https://cn.dubbo [...]
\ No newline at end of file