// Register the API's endpoints in the given router. func (api *API) Register(r *route.Router) { if api.context == nil { api.context = route.Context } instr := func(name string, f apiFunc) http.HandlerFunc { hf := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { setCORS(w) if data, err := f(r); err != nil { respondError(w, err, data) } else { respond(w, data) } }) return prometheus.InstrumentHandler(name, httputil.CompressionHandler{ Handler: hf, }) } r.Get("/query", instr("query", api.query)) r.Get("/query_range", instr("query_range", api.queryRange)) r.Get("/label/:name/values", instr("label_values", api.labelValues)) r.Get("/series", instr("series", api.series)) r.Del("/series", instr("drop_series", api.dropSeries)) }
// RegisterWeb registers handlers to serve files for the web interface. func RegisterWeb(r *route.Router) { r.Get("/app/*filepath", func(w http.ResponseWriter, req *http.Request) { fp := route.Param(route.Context(req), "filepath") serveAsset(w, req, filepath.Join("ui/app", fp)) }) r.Get("/lib/*filepath", func(w http.ResponseWriter, req *http.Request) { fp := route.Param(route.Context(req), "filepath") serveAsset(w, req, filepath.Join("ui/lib", fp)) }) r.Get("/", func(w http.ResponseWriter, req *http.Request) { serveAsset(w, req, "ui/app/index.html") }) }
// RegisterWeb registers handlers to serve files for the web interface. func RegisterWeb(r *route.Router) { ihf := prometheus.InstrumentHandlerFunc r.Get("/app/*filepath", ihf("app_files", func(w http.ResponseWriter, req *http.Request) { fp := route.Param(route.Context(req), "filepath") serveAsset(w, req, filepath.Join("ui/app", fp)) }, )) r.Get("/lib/*filepath", ihf("lib_files", func(w http.ResponseWriter, req *http.Request) { fp := route.Param(route.Context(req), "filepath") serveAsset(w, req, filepath.Join("ui/lib", fp)) }, )) r.Get("/metrics", prometheus.Handler().ServeHTTP) r.Get("/", ihf("index", func(w http.ResponseWriter, req *http.Request) { serveAsset(w, req, "ui/app/index.html") })) }
// Register registers the handler for the various endpoints below /api. func (api *API) Register(router *route.Router) { router.Get("/query", handle("query", api.Query)) router.Get("/query_range", handle("query_range", api.QueryRange)) router.Get("/metrics", handle("metrics", api.Metrics)) }
// RegisterWeb registers handlers to serve files for the web interface. func RegisterWeb(r *route.Router, reloadCh chan<- struct{}) { ihf := prometheus.InstrumentHandlerFunc r.Get("/app/*filepath", ihf("app_files", func(w http.ResponseWriter, req *http.Request) { fp := route.Param(route.Context(req), "filepath") serveAsset(w, req, filepath.Join("ui/app", fp)) }, )) r.Get("/lib/*filepath", ihf("lib_files", func(w http.ResponseWriter, req *http.Request) { fp := route.Param(route.Context(req), "filepath") serveAsset(w, req, filepath.Join("ui/lib", fp)) }, )) r.Get("/metrics", prometheus.Handler().ServeHTTP) r.Get("/", ihf("index", func(w http.ResponseWriter, req *http.Request) { serveAsset(w, req, "ui/app/index.html") })) r.Post("/-/reload", func(w http.ResponseWriter, req *http.Request) { w.Write([]byte("Reloading configuration file...")) reloadCh <- struct{}{} }) r.Get("/debug/*subpath", http.DefaultServeMux.ServeHTTP) r.Post("/debug/*subpath", http.DefaultServeMux.ServeHTTP) }
// Register registers the API handlers under their correct routes // in the given router. func (api *API) Register(r *route.Router) { ihf := func(name string, f http.HandlerFunc) http.HandlerFunc { return prometheus.InstrumentHandlerFunc(name, func(w http.ResponseWriter, r *http.Request) { setCORS(w) f(w, r) }) } r.Options("/*path", ihf("options", func(w http.ResponseWriter, r *http.Request) {})) // Register legacy forwarder for alert pushing. r.Post("/alerts", ihf("legacy_add_alerts", api.legacyAddAlerts)) // Register actual API. r = r.WithPrefix("/v1") r.Get("/status", ihf("status", api.status)) r.Get("/alerts/groups", ihf("alert_groups", api.alertGroups)) r.Get("/alerts", ihf("list_alerts", api.listAlerts)) r.Post("/alerts", ihf("add_alerts", api.addAlerts)) r.Get("/silences", ihf("list_silences", api.listSilences)) r.Post("/silences", ihf("add_silence", api.addSilence)) r.Get("/silence/:sid", ihf("get_silence", api.getSilence)) r.Del("/silence/:sid", ihf("del_silence", api.delSilence)) }
// Register registers the API handlers under their correct routes // in the given router. func (api *API) Register(r *route.Router) { ihf := prometheus.InstrumentHandlerFunc // Register legacy forwarder for alert pushing. r.Post("/alerts", ihf("legacy_add_alerts", api.legacyAddAlerts)) // Register actual API. r = r.WithPrefix("/v1") r.Get("/status", ihf("status", api.status)) r.Get("/alerts/groups", ihf("alert_groups", api.alertGroups)) r.Get("/alerts", ihf("list_alerts", api.listAlerts)) r.Post("/alerts", ihf("add_alerts", api.addAlerts)) r.Get("/silences", ihf("list_silences", api.listSilences)) r.Post("/silences", ihf("add_silence", api.addSilence)) r.Get("/silence/:sid", ihf("get_silence", api.getSilence)) r.Del("/silence/:sid", ihf("del_silence", api.delSilence)) }
// Register regieters the API handlers under their correct routes // in the given router. func (api *API) Register(r *route.Router) { // Register legacy forwarder for alert pushing. r.Post("/alerts", api.legacyAddAlerts) // Register actual API. r = r.WithPrefix("/v1") r.Get("/status", api.status) r.Get("/alerts/groups", api.alertGroups) r.Get("/alerts", api.listAlerts) r.Post("/alerts", api.addAlerts) r.Get("/silences", api.listSilences) r.Post("/silences", api.addSilence) r.Get("/silence/:sid", api.getSilence) r.Del("/silence/:sid", api.delSilence) }
// Register the API's endpoints in the given router. func (api *API) Register(r *route.Router) { instr := func(name string, f apiFunc) http.HandlerFunc { hf := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { setCORS(w) if data, err := f(r); err != nil { respondError(w, err, data) } else if data != nil { respond(w, data) } else { w.WriteHeader(http.StatusNoContent) } }) return prometheus.InstrumentHandler(name, httputil.CompressionHandler{ Handler: hf, }) } r.Options("/*path", instr("options", api.options)) r.Get("/query", instr("query", api.query)) r.Get("/query_range", instr("query_range", api.queryRange)) r.Get("/label/:name/values", instr("label_values", api.labelValues)) r.Get("/series", instr("series", api.series)) r.Del("/series", instr("drop_series", api.dropSeries)) r.Get("/targets", instr("targets", api.targets)) }
// Register registers the handler for the various endpoints below /api. func (api *API) Register(router *route.Router) { // List all the endpoints here instead of using a wildcard route because we // would otherwise handle /api/v1 as well. router.Options("/query", handle("options", api.Options)) router.Options("/query_range", handle("options", api.Options)) router.Options("/metrics", handle("options", api.Options)) router.Get("/query", handle("query", api.Query)) router.Get("/query_range", handle("query_range", api.QueryRange)) router.Get("/metrics", handle("metrics", api.Metrics)) }