cmd/k8s-operator: add metrics for attempted/uploaded session recordings (#12765)

Updates tailscale/corp#19821

Signed-off-by: Irbe Krumina <irbe@tailscale.com>
pull/12769/head
Irbe Krumina 4 months ago committed by GitHub
parent 6a982faa7d
commit 986d60a094
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -33,7 +33,16 @@ import (
var whoIsKey = ctxkey.New("", (*apitype.WhoIsResponse)(nil)) var whoIsKey = ctxkey.New("", (*apitype.WhoIsResponse)(nil))
var counterNumRequestsProxied = clientmetric.NewCounter("k8s_auth_proxy_requests_proxied") var (
// counterNumRequestsproxies counts the number of API server requests proxied via this proxy.
counterNumRequestsProxied = clientmetric.NewCounter("k8s_auth_proxy_requests_proxied")
// counterSessionRecordingsAttempted counts the number of session recording attempts.
counterSessionRecordingsAttempted = clientmetric.NewCounter("k8s_auth_proxy__session_recordings_attempted")
// counterSessionRecordingsUploaded counts the number of successfully uploaded session recordings.
counterSessionRecordingsUploaded = clientmetric.NewCounter("k8s_auth_proxy_session_recordings_uploaded")
)
type apiServerProxyMode int type apiServerProxyMode int
@ -223,6 +232,7 @@ func (ap *apiserverProxy) serveExec(w http.ResponseWriter, r *http.Request) {
ap.rp.ServeHTTP(w, r.WithContext(whoIsKey.WithValue(r.Context(), who))) ap.rp.ServeHTTP(w, r.WithContext(whoIsKey.WithValue(r.Context(), who)))
return return
} }
counterSessionRecordingsAttempted.Add(1) // at this point we know that users intended for this session to be recorded
if !failOpen && len(addrs) == 0 { if !failOpen && len(addrs) == 0 {
msg := "forbidden: 'kubectl exec' session must be recorded, but no recorders are available." msg := "forbidden: 'kubectl exec' session must be recorded, but no recorders are available."
ap.log.Error(msg) ap.log.Error(msg)

@ -135,6 +135,7 @@ func (h *spdyHijacker) setUpRecording(ctx context.Context, conn net.Conn) (net.C
case err = <-errChan: case err = <-errChan:
} }
if err == nil { if err == nil {
counterSessionRecordingsUploaded.Add(1)
h.log.Info("finished uploading the recording") h.log.Info("finished uploading the recording")
return return
} }

Loading…
Cancel
Save