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{