Compare commits
2 commits
37e69e3fda
...
f9f08a2338
Author | SHA1 | Date | |
---|---|---|---|
f9f08a2338 | |||
02ae778018 |
3 changed files with 18 additions and 8 deletions
|
@ -15,7 +15,12 @@ type Collector struct {
|
||||||
queue *RequestDataQueue
|
queue *RequestDataQueue
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewCollector(config *cmd.AppSettings, cache *cache.Cache, db *database.Database, queue *RequestDataQueue) *Collector {
|
func NewCollector(
|
||||||
|
config *cmd.AppSettings,
|
||||||
|
cache *cache.Cache,
|
||||||
|
db *database.Database,
|
||||||
|
queue *RequestDataQueue,
|
||||||
|
) *Collector {
|
||||||
return &Collector{
|
return &Collector{
|
||||||
config: config,
|
config: config,
|
||||||
cache: cache,
|
cache: cache,
|
||||||
|
|
|
@ -8,7 +8,7 @@ import (
|
||||||
"github.com/go-chi/chi/v5/middleware"
|
"github.com/go-chi/chi/v5/middleware"
|
||||||
)
|
)
|
||||||
|
|
||||||
type requestData struct {
|
type RequestData struct {
|
||||||
Latency time.Duration
|
Latency time.Duration
|
||||||
Request *http.Request
|
Request *http.Request
|
||||||
Start time.Time
|
Start time.Time
|
||||||
|
@ -16,22 +16,22 @@ type requestData struct {
|
||||||
|
|
||||||
type RequestDataQueue struct {
|
type RequestDataQueue struct {
|
||||||
mu sync.Mutex
|
mu sync.Mutex
|
||||||
data []requestData
|
data []RequestData
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewRequestDataQueue() *RequestDataQueue {
|
func NewRequestDataQueue() *RequestDataQueue {
|
||||||
return &RequestDataQueue{
|
return &RequestDataQueue{
|
||||||
data: []requestData{},
|
data: []RequestData{},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (q *RequestDataQueue) Add(data requestData) {
|
func (q *RequestDataQueue) Add(data RequestData) {
|
||||||
q.mu.Lock()
|
q.mu.Lock()
|
||||||
defer q.mu.Unlock()
|
defer q.mu.Unlock()
|
||||||
q.data = append(q.data, data)
|
q.data = append(q.data, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (q *RequestDataQueue) ConsumeAll() []requestData {
|
func (q *RequestDataQueue) ConsumeAll() []RequestData {
|
||||||
q.mu.Lock()
|
q.mu.Lock()
|
||||||
defer q.mu.Unlock()
|
defer q.mu.Unlock()
|
||||||
data := q.data
|
data := q.data
|
||||||
|
@ -57,7 +57,7 @@ func (m Middleware) handler(next http.Handler) http.Handler {
|
||||||
next.ServeHTTP(ww, r)
|
next.ServeHTTP(ww, r)
|
||||||
|
|
||||||
m.queue.Add(
|
m.queue.Add(
|
||||||
requestData{
|
RequestData{
|
||||||
Latency: time.Since(start),
|
Latency: time.Since(start),
|
||||||
Request: r,
|
Request: r,
|
||||||
Start: start,
|
Start: start,
|
||||||
|
|
7
main.go
7
main.go
|
@ -85,7 +85,12 @@ func main() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func enableExporter(settings *cmd.AppSettings, cache *cache.Cache, db *database.Database, queue *exporter.RequestDataQueue) error {
|
func enableExporter(
|
||||||
|
settings *cmd.AppSettings,
|
||||||
|
cache *cache.Cache,
|
||||||
|
db *database.Database,
|
||||||
|
queue *exporter.RequestDataQueue,
|
||||||
|
) error {
|
||||||
prometheus.MustRegister(exporter.NewCollector(settings, cache, db, queue))
|
prometheus.MustRegister(exporter.NewCollector(settings, cache, db, queue))
|
||||||
|
|
||||||
metricsServer := &http.Server{
|
metricsServer := &http.Server{
|
||||||
|
|
Loading…
Add table
Reference in a new issue