mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-05 18:24:07 +00:00
kubelet: intercept DRA GRPC to record metrics
This commit is contained in:
parent
3a67bc0def
commit
9a044cd46a
@ -27,10 +27,12 @@ import (
|
|||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
"google.golang.org/grpc/connectivity"
|
"google.golang.org/grpc/connectivity"
|
||||||
"google.golang.org/grpc/credentials/insecure"
|
"google.golang.org/grpc/credentials/insecure"
|
||||||
|
"google.golang.org/grpc/status"
|
||||||
|
|
||||||
utilversion "k8s.io/apimachinery/pkg/util/version"
|
utilversion "k8s.io/apimachinery/pkg/util/version"
|
||||||
"k8s.io/klog/v2"
|
"k8s.io/klog/v2"
|
||||||
drapb "k8s.io/kubelet/pkg/apis/dra/v1alpha4"
|
drapb "k8s.io/kubelet/pkg/apis/dra/v1alpha4"
|
||||||
|
"k8s.io/kubernetes/pkg/kubelet/metrics"
|
||||||
)
|
)
|
||||||
|
|
||||||
// NewDRAPluginClient returns a wrapper around those gRPC methods of a DRA
|
// NewDRAPluginClient returns a wrapper around those gRPC methods of a DRA
|
||||||
@ -86,6 +88,7 @@ func (p *Plugin) getOrCreateGRPCConn() (*grpc.ClientConn, error) {
|
|||||||
grpc.WithContextDialer(func(ctx context.Context, target string) (net.Conn, error) {
|
grpc.WithContextDialer(func(ctx context.Context, target string) (net.Conn, error) {
|
||||||
return (&net.Dialer{}).DialContext(ctx, network, target)
|
return (&net.Dialer{}).DialContext(ctx, network, target)
|
||||||
}),
|
}),
|
||||||
|
grpc.WithChainUnaryInterceptor(newMetricsInterceptor(p.name)),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -145,3 +148,12 @@ func (p *Plugin) NodeUnprepareResources(
|
|||||||
logger.V(4).Info("Done calling NodeUnprepareResources rpc", "response", response, "err", err)
|
logger.V(4).Info("Done calling NodeUnprepareResources rpc", "response", response, "err", err)
|
||||||
return response, err
|
return response, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func newMetricsInterceptor(pluginName string) grpc.UnaryClientInterceptor {
|
||||||
|
return func(ctx context.Context, method string, req, reply any, conn *grpc.ClientConn, invoker grpc.UnaryInvoker, opts ...grpc.CallOption) error {
|
||||||
|
start := time.Now()
|
||||||
|
err := invoker(ctx, method, req, reply, conn, opts...)
|
||||||
|
metrics.DRAGRPCOperationsDuration.WithLabelValues(pluginName, method, status.Code(err).String()).Observe(time.Since(start).Seconds())
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user