This is an automated email from the ASF dual-hosted git repository.
liujun pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/dubbo-go.git
The following commit(s) were added to refs/heads/main by this push:
new 95b463b35 refactor: use promauto and promhttp (#2333)
95b463b35 is described below
commit 95b463b35b1b11b5d980e3b386382486da84ad5d
Author: Wang Guan <[email protected]>
AuthorDate: Sat Jun 10 11:07:10 2023 +0800
refactor: use promauto and promhttp (#2333)
---
go.mod | 1 -
go.sum | 11 ---------
metrics/prometheus/common.go | 50 ++++++++++++++++++++++++++++++++++++++++
metrics/prometheus/metric_set.go | 10 ++++----
metrics/prometheus/reporter.go | 13 ++---------
5 files changed, 56 insertions(+), 29 deletions(-)
diff --git a/go.mod b/go.mod
index c684ac7d1..68ba611b8 100644
--- a/go.mod
+++ b/go.mod
@@ -3,7 +3,6 @@ module dubbo.apache.org/dubbo-go/v3
go 1.15
require (
- contrib.go.opencensus.io/exporter/prometheus v0.4.1
github.com/RoaringBitmap/roaring v1.2.3
github.com/Workiva/go-datastructures v1.0.52
github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5
diff --git a/go.sum b/go.sum
index 74aa9a83a..1f5151e92 100644
--- a/go.sum
+++ b/go.sum
@@ -366,8 +366,6 @@ cloud.google.com/go/workflows v1.6.0/go.mod
h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1V
cloud.google.com/go/workflows v1.7.0/go.mod
h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M=
cloud.google.com/go/workflows v1.8.0/go.mod
h1:ysGhmEajwZxGn1OhGOGKsTXc5PyxOc0vfKf5Af+to4M=
cloud.google.com/go/workflows v1.9.0/go.mod
h1:ZGkj1aFIOd9c8Gerkjjq7OW7I5+l6cSvT3ujaO/WwSA=
-contrib.go.opencensus.io/exporter/prometheus v0.4.1
h1:oObVeKo2NxpdF/fIfrPsNj6K0Prg0R0mHM+uANlYMiM=
-contrib.go.opencensus.io/exporter/prometheus v0.4.1/go.mod
h1:t9wvfitlUjGXG2IXAZsuFq26mDGid/JwCEXp+gTG/9U=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod
h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
github.com/BurntSushi/toml v0.3.1
h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
github.com/BurntSushi/toml v0.3.1/go.mod
h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
@@ -583,13 +581,11 @@ github.com/go-gl/glfw/v3.3/glfw
v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2
github.com/go-kit/kit v0.8.0/go.mod
h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
github.com/go-kit/kit v0.9.0/go.mod
h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
github.com/go-kit/kit v0.10.0/go.mod
h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o=
-github.com/go-kit/log v0.1.0 h1:DGJh0Sm43HbOeYDNnVZFl8BvcYVvjD5bqYJvp0REbwQ=
github.com/go-kit/log v0.1.0/go.mod
h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY=
github.com/go-ldap/ldap v3.0.2+incompatible/go.mod
h1:qfd9rJvER9Q0/D/Sqn1DfHRoBp40uXYvFoEVrNEPqRc=
github.com/go-ldap/ldap/v3 v3.1.10/go.mod
h1:5Zun81jBTabRaI8lzN7E1JjyEl1g6zI6u9pd8luAK4Q=
github.com/go-logfmt/logfmt v0.3.0/go.mod
h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
github.com/go-logfmt/logfmt v0.4.0/go.mod
h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
-github.com/go-logfmt/logfmt v0.5.0
h1:TrB8swr/68K7m9CcGut2g3UOihhbcbiMAYiuTXdEih4=
github.com/go-logfmt/logfmt v0.5.0/go.mod
h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A=
github.com/go-logr/logr v1.2.2/go.mod
h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0=
@@ -610,7 +606,6 @@ github.com/go-playground/validator/v10 v10.12.0/go.mod
h1:hCAPuzYvKdP33pxWa+2+6A
github.com/go-resty/resty/v2 v2.7.0
h1:me+K9p3uhSmXtrBZ4k9jcEAfJmuC8IivWHwaLZwPrFY=
github.com/go-resty/resty/v2 v2.7.0/go.mod
h1:9PWDzw47qPphMRFfhsyk0NnSgvluHcljSMVIq3w7q0I=
github.com/go-sql-driver/mysql v1.4.0/go.mod
h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
-github.com/go-stack/stack v1.8.0
h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk=
github.com/go-stack/stack v1.8.0/go.mod
h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod
h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
github.com/go-test/deep v1.0.2/go.mod
h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
@@ -632,8 +627,6 @@ github.com/golang/groupcache
v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4er
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod
h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod
h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod
h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
-github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da
h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
-github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod
h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/mock v1.1.1/go.mod
h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/mock v1.2.0/go.mod
h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/mock v1.3.1/go.mod
h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
@@ -1053,7 +1046,6 @@ github.com/prometheus/common v0.9.1/go.mod
h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8b
github.com/prometheus/common v0.10.0/go.mod
h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=
github.com/prometheus/common v0.15.0/go.mod
h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s=
github.com/prometheus/common v0.26.0/go.mod
h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc=
-github.com/prometheus/common v0.28.0/go.mod
h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls=
github.com/prometheus/common v0.32.1
h1:hWIdL3N2HoUx3B8j3YN9mWor0qhY/NlEKZEaXxuIRh4=
github.com/prometheus/common v0.32.1/go.mod
h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls=
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod
h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
@@ -1066,8 +1058,6 @@ github.com/prometheus/procfs v0.2.0/go.mod
h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4O
github.com/prometheus/procfs v0.6.0/go.mod
h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
github.com/prometheus/procfs v0.7.3
h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU=
github.com/prometheus/procfs v0.7.3/go.mod
h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
-github.com/prometheus/statsd_exporter v0.21.0
h1:hA05Q5RFeIjgwKIYEdFd59xu5Wwaznf33yKI+pyX6T8=
-github.com/prometheus/statsd_exporter v0.21.0/go.mod
h1:rbT83sZq2V+p73lHhPZfMc3MLCHmSHelCh9hSGYNLTQ=
github.com/prometheus/tsdb v0.7.1/go.mod
h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod
h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
github.com/rhnvrm/simples3 v0.6.1/go.mod
h1:Y+3vYm2V7Y4VijFoJHHTrja6OgPrJ2cBti8dPGkC3sA=
@@ -1213,7 +1203,6 @@ go.opencensus.io v0.22.2/go.mod
h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
-go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M=
go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=
go.opentelemetry.io/otel v1.11.0
h1:kfToEGMDq6TrVrJ9Vht84Y8y9enykSZzDDZglV0kIEk=
go.opentelemetry.io/otel v1.11.0/go.mod
h1:H2KtuEphyMvlhZ+F7tg9GRhAOe60moNx61Ex+WmiKkk=
diff --git a/metrics/prometheus/common.go b/metrics/prometheus/common.go
index 2745b54ed..7df0389a9 100644
--- a/metrics/prometheus/common.go
+++ b/metrics/prometheus/common.go
@@ -25,6 +25,7 @@ import (
import (
"github.com/prometheus/client_golang/prometheus"
+ "github.com/prometheus/client_golang/prometheus/promauto"
)
import (
@@ -114,3 +115,52 @@ func newSummaryVec(name, namespace string, labels
[]string, maxAge int64) *prome
labels,
)
}
+
+// create an auto register histogram vec
+func newAutoHistogramVec(name, namespace string, labels []string)
*prometheus.HistogramVec {
+ return promauto.NewHistogramVec(
+ prometheus.HistogramOpts{
+ Namespace: namespace,
+ Name: name,
+ Buckets: defaultHistogramBucket,
+ },
+ labels)
+}
+
+// create an auto register counter vec
+func newAutoCounterVec(name, namespace string, labels []string)
*prometheus.CounterVec {
+ return promauto.NewCounterVec(
+ prometheus.CounterOpts{
+ Name: name,
+ Namespace: namespace,
+ }, labels)
+}
+
+// create an auto register gauge vec
+func newAutoGaugeVec(name, namespace string, labels []string)
*prometheus.GaugeVec {
+ return promauto.NewGaugeVec(
+ prometheus.GaugeOpts{
+ Name: name,
+ Namespace: namespace,
+ }, labels)
+}
+
+// create an auto register summary vec
+func newAutoSummaryVec(name, namespace string, labels []string, maxAge int64)
*prometheus.SummaryVec {
+ return promauto.NewSummaryVec(
+ prometheus.SummaryOpts{
+ Namespace: namespace,
+ Name: name,
+ Objectives: map[float64]float64{
+ 0.5: 0.01,
+ 0.75: 0.01,
+ 0.90: 0.005,
+ 0.98: 0.002,
+ 0.99: 0.001,
+ 0.999: 0.0001,
+ },
+ MaxAge: time.Duration(maxAge),
+ },
+ labels,
+ )
+}
diff --git a/metrics/prometheus/metric_set.go b/metrics/prometheus/metric_set.go
index cf0f1477b..4226771fe 100644
--- a/metrics/prometheus/metric_set.go
+++ b/metrics/prometheus/metric_set.go
@@ -49,12 +49,10 @@ var labelNames = []string{applicationNameKey, groupKey,
hostnameKey, interfaceKe
// init metric set and register to prometheus
func (ms *metricSet) initAndRegister(reporterConfig *metrics.ReporterConfig) {
- ms.consumerRTSummaryVec = newSummaryVec(buildMetricsName(consumerField,
rtField, milliSecondsField, summaryField), reporterConfig.Namespace,
labelNames, reporterConfig.SummaryMaxAge)
- ms.providerRTSummaryVec = newSummaryVec(buildMetricsName(providerField,
rtField, milliSecondsField, summaryField), reporterConfig.Namespace,
labelNames, reporterConfig.SummaryMaxAge)
- ms.consumerRequestTotalCounterVec =
newCounterVec(buildMetricsName(consumerField, requestsField, totalField),
reporterConfig.Namespace, labelNames)
- ms.providerRequestTotalCounterVec =
newCounterVec(buildMetricsName(providerField, requestsField, totalField),
reporterConfig.Namespace, labelNames)
-
- prometheus.DefaultRegisterer.MustRegister(ms.consumerRTSummaryVec,
ms.providerRTSummaryVec, ms.consumerRequestTotalCounterVec,
ms.providerRequestTotalCounterVec)
+ ms.consumerRTSummaryVec =
newAutoSummaryVec(buildMetricsName(consumerField, rtField, milliSecondsField,
summaryField), reporterConfig.Namespace, labelNames,
reporterConfig.SummaryMaxAge)
+ ms.providerRTSummaryVec =
newAutoSummaryVec(buildMetricsName(providerField, rtField, milliSecondsField,
summaryField), reporterConfig.Namespace, labelNames,
reporterConfig.SummaryMaxAge)
+ ms.consumerRequestTotalCounterVec =
newAutoCounterVec(buildMetricsName(consumerField, requestsField, totalField),
reporterConfig.Namespace, labelNames)
+ ms.providerRequestTotalCounterVec =
newAutoCounterVec(buildMetricsName(providerField, requestsField, totalField),
reporterConfig.Namespace, labelNames)
}
func buildMetricsName(args ...string) string {
diff --git a/metrics/prometheus/reporter.go b/metrics/prometheus/reporter.go
index 96b799640..249510f55 100644
--- a/metrics/prometheus/reporter.go
+++ b/metrics/prometheus/reporter.go
@@ -24,9 +24,8 @@ import (
)
import (
- ocprom "contrib.go.opencensus.io/exporter/prometheus"
"github.com/dubbogo/gost/log/logger"
- "github.com/prometheus/client_golang/prometheus"
+ "github.com/prometheus/client_golang/prometheus/promhttp"
)
import (
@@ -85,17 +84,9 @@ func newPrometheusReporter(reporterConfig
*metrics.ReporterConfig) metrics.Repor
}
func (reporter *PrometheusReporter) startupServer(reporterConfig
*metrics.ReporterConfig) {
- metricsExporter, err := ocprom.NewExporter(ocprom.Options{
- Registry: prometheus.DefaultRegisterer.(*prometheus.Registry),
- })
- if err != nil {
- logger.Errorf("new prometheus reporter with error = %s", err)
- return
- }
-
// start server
mux := http.NewServeMux()
- mux.Handle(reporterConfig.Path, metricsExporter)
+ mux.Handle(reporterConfig.Path, promhttp.Handler())
reporterInstance.reporterServer = &http.Server{Addr: ":" +
reporterConfig.Port, Handler: mux}
if err := reporterInstance.reporterServer.ListenAndServe(); err != nil {
logger.Warnf("new prometheus reporter with error = %s", err)