Move /resetMetrics to DELETE /metrics

Reduces the surface area of the API server slightly and allows
downstream components to have deleteable metrics. After this change
genericapiserver will *not* have metrics unless the caller defines it
(allows different apiserver implementations to make that choice on their
own).
This commit is contained in:
Clayton Coleman 2016-04-06 17:52:28 -04:00
parent ff1da7674d
commit 0f95b91f96
3 changed files with 16 additions and 8 deletions

View File

@ -46,7 +46,6 @@ import (
"github.com/emicklei/go-restful" "github.com/emicklei/go-restful"
"github.com/golang/glog" "github.com/golang/glog"
"github.com/prometheus/client_golang/prometheus"
) )
func init() { func init() {
@ -171,7 +170,6 @@ func (g *APIGroupVersion) newInstaller() *APIInstaller {
func InstallSupport(mux Mux, ws *restful.WebService, checks ...healthz.HealthzChecker) { func InstallSupport(mux Mux, ws *restful.WebService, checks ...healthz.HealthzChecker) {
// TODO: convert healthz and metrics to restful and remove container arg // TODO: convert healthz and metrics to restful and remove container arg
healthz.InstallHandler(mux, checks...) healthz.InstallHandler(mux, checks...)
mux.Handle("/metrics", prometheus.Handler())
// Set up a service to return the git code version. // Set up a service to return the git code version.
ws.Path("/version") ws.Path("/version")

View File

@ -175,10 +175,17 @@ func New(c *Config) (*Master, error) {
return m, nil return m, nil
} }
func resetMetrics(w http.ResponseWriter, req *http.Request) { var defaultMetricsHandler = prometheus.Handler().ServeHTTP
// MetricsWithReset is a handler that resets metrics when DELETE is passed to the endpoint.
func MetricsWithReset(w http.ResponseWriter, req *http.Request) {
if req.Method == "DELETE" {
apiservermetrics.Reset() apiservermetrics.Reset()
etcdmetrics.Reset() etcdmetrics.Reset()
io.WriteString(w, "metrics reset\n") io.WriteString(w, "metrics reset\n")
return
}
defaultMetricsHandler(w, req)
} }
func (m *Master) InstallAPIs(c *Config) { func (m *Master) InstallAPIs(c *Config) {
@ -220,8 +227,11 @@ func (m *Master) InstallAPIs(c *Config) {
// TODO(nikhiljindal): Refactor generic parts of support services (like /versions) to genericapiserver. // TODO(nikhiljindal): Refactor generic parts of support services (like /versions) to genericapiserver.
apiserver.InstallSupport(m.MuxHelper, m.RootWebService, healthzChecks...) apiserver.InstallSupport(m.MuxHelper, m.RootWebService, healthzChecks...)
if c.EnableProfiling { if c.EnableProfiling {
m.MuxHelper.HandleFunc("/resetMetrics", resetMetrics) m.MuxHelper.HandleFunc("/metrics", MetricsWithReset)
} else {
m.MuxHelper.HandleFunc("/metrics", defaultMetricsHandler)
} }
// Install root web services // Install root web services

View File

@ -315,7 +315,7 @@ func VerifyPodStartupLatency(latency PodStartupLatency) error {
// Resets latency metrics in apiserver. // Resets latency metrics in apiserver.
func ResetMetrics(c *client.Client) error { func ResetMetrics(c *client.Client) error {
Logf("Resetting latency metrics in apiserver...") Logf("Resetting latency metrics in apiserver...")
body, err := c.Get().AbsPath("/resetMetrics").DoRaw() body, err := c.Delete().AbsPath("/metrics").DoRaw()
if err != nil { if err != nil {
return err return err
} }