Merge pull request #25733 from wojtek-t/metric_by_content_type

Split request_count metric by contentType
This commit is contained in:
Daniel Smith 2016-05-18 17:29:57 -07:00
commit 98c91b9787
4 changed files with 9 additions and 8 deletions

View File

@ -35,9 +35,9 @@ var (
requestCounter = prometheus.NewCounterVec( requestCounter = prometheus.NewCounterVec(
prometheus.CounterOpts{ prometheus.CounterOpts{
Name: "apiserver_request_count", Name: "apiserver_request_count",
Help: "Counter of apiserver requests broken out for each verb, API resource, client, and HTTP response code.", Help: "Counter of apiserver requests broken out for each verb, API resource, client, and HTTP response contentType and code.",
}, },
[]string{"verb", "resource", "client", "code"}, []string{"verb", "resource", "client", "contentType", "code"},
) )
requestLatencies = prometheus.NewHistogramVec( requestLatencies = prometheus.NewHistogramVec(
prometheus.HistogramOpts{ prometheus.HistogramOpts{
@ -66,9 +66,9 @@ func Register() {
prometheus.MustRegister(requestLatenciesSummary) prometheus.MustRegister(requestLatenciesSummary)
} }
func Monitor(verb, resource *string, client string, httpCode int, reqStart time.Time) { func Monitor(verb, resource *string, client, contentType string, httpCode int, reqStart time.Time) {
elapsed := float64((time.Since(reqStart)) / time.Microsecond) elapsed := float64((time.Since(reqStart)) / time.Microsecond)
requestCounter.WithLabelValues(*verb, *resource, client, codeToString(httpCode)).Inc() requestCounter.WithLabelValues(*verb, *resource, client, contentType, codeToString(httpCode)).Inc()
requestLatencies.WithLabelValues(*verb, *resource).Observe(elapsed) requestLatencies.WithLabelValues(*verb, *resource).Observe(elapsed)
requestLatenciesSummary.WithLabelValues(*verb, *resource).Observe(elapsed) requestLatenciesSummary.WithLabelValues(*verb, *resource).Observe(elapsed)
} }
@ -99,7 +99,7 @@ func InstrumentRouteFunc(verb, resource string, routeFunc restful.RouteFunction)
response.ResponseWriter = rw response.ResponseWriter = rw
routeFunc(request, response) routeFunc(request, response)
Monitor(&verb, &resource, utilnet.GetHTTPClient(request.Request), delegate.status, now) Monitor(&verb, &resource, utilnet.GetHTTPClient(request.Request), rw.Header().Get("Content-Type"), delegate.status, now)
}) })
} }

View File

@ -57,7 +57,7 @@ func (r *ProxyHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) {
var apiResource string var apiResource string
var httpCode int var httpCode int
reqStart := time.Now() reqStart := time.Now()
defer metrics.Monitor(&verb, &apiResource, net.GetHTTPClient(req), httpCode, reqStart) defer metrics.Monitor(&verb, &apiResource, net.GetHTTPClient(req), w.Header().Get("Content-Type"), httpCode, reqStart)
requestInfo, err := r.requestInfoResolver.GetRequestInfo(req) requestInfo, err := r.requestInfoResolver.GetRequestInfo(req)
if err != nil || !requestInfo.IsResourceRequest { if err != nil || !requestInfo.IsResourceRequest {

View File

@ -50,8 +50,9 @@ type clientPoolImpl struct {
// NewClientPool returns a ClientPool from the specified config // NewClientPool returns a ClientPool from the specified config
func NewClientPool(config *restclient.Config, apiPathResolverFunc APIPathResolverFunc) ClientPool { func NewClientPool(config *restclient.Config, apiPathResolverFunc APIPathResolverFunc) ClientPool {
confCopy := *config
return &clientPoolImpl{ return &clientPoolImpl{
config: config, config: &confCopy,
clients: map[unversioned.GroupVersion]*Client{}, clients: map[unversioned.GroupVersion]*Client{},
apiPathResolverFunc: apiPathResolverFunc, apiPathResolverFunc: apiPathResolverFunc,
} }

View File

@ -23,7 +23,7 @@ import (
) )
var KnownApiServerMetrics = map[string][]string{ var KnownApiServerMetrics = map[string][]string{
"apiserver_request_count": {"verb", "resource", "client", "code"}, "apiserver_request_count": {"verb", "resource", "client", "contentType", "code"},
"apiserver_request_latencies_bucket": {"verb", "resource", "le"}, "apiserver_request_latencies_bucket": {"verb", "resource", "le"},
"apiserver_request_latencies_count": {"verb", "resource"}, "apiserver_request_latencies_count": {"verb", "resource"},
"apiserver_request_latencies_sum": {"verb", "resource"}, "apiserver_request_latencies_sum": {"verb", "resource"},