chore(exporter): rework exporter to fix wrong histogram usage and cache metric data
This commit is contained in:
parent
4d2a7acebc
commit
8b7f45563a
6 changed files with 180 additions and 312 deletions
61
internal/exporter/exporter.go
Normal file
61
internal/exporter/exporter.go
Normal file
|
@ -0,0 +1,61 @@
|
|||
package exporter
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"git.ar21.de/yolokube/country-geo-locations/internal/cache"
|
||||
"git.ar21.de/yolokube/country-geo-locations/internal/cmd"
|
||||
"git.ar21.de/yolokube/country-geo-locations/internal/database"
|
||||
"github.com/prometheus/client_golang/prometheus"
|
||||
"github.com/prometheus/client_golang/prometheus/promhttp"
|
||||
)
|
||||
|
||||
type Exporter struct {
|
||||
config *cmd.AppSettings
|
||||
cache *cache.Cache
|
||||
database *database.Database
|
||||
metrics *Metrics
|
||||
}
|
||||
|
||||
func NewExporter(config *cmd.AppSettings, c *cache.Cache, db *database.Database) *Exporter {
|
||||
exporter := &Exporter{
|
||||
config: config,
|
||||
cache: c,
|
||||
database: db,
|
||||
}
|
||||
|
||||
exporter.metrics = NewMetrics(exporter)
|
||||
return exporter
|
||||
}
|
||||
|
||||
func (e *Exporter) Collect() {
|
||||
e.metrics.collectCacheTTLMetric()
|
||||
e.metrics.collectCurrentlyCachedMetric()
|
||||
e.metrics.collectDatabaseReadyMetric()
|
||||
e.metrics.collectDatabaseTimestampMetric()
|
||||
}
|
||||
|
||||
func (e *Exporter) Middleware() func(next http.Handler) http.Handler {
|
||||
return Middleware{
|
||||
metrics: e.metrics,
|
||||
}.handler
|
||||
}
|
||||
|
||||
func (e *Exporter) Start() error {
|
||||
prometheus.MustRegister(
|
||||
e.metrics.metricCacheTTL,
|
||||
e.metrics.metricCurrentlyCached,
|
||||
e.metrics.metricDatabaseTimestamp,
|
||||
e.metrics.metricDatabaseReady,
|
||||
e.metrics.metricRequestsTotal,
|
||||
e.metrics.metricRequestLatency,
|
||||
)
|
||||
|
||||
server := &http.Server{
|
||||
Addr: e.config.ExporterAddress,
|
||||
Handler: promhttp.Handler(),
|
||||
ReadHeaderTimeout: e.config.ReadHeaderTimeout,
|
||||
}
|
||||
|
||||
return server.ListenAndServe()
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue