Track number of registered watchers in apiserver

Kubernetes-commit: bdd9492da0c992e532c5e5d07cae3b68c9b7b78f
This commit is contained in:
wojtekt 2018-05-14 11:22:10 +02:00 committed by Kubernetes Publisher
parent 0132b6986d
commit 27dca16e75
2 changed files with 14 additions and 0 deletions

View File

@ -30,6 +30,7 @@ import (
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
"k8s.io/apimachinery/pkg/watch"
"k8s.io/apiserver/pkg/endpoints/handlers/negotiation"
"k8s.io/apiserver/pkg/endpoints/metrics"
"k8s.io/apiserver/pkg/endpoints/request"
"k8s.io/apiserver/pkg/server/httplog"
"k8s.io/apiserver/pkg/util/wsstream"
@ -140,6 +141,10 @@ type WatchServer struct {
// ServeHTTP serves a series of encoded events via HTTP with Transfer-Encoding: chunked
// or over a websocket connection.
func (s *WatchServer) ServeHTTP(w http.ResponseWriter, req *http.Request) {
kind := s.Scope.Kind
metrics.RegisteredWatchers.WithLabelValues(kind.Group, kind.Version, kind.Kind).Inc()
defer metrics.RegisteredWatchers.WithLabelValues(kind.Group, kind.Version, kind.Kind).Dec()
w = httplog.Unlogged(w)
if wsstream.IsWebSocketRequest(req) {

View File

@ -93,6 +93,14 @@ var (
},
[]string{"requestKind"},
)
// RegisteredWatchers is a number of currently registered watchers splitted by resource.
RegisteredWatchers = prometheus.NewGaugeVec(
prometheus.GaugeOpts{
Name: "apiserver_registered_watchers",
Help: "Number of currently registered watchers for a given resources",
},
[]string{"group", "version", "kind"},
)
// Because of volatality of the base metric this is pre-aggregated one. Instead of reporing current usage all the time
// it reports maximal usage during the last second.
currentInflightRequests = prometheus.NewGaugeVec(
@ -111,6 +119,7 @@ var (
requestLatenciesSummary,
responseSizes,
DroppedRequests,
RegisteredWatchers,
currentInflightRequests,
}
)