Compare commits

..

2 commits

Author SHA1 Message Date
f9f08a2338
chore(go): bump go version to 1.23.3
Some checks failed
ci/woodpecker/push/lint Pipeline was successful
ci/woodpecker/push/test Pipeline was successful
ci/woodpecker/push/build Pipeline failed
2024-11-28 12:06:09 +01:00
02ae778018
feat(exporter): add prometheus exporter for cache, database & webserver stats 2024-11-28 12:06:06 +01:00
3 changed files with 18 additions and 8 deletions

View file

@ -15,7 +15,12 @@ type Collector struct {
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{
config: config,
cache: cache,

View file

@ -8,7 +8,7 @@ import (
"github.com/go-chi/chi/v5/middleware"
)
type requestData struct {
type RequestData struct {
Latency time.Duration
Request *http.Request
Start time.Time
@ -16,22 +16,22 @@ type requestData struct {
type RequestDataQueue struct {
mu sync.Mutex
data []requestData
data []RequestData
}
func NewRequestDataQueue() *RequestDataQueue {
return &RequestDataQueue{
data: []requestData{},
data: []RequestData{},
}
}
func (q *RequestDataQueue) Add(data requestData) {
func (q *RequestDataQueue) Add(data RequestData) {
q.mu.Lock()
defer q.mu.Unlock()
q.data = append(q.data, data)
}
func (q *RequestDataQueue) ConsumeAll() []requestData {
func (q *RequestDataQueue) ConsumeAll() []RequestData {
q.mu.Lock()
defer q.mu.Unlock()
data := q.data
@ -57,7 +57,7 @@ func (m Middleware) handler(next http.Handler) http.Handler {
next.ServeHTTP(ww, r)
m.queue.Add(
requestData{
RequestData{
Latency: time.Since(start),
Request: r,
Start: start,

View file

@ -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))
metricsServer := &http.Server{