Add metrics
This commit is contained in:
parent
cb0917d916
commit
80eb11b0c9
25
main.go
25
main.go
@ -6,9 +6,11 @@ import (
|
||||
"github.com/docker/docker/api/types"
|
||||
"github.com/docker/docker/client"
|
||||
"github.com/eko/gocache/cache"
|
||||
"github.com/eko/gocache/metrics"
|
||||
"github.com/eko/gocache/store"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/go-co-op/gocron"
|
||||
"github.com/prometheus/client_golang/prometheus/promhttp"
|
||||
"go.uber.org/zap"
|
||||
"go.uber.org/zap/zapcore"
|
||||
"io/ioutil"
|
||||
@ -77,11 +79,20 @@ func BasicAuthMiddleware(l *zap.Logger, us *users.Service) gin.HandlerFunc {
|
||||
c.Next()
|
||||
}
|
||||
}
|
||||
func setupApi(l *zap.Logger, cc *cache.Cache, us *users.Service, ps *projects.Service) {
|
||||
func setupApi(l *zap.Logger, cc *cache.MetricCache, us *users.Service, ps *projects.Service) {
|
||||
l.Info("Setting up serverctl setupApi (using gin)")
|
||||
|
||||
r := gin.Default()
|
||||
|
||||
promHandler := func() gin.HandlerFunc {
|
||||
h := promhttp.Handler()
|
||||
|
||||
return func(c *gin.Context) {
|
||||
h.ServeHTTP(c.Writer, c.Request)
|
||||
}
|
||||
}
|
||||
r.GET("/metrics", promHandler())
|
||||
|
||||
r.POST("/auth/register", func(c *gin.Context) {
|
||||
type RegisterUser struct {
|
||||
Email string `json:"email" binding:"required"`
|
||||
@ -185,22 +196,26 @@ func setupDocker(l *zap.Logger) *client.Client {
|
||||
|
||||
return cli
|
||||
}
|
||||
func setupCache(l *zap.Logger) *cache.Cache {
|
||||
func setupCache(l *zap.Logger) *cache.MetricCache {
|
||||
l.Info("Setting up cache")
|
||||
ristrettoCache, err := ristretto.NewCache(&ristretto.Config{
|
||||
NumCounters: 1000,
|
||||
MaxCost: 100_000_000,
|
||||
BufferItems: 64,
|
||||
})
|
||||
promMetrics := metrics.NewPrometheus("serverctl")
|
||||
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
ristrettoStore := store.NewRistretto(ristrettoCache, nil)
|
||||
cacheManager := cache.New(ristrettoStore)
|
||||
|
||||
return cacheManager
|
||||
cacheManager := cache.New(ristrettoStore)
|
||||
metricsCache := cache.NewMetric(promMetrics, cacheManager)
|
||||
|
||||
return metricsCache
|
||||
}
|
||||
func setupCron(l *zap.Logger, cm *cache.Cache, cc *client.Client) {
|
||||
func setupCron(l *zap.Logger, cm *cache.MetricCache, cc *client.Client) {
|
||||
l.Info("Setting up job scheduler (cron)")
|
||||
|
||||
s := gocron.NewScheduler(time.UTC)
|
||||
|
@ -10,10 +10,10 @@ import (
|
||||
type Service struct {
|
||||
projectsRepository Repository
|
||||
logger *zap.Logger
|
||||
cache *cache.Cache
|
||||
cache *cache.MetricCache
|
||||
}
|
||||
|
||||
func NewService(logger *zap.Logger, projectsRepository Repository, cache *cache.Cache) *Service {
|
||||
func NewService(logger *zap.Logger, projectsRepository Repository, cache *cache.MetricCache) *Service {
|
||||
return &Service{
|
||||
logger: logger,
|
||||
projectsRepository: projectsRepository,
|
||||
|
@ -9,12 +9,12 @@ import (
|
||||
|
||||
type Service struct {
|
||||
logger *zap.Logger
|
||||
cache *cache.Cache
|
||||
cache *cache.MetricCache
|
||||
repository Repository
|
||||
passwordHasher PasswordHasher
|
||||
}
|
||||
|
||||
func NewService(l *zap.Logger, ur Repository, c *cache.Cache) *Service {
|
||||
func NewService(l *zap.Logger, ur Repository, c *cache.MetricCache) *Service {
|
||||
return &Service{
|
||||
logger: l,
|
||||
repository: ur,
|
||||
|
Loading…
Reference in New Issue
Block a user