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 cccb67d80 feat: add rpc exception metrics (#2459)
cccb67d80 is described below

commit cccb67d802da04479f8ec0e68f65d3f332249bf0
Author: Wang Guan <wg1024c...@gmail.com>
AuthorDate: Fri Oct 27 11:00:32 2023 +0800

    feat: add rpc exception metrics (#2459)
---
 metrics/rpc/collector.go  | 14 ++++++++++++++
 metrics/rpc/metric_set.go | 10 ++++++++--
 2 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/metrics/rpc/collector.go b/metrics/rpc/collector.go
index d9e9f0551..08881382c 100644
--- a/metrics/rpc/collector.go
+++ b/metrics/rpc/collector.go
@@ -95,6 +95,9 @@ func (c *rpcCollector) afterInvokeHandler(event 
*metricsEvent) {
        if event.result != nil {
                if event.result.Error() == nil {
                        c.incRequestsSucceedTotal(role, labels)
+               } else {
+                       // TODO: Breaking down RPC exceptions further
+                       c.incRequestsFailedTotal(role, labels)
                }
        }
        c.reportRTMilliseconds(role, labels, event.costTime.Milliseconds())
@@ -149,6 +152,17 @@ func (c *rpcCollector) incRequestsSucceedTotal(role 
string, labels map[string]st
        }
 }
 
+func (c *rpcCollector) incRequestsFailedTotal(role string, labels 
map[string]string) {
+       switch role {
+       case constant.SideProvider:
+               c.metricSet.provider.requestsFailedTotal.Inc(labels)
+               c.metricSet.provider.requestsFailedTotalAggregate.Inc(labels)
+       case constant.SideConsumer:
+               c.metricSet.consumer.requestsFailedTotal.Inc(labels)
+               c.metricSet.consumer.requestsFailedTotalAggregate.Inc(labels)
+       }
+}
+
 func (c *rpcCollector) reportRTMilliseconds(role string, labels 
map[string]string, cost int64) {
        switch role {
        case constant.SideProvider:
diff --git a/metrics/rpc/metric_set.go b/metrics/rpc/metric_set.go
index a27d439bc..aa349467c 100644
--- a/metrics/rpc/metric_set.go
+++ b/metrics/rpc/metric_set.go
@@ -43,6 +43,8 @@ type rpcCommonMetrics struct {
        requestsProcessingTotal       metrics.GaugeVec
        requestsSucceedTotal          metrics.CounterVec
        requestsSucceedTotalAggregate metrics.AggregateCounterVec
+       requestsFailedTotal           metrics.CounterVec
+       requestsFailedTotalAggregate  metrics.AggregateCounterVec
        rtMilliseconds                metrics.RtVec
        rtMillisecondsQuantiles       metrics.QuantileMetricVec
        rtMillisecondsAggregate       metrics.RtVec
@@ -66,12 +68,14 @@ func (pm *providerMetrics) init(registry 
metrics.MetricRegistry) {
        pm.requestsProcessingTotal = metrics.NewGaugeVec(registry, 
metrics.NewMetricKey("dubbo_provider_requests_processing_total", "The number of 
received requests being processed by the provider"))
        pm.requestsSucceedTotal = metrics.NewCounterVec(registry, 
metrics.NewMetricKey("dubbo_provider_requests_succeed_total", "The number of 
requests successfully received by the provider"))
        pm.requestsSucceedTotalAggregate = 
metrics.NewAggregateCounterVec(registry, 
metrics.NewMetricKey("dubbo_provider_requests_succeed_total_aggregate", "The 
number of successful requests received by the provider under the sliding 
window"))
+       pm.requestsFailedTotal = metrics.NewCounterVec(registry, 
metrics.NewMetricKey("dubbo_provider_requests_failed_total", "Total Failed 
Requests"))
+       pm.requestsFailedTotalAggregate = 
metrics.NewAggregateCounterVec(registry, 
metrics.NewMetricKey("dubbo_provider_requests_failed_total_aggregate", "Total 
Failed Aggregate Requests"))
        pm.rtMilliseconds = metrics.NewRtVec(registry,
                metrics.NewMetricKey("dubbo_provider_rt_milliseconds", 
"response time among all requests processed by the provider"),
                &metrics.RtOpts{Aggregate: false},
        )
        pm.rtMillisecondsAggregate = metrics.NewRtVec(registry,
-               metrics.NewMetricKey("dubbo_provider_rt_milliseconds", 
"response time of the provider under the sliding window"),
+               metrics.NewMetricKey("dubbo_provider_rt", "response time of the 
provider under the sliding window"),
                &metrics.RtOpts{Aggregate: true, BucketNum: 
metrics.DefaultBucketNum, TimeWindowSeconds: metrics.DefaultTimeWindowSeconds},
        )
        pm.rtMillisecondsQuantiles = metrics.NewQuantileMetricVec(registry, 
[]*metrics.MetricKey{
@@ -89,12 +93,14 @@ func (cm *consumerMetrics) init(registry 
metrics.MetricRegistry) {
        cm.requestsProcessingTotal = metrics.NewGaugeVec(registry, 
metrics.NewMetricKey("dubbo_consumer_requests_processing_total", "The number of 
received requests being processed by the consumer"))
        cm.requestsSucceedTotal = metrics.NewCounterVec(registry, 
metrics.NewMetricKey("dubbo_consumer_requests_succeed_total", "The number of 
successful requests sent by consumers"))
        cm.requestsSucceedTotalAggregate = 
metrics.NewAggregateCounterVec(registry, 
metrics.NewMetricKey("dubbo_consumer_requests_succeed_total_aggregate", "The 
number of successful requests sent by consumers under the sliding window"))
+       cm.requestsFailedTotal = metrics.NewCounterVec(registry, 
metrics.NewMetricKey("dubbo_consumer_requests_failed_total", "Total Failed 
Requests"))
+       cm.requestsFailedTotalAggregate = 
metrics.NewAggregateCounterVec(registry, 
metrics.NewMetricKey("dubbo_consumer_requests_failed_total_aggregate", "Total 
Failed Aggregate Requests"))
        cm.rtMilliseconds = metrics.NewRtVec(registry,
                metrics.NewMetricKey("dubbo_consumer_rt_milliseconds", 
"response time among all requests from consumers"),
                &metrics.RtOpts{Aggregate: false},
        )
        cm.rtMillisecondsAggregate = metrics.NewRtVec(registry,
-               metrics.NewMetricKey("dubbo_consumer_rt_milliseconds", 
"response time of the consumer under the sliding window"),
+               metrics.NewMetricKey("dubbo_consumer_rt", "response time of the 
consumer under the sliding window"),
                &metrics.RtOpts{Aggregate: true, BucketNum: 
metrics.DefaultBucketNum, TimeWindowSeconds: metrics.DefaultTimeWindowSeconds},
        )
        cm.rtMillisecondsQuantiles = metrics.NewQuantileMetricVec(registry, 
[]*metrics.MetricKey{

Reply via email to