From 455fb65e779841abb5428c5f6385e52dc55e3a0d Mon Sep 17 00:00:00 2001 From: Las Zenow Date: Wed, 7 Jun 2017 22:00:17 +0000 Subject: [PATCH] Reorganize instrument code --- lib/instrument/dummy.go | 5 +---- lib/instrument/instrument.go | 13 ++++++++++--- lib/instrument/prometheus.go | 13 ++++--------- lib/stats.go | 9 +++++++-- 4 files changed, 22 insertions(+), 18 deletions(-) diff --git a/lib/instrument/dummy.go b/lib/instrument/dummy.go index a685bbe..8c2d210 100644 --- a/lib/instrument/dummy.go +++ b/lib/instrument/dummy.go @@ -2,13 +2,10 @@ package instrument -import "time" - type dummyInst struct{} func Init() Instrument { return &dummyInst{} } -func (i dummyInst) Visit(section string, id string, search string, fmt string) {} -func (i dummyInst) Duration(section string, search string, duration time.Duration) {} +func (i dummyInst) Request(req RequestData) {} diff --git a/lib/instrument/instrument.go b/lib/instrument/instrument.go index c7b9181..225b1f8 100644 --- a/lib/instrument/instrument.go +++ b/lib/instrument/instrument.go @@ -2,7 +2,14 @@ package instrument import "time" -type Instrument interface { - Visit(section string, id string, search string, fmt string) - Duration(section string, search string, duration time.Duration) +type RequestData struct { + Section string + ID string + Search string + Fmt string + Duration time.Duration +} + +type Instrument interface { + Request(req RequestData) } diff --git a/lib/instrument/prometheus.go b/lib/instrument/prometheus.go index aafa7d2..83fe196 100644 --- a/lib/instrument/prometheus.go +++ b/lib/instrument/prometheus.go @@ -3,8 +3,6 @@ package instrument import ( - "time" - log "github.com/cihub/seelog" "net/http" @@ -37,7 +35,7 @@ func Init() Instrument { Name: "trantor_request_duration_seconds", Help: "Duration of the request in seconds.", }, - []string{"section", "search"}, + []string{"section"}, ) prometheus.MustRegister(visits) @@ -57,10 +55,7 @@ func promHandle() { log.Error(server.ListenAndServe()) } -func (in promInst) Visit(section string, id string, search string, fmt string) { - in.visits.WithLabelValues(section, id, search, fmt).Inc() -} - -func (in promInst) Duration(section string, search string, duration time.Duration) { - in.reqDur.WithLabelValues(section, search).Observe(duration.Seconds()) +func (in promInst) Request(req RequestData) { + in.visits.WithLabelValues(req.Section, req.ID, req.Search, req.Fmt).Inc() + in.reqDur.WithLabelValues(req.Section).Observe(req.Duration.Seconds()) } diff --git a/lib/stats.go b/lib/stats.go index 4efe4c3..a04166a 100644 --- a/lib/stats.go +++ b/lib/stats.go @@ -119,8 +119,13 @@ func (sg StatsGatherer) worker() { section = pattern[1] } - sg.instrument.Visit(section, id, search, fmt) - sg.instrument.Duration(section, search, req.duration) + sg.instrument.Request(instrument.RequestData{ + Section: section, + ID: id, + Search: search, + Fmt: fmt, + Duration: req.duration + }) switch section { case "download": err = sg.db.IncDownloads(id)