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 <[email protected]>
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