45 lines
955 B
Go
45 lines
955 B
Go
package app
|
|
|
|
import (
|
|
"alfred/cmd/collector/app/dependency"
|
|
"alfred/config"
|
|
"alfred/internal/metrics"
|
|
"alfred/pkg/log"
|
|
"alfred/utils"
|
|
"fmt"
|
|
"github.com/gin-gonic/gin"
|
|
"go.elastic.co/apm/module/apmgin/v2"
|
|
"go.uber.org/zap"
|
|
"net/http"
|
|
"strconv"
|
|
)
|
|
|
|
type Server struct {
|
|
gin *gin.Engine
|
|
}
|
|
|
|
func NewServer(gin *gin.Engine) *Server {
|
|
dependency.InitCollectorDependencies()
|
|
return &Server{
|
|
gin: gin,
|
|
}
|
|
}
|
|
|
|
func (s *Server) Handler() {
|
|
s.gin.Use(apmgin.Middleware(s.gin))
|
|
metrics.AdminHandler(config.GetCollectorConfig().BaseConfig.MetricPort)
|
|
s.healthCheckHandler()
|
|
}
|
|
|
|
func (s *Server) healthCheckHandler() {
|
|
s.gin.GET(utils.PING, func(c *gin.Context) {
|
|
c.String(http.StatusOK, utils.PONG)
|
|
})
|
|
}
|
|
|
|
func (s *Server) Start() {
|
|
s.Handler()
|
|
log.Info("starting alfred collector server", zap.String("port", strconv.Itoa(config.GetCollectorConfig().BaseConfig.Port)))
|
|
s.gin.Run(fmt.Sprintf(":%v", config.GetCollectorConfig().BaseConfig.Port))
|
|
}
|