Files
argo-cd/controller/metrics/transportwrapper.go
2025-04-16 13:15:42 -07:00

25 lines
842 B
Go

package metrics
import (
"strconv"
"github.com/argoproj/pkg/v2/kubeclientmetrics"
"k8s.io/client-go/rest"
"github.com/argoproj/argo-cd/v3/pkg/apis/application/v1alpha1"
)
// AddMetricsTransportWrapper adds a transport wrapper which increments 'argocd_app_k8s_request_total' counter on each kubernetes request
func AddMetricsTransportWrapper(server *MetricsServer, app *v1alpha1.Application, config *rest.Config) *rest.Config {
inc := func(resourceInfo kubeclientmetrics.ResourceInfo) error {
namespace := resourceInfo.Namespace
kind := resourceInfo.Kind
statusCode := strconv.Itoa(resourceInfo.StatusCode)
server.IncKubernetesRequest(app, resourceInfo.Server, statusCode, string(resourceInfo.Verb), kind, namespace)
return nil
}
newConfig := kubeclientmetrics.AddMetricsTransportWrapper(config, inc)
return newConfig
}