github.com/cilium/cilium@v1.16.2/pkg/rate/metrics/metrics.go (about)

     1  // SPDX-License-Identifier: Apache-2.0
     2  // Copyright Authors of Cilium
     3  
     4  package metrics
     5  
     6  import (
     7  	"strconv"
     8  
     9  	"github.com/cilium/cilium/pkg/metrics"
    10  	"github.com/cilium/cilium/pkg/rate"
    11  )
    12  
    13  func APILimiterObserver() rate.MetricsObserver {
    14  	return &apiRateLimitingMetrics{}
    15  }
    16  
    17  type apiRateLimitingMetrics struct{}
    18  
    19  func (a *apiRateLimitingMetrics) ProcessedRequest(name string, v rate.MetricsValues) {
    20  	metrics.APILimiterProcessingDuration.WithLabelValues(name, "mean").Set(v.MeanProcessingDuration)
    21  	metrics.APILimiterProcessingDuration.WithLabelValues(name, "estimated").Set(v.EstimatedProcessingDuration)
    22  	metrics.APILimiterWaitDuration.WithLabelValues(name, "mean").Set(v.MeanWaitDuration)
    23  	metrics.APILimiterWaitDuration.WithLabelValues(name, "max").Set(v.MaxWaitDuration.Seconds())
    24  	metrics.APILimiterWaitDuration.WithLabelValues(name, "min").Set(v.MinWaitDuration.Seconds())
    25  	metrics.APILimiterRequestsInFlight.WithLabelValues(name, "in-flight").Set(float64(v.CurrentRequestsInFlight))
    26  	metrics.APILimiterRequestsInFlight.WithLabelValues(name, "limit").Set(float64(v.ParallelRequests))
    27  	metrics.APILimiterRateLimit.WithLabelValues(name, "limit").Set(float64(v.Limit))
    28  	metrics.APILimiterRateLimit.WithLabelValues(name, "burst").Set(float64(v.Burst))
    29  	metrics.APILimiterAdjustmentFactor.WithLabelValues(name).Set(v.AdjustmentFactor)
    30  
    31  	if v.Outcome == "" {
    32  		metrics.APILimiterWaitHistoryDuration.WithLabelValues(name).Observe(v.WaitDuration.Seconds())
    33  		v.Outcome = metrics.Error2Outcome(v.Error)
    34  	}
    35  
    36  	if v.ReturnCode == -1 {
    37  		v.ReturnCode = metrics.LabelOutcome2Code(v.Outcome)
    38  	}
    39  
    40  	metrics.APILimiterProcessedRequests.WithLabelValues(name, v.Outcome, strconv.Itoa(v.ReturnCode)).Inc()
    41  }