cmd/sh-api: add metric for GraphQL query duration
This commit is contained in:
parent
541d829069
commit
2b6407eacb
1 changed files with 16 additions and 1 deletions
|
@ -24,6 +24,15 @@ import (
|
|||
"git.sr.ht/~sircmpwn/searchhut/graph/generated"
|
||||
)
|
||||
|
||||
var durationMetric = prometheus.NewHistogramVec(
|
||||
prometheus.HistogramOpts{
|
||||
Name: "query_duration_seconds",
|
||||
Help: "GraphQL query latency in seconds.",
|
||||
Buckets: prometheus.DefBuckets,
|
||||
},
|
||||
nil,
|
||||
)
|
||||
|
||||
func main() {
|
||||
debug := false
|
||||
opts, _, err := getopt.Getopts(os.Args, "d")
|
||||
|
@ -54,6 +63,8 @@ func main() {
|
|||
}
|
||||
prometheus.DefaultRegisterer.Register(promcollectors.NewDBStatsCollector(db, "main"))
|
||||
|
||||
prometheus.MustRegister(durationMetric)
|
||||
|
||||
schema := generated.NewExecutableSchema(generated.Config{
|
||||
Resolvers: &graph.Resolver{},
|
||||
})
|
||||
|
@ -65,7 +76,7 @@ func main() {
|
|||
router.Use(middleware.Logger)
|
||||
router.Use(middleware.Timeout(10 * time.Second))
|
||||
|
||||
router.Handle("/query", srv)
|
||||
router.With(promQueryMiddleware).Handle("/query", srv)
|
||||
if debug {
|
||||
router.Handle("/", playground.Handler("GraphQL playground", "/query"))
|
||||
}
|
||||
|
@ -79,3 +90,7 @@ func main() {
|
|||
log.Printf("Running server on %s", port)
|
||||
log.Fatal(http.ListenAndServe(port, router))
|
||||
}
|
||||
|
||||
func promQueryMiddleware(next http.Handler) http.Handler {
|
||||
return promhttp.InstrumentHandlerDuration(durationMetric, next)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue