当前能力
-
Metrics 指标
核心在 /metrics 和 /filter/metrics/filter.go。
支持:
- RPC 指标:provider/consumer QPS、请求总数、处理中请求数、成功/失败数、RT、P50/P90/P95/P99。
- 细粒度错误分类:timeout、limit、service unavailable、business failed、unknown。
- Registry 指标:register/subscribe/notify/directory/service-level register 等。
- Metadata 指标:metadata push/sub/store provider/subscribe service RT 等。
- Config Center 指标:配置变更次数,按 key/group/config center/change type 打标签。
- Application info 指标:应用名、版本、host、ip 等。
- 聚合窗口指标:sliding window aggregate RT/counter。
-
Prometheus 暴露与 Pushgateway
实现在 /metrics/prometheus/registry.go。
支持:
- Pull 模式:启动 HTTP endpoint,默认
:9090/metrics。
- Push 模式:推送到 Prometheus Pushgateway,支持 job、username/password、push interval。
Counter/Gauge/Histogram/Summary/RT registry 抽象,Prometheus 是默认实现。
- 优雅关闭时关闭 exporter server。
-
OpenTelemetry Tracing
核心在 /otel/trace 和 /filter/otel/trace/filter.go。
支持:
- client/server trace filter:自动创建 span、注入/提取 trace context、设置 RPC semantic attributes。
- exporters:
stdout、jaeger、zipkin、otlp-http、otlp-grpc。
- propagator:
w3c、b3。
- sampling:
always、never、ratio。
- OTLP HTTP 支持
insecure 选项。
- 使用 OpenTelemetry
semconv/v1.21.0。
-
日志与 trace 关联
这是你提到的 apache/dubbo-go#3195 / issue #3182 对应能力。
当前代码在 /logger:
- 新增
logger.CtxLogger 接口。
CtxInfo/CtxDebug/CtxWarn/CtxError 及格式化版本可从 context.Context 提取 trace_id、span_id、trace_flags。
- 支持 zap 和 logrus 适配。
- 可配置
trace-integration.enabled。
- 可配置
record-error-to-span,把 error log 记录到当前 OTel span。
注意:本地代码里 ZapCtxLogger / LogrusCtxLogger 目前没有实现 OpsLogger.SetLoggerLevel,所以开启 trace integration 后动态调日志级别可能无法通过 logger.SetLoggerLevel 生效。这也是 PR review 里曾指出的问题之一。
-
Access Log
在 /filter/accesslog/filter.go。
支持:
- 按 service/reference 配置
accesslog。
true/default 写入默认 logger。
- 文件路径写入指定 access log 文件。
- 采集 interface、method、version、group、timestamp、local/remote addr、args/type 等调用信息。
- 后台异步写入,有 buffer、超时、关闭 drain、文件句柄缓存和按日期轮转。
-
Kubernetes Probe
在 /metrics/probe。
支持:
/live、/ready、/startup,默认端口 22222。
- 可注册自定义 liveness/readiness/startup check。
- 可使用内部状态:server
Serve() 后设置 startup/ready。
- 优雅关闭时会把 ready 置 false。
-
旧 OpenTracing 能力仍保留
/filter/tracing/filter.go 和 Dubbo/GRPC 相关路径还保留 OpenTracing/Jaeger 逻辑,但 /config/tracing_config.go 已标注 deprecated,方向上是用 OtelConfig 替代。
配置入口
New API 入口主要是:
YAML/Old API 配置入口主要是:
dubbo.metrics.*
dubbo.otel.tracing.*
dubbo.logger.trace-integration.*
- service/reference 的
accesslog
Samples 状态
apache/dubbo-go-samples#1030 已合并,增加了 logger/trace-integration 示例,展示 log.WithTraceIntegration(true) 和 CtxLogger 用法。
你给的 metrics/prometheus_grafana 当前覆盖:
- Prometheus + Grafana + Pushgateway + ZooKeeper docker compose。
- Push 模式:应用 -> Pushgateway -> Prometheus -> Grafana。
- Pull 模式:应用 -> Prometheus -> Grafana。
- Grafana dashboard:QPS、成功率、延迟等。
- Pushgateway “僵尸指标”处理说明,包括应用侧 graceful exit DELETE 和
pgw-cleaner 工具。
整体看,dubbo-go 现在的可观测能力已经比较完整:指标采集和导出是最成熟的一块,OTel trace 已经标准化,最近补上了日志 trace correlation;probe/accesslog 则补齐运行时可诊断和 K8s 运维场景。
当前能力
Metrics 指标
核心在 /metrics 和 /filter/metrics/filter.go。
支持:
Prometheus 暴露与 Pushgateway
实现在 /metrics/prometheus/registry.go。
支持:
:9090/metrics。Counter/Gauge/Histogram/Summary/RTregistry 抽象,Prometheus 是默认实现。OpenTelemetry Tracing
核心在 /otel/trace 和 /filter/otel/trace/filter.go。
支持:
stdout、jaeger、zipkin、otlp-http、otlp-grpc。w3c、b3。always、never、ratio。insecure选项。semconv/v1.21.0。日志与 trace 关联
这是你提到的 apache/dubbo-go#3195 / issue #3182 对应能力。
当前代码在 /logger:
logger.CtxLogger接口。CtxInfo/CtxDebug/CtxWarn/CtxError及格式化版本可从context.Context提取trace_id、span_id、trace_flags。trace-integration.enabled。record-error-to-span,把 error log 记录到当前 OTel span。注意:本地代码里
ZapCtxLogger/LogrusCtxLogger目前没有实现OpsLogger.SetLoggerLevel,所以开启 trace integration 后动态调日志级别可能无法通过logger.SetLoggerLevel生效。这也是 PR review 里曾指出的问题之一。Access Log
在 /filter/accesslog/filter.go。
支持:
accesslog。true/default写入默认 logger。Kubernetes Probe
在 /metrics/probe。
支持:
/live、/ready、/startup,默认端口22222。Serve()后设置 startup/ready。旧 OpenTracing 能力仍保留
/filter/tracing/filter.go 和 Dubbo/GRPC 相关路径还保留 OpenTracing/Jaeger 逻辑,但 /config/tracing_config.go 已标注 deprecated,方向上是用
OtelConfig替代。配置入口
New API 入口主要是:
dubbo.WithMetrics(...):/options.godubbo.WithTracing(...):同上,实际写入otel.tracingdubbo.WithLogger(...):同上YAML/Old API 配置入口主要是:
dubbo.metrics.*dubbo.otel.tracing.*dubbo.logger.trace-integration.*accesslogSamples 状态
apache/dubbo-go-samples#1030 已合并,增加了
logger/trace-integration示例,展示log.WithTraceIntegration(true)和CtxLogger用法。你给的 metrics/prometheus_grafana 当前覆盖:
pgw-cleaner工具。整体看,dubbo-go 现在的可观测能力已经比较完整:指标采集和导出是最成熟的一块,OTel trace 已经标准化,最近补上了日志 trace correlation;probe/accesslog 则补齐运行时可诊断和 K8s 运维场景。