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