This commit is contained in:
parent
1a90f1e605
commit
4665c90c2c
4 changed files with 97 additions and 0 deletions
|
|
@ -18,3 +18,7 @@ TASK_RETRY_MINUTES=5
|
||||||
ORIGIN_SURUGAYA_ENABLED=false
|
ORIGIN_SURUGAYA_ENABLED=false
|
||||||
ORIGIN_MANDARAKE_ENABLED=false
|
ORIGIN_MANDARAKE_ENABLED=false
|
||||||
ORIGIN_AMIAMI_ENABLED=false
|
ORIGIN_AMIAMI_ENABLED=false
|
||||||
|
|
||||||
|
METRICS_HOST=
|
||||||
|
METRICS_PORT=
|
||||||
|
METRICS_GIN_MODE=
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ type Config struct {
|
||||||
GrpcCfg GrpcConfig
|
GrpcCfg GrpcConfig
|
||||||
OriginEnabled OriginEnabled
|
OriginEnabled OriginEnabled
|
||||||
ExternalBrowser string
|
ExternalBrowser string
|
||||||
|
Metrics MetricsConfig
|
||||||
}
|
}
|
||||||
|
|
||||||
type GrpcConfig struct {
|
type GrpcConfig struct {
|
||||||
|
|
@ -36,6 +37,12 @@ type OriginEnabled struct {
|
||||||
Amiami bool
|
Amiami bool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type MetricsConfig struct {
|
||||||
|
Host string
|
||||||
|
Port string
|
||||||
|
GinMode string
|
||||||
|
}
|
||||||
|
|
||||||
func NewConfig() *Config {
|
func NewConfig() *Config {
|
||||||
return &Config{
|
return &Config{
|
||||||
LogLevel: getEnv("APP_LOG_LEVEL", "debug"),
|
LogLevel: getEnv("APP_LOG_LEVEL", "debug"),
|
||||||
|
|
@ -62,6 +69,12 @@ func NewConfig() *Config {
|
||||||
Mandarake: getEnvBool("ORIGIN_MANDARAKE_ENABLED", false),
|
Mandarake: getEnvBool("ORIGIN_MANDARAKE_ENABLED", false),
|
||||||
Amiami: getEnvBool("ORIGIN_AMIAMI_ENABLED", false),
|
Amiami: getEnvBool("ORIGIN_AMIAMI_ENABLED", false),
|
||||||
},
|
},
|
||||||
|
|
||||||
|
Metrics: MetricsConfig{
|
||||||
|
Host: getEnv("METRICS_HOST", "0.0.0.0"),
|
||||||
|
Port: getEnv("METRICS_PORT", "49060"),
|
||||||
|
GinMode: getEnv("METRICS_GIN_MODE", "dev"),
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ import (
|
||||||
"task-processor/internal/processor"
|
"task-processor/internal/processor"
|
||||||
"task-processor/internal/remote"
|
"task-processor/internal/remote"
|
||||||
"task-processor/internal/shared"
|
"task-processor/internal/shared"
|
||||||
|
"task-processor/pkg/router"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -59,6 +60,13 @@ func (app *App) Run() {
|
||||||
"Number of CPUs": app.numCPUs,
|
"Number of CPUs": app.numCPUs,
|
||||||
}).Debug("App settings")
|
}).Debug("App settings")
|
||||||
|
|
||||||
|
//metrics
|
||||||
|
mSrv := router.NewHandler(router.Deps{
|
||||||
|
Addr: net.JoinHostPort(app.config.Metrics.Host, app.config.Metrics.Port),
|
||||||
|
GinMode: app.config.Metrics.GinMode,
|
||||||
|
})
|
||||||
|
|
||||||
|
//main
|
||||||
server := newServer(app)
|
server := newServer(app)
|
||||||
apiClient := newApiClient(app.config.GrpcCfg.ApiClientHost + ":" + app.config.GrpcCfg.ApiClientPort)
|
apiClient := newApiClient(app.config.GrpcCfg.ApiClientHost + ":" + app.config.GrpcCfg.ApiClientPort)
|
||||||
|
|
||||||
|
|
@ -133,6 +141,13 @@ func (app *App) Run() {
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
//start metrics server
|
||||||
|
go func() {
|
||||||
|
if err := mSrv.Run(); err != nil {
|
||||||
|
log.WithError(err).Error("Metrics server run failed")
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
//gRPC Server for status response
|
//gRPC Server for status response
|
||||||
go func() {
|
go func() {
|
||||||
listener, err := net.Listen("tcp", app.config.GrpcCfg.ServerHost+":"+app.config.GrpcCfg.ServerPort)
|
listener, err := net.Listen("tcp", app.config.GrpcCfg.ServerHost+":"+app.config.GrpcCfg.ServerPort)
|
||||||
|
|
@ -155,6 +170,10 @@ func (app *App) Run() {
|
||||||
period.Stop()
|
period.Stop()
|
||||||
server.GracefulStop()
|
server.GracefulStop()
|
||||||
cancel()
|
cancel()
|
||||||
|
if err := mSrv.Shutdown(ctx); err != nil {
|
||||||
|
log.WithError(err).Error("Failed to shutdown server")
|
||||||
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
<-ctx.Done()
|
<-ctx.Done()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
61
pkg/router/handler.go
Normal file
61
pkg/router/handler.go
Normal file
|
|
@ -0,0 +1,61 @@
|
||||||
|
package router
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"errors"
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
log "github.com/sirupsen/logrus"
|
||||||
|
ginprometheus "github.com/zsais/go-gin-prometheus"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Handler struct {
|
||||||
|
srv *http.Server
|
||||||
|
}
|
||||||
|
|
||||||
|
type Deps struct {
|
||||||
|
Addr string
|
||||||
|
GinMode string
|
||||||
|
}
|
||||||
|
|
||||||
|
const pkgLogHeader string = "Router |"
|
||||||
|
|
||||||
|
func NewHandler(deps Deps) *Handler {
|
||||||
|
engine := gin.Default()
|
||||||
|
|
||||||
|
if deps.GinMode == "release" {
|
||||||
|
gin.SetMode(gin.ReleaseMode)
|
||||||
|
err := engine.SetTrustedProxies([]string{"172.20.0.0/16"})
|
||||||
|
if err != nil {
|
||||||
|
log.WithError(err).Errorf("%v Set proxies failed", pkgLogHeader)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
engine.GET("/", func(c *gin.Context) { c.JSON(200, gin.H{"msg": "v2"}) })
|
||||||
|
|
||||||
|
p := ginprometheus.NewPrometheus("gin")
|
||||||
|
p.Use(engine)
|
||||||
|
|
||||||
|
srv := http.Server{
|
||||||
|
Addr: deps.Addr,
|
||||||
|
Handler: engine,
|
||||||
|
}
|
||||||
|
|
||||||
|
return &Handler{
|
||||||
|
srv: &srv,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *Handler) Run() error {
|
||||||
|
log.Infof("Starting server on %s", h.srv.Addr)
|
||||||
|
if err := h.srv.ListenAndServe(); err != nil && !errors.Is(err, http.ErrServerClosed) {
|
||||||
|
log.WithError(err).Errorf("%v ListenAndServe failed", pkgLogHeader)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *Handler) Shutdown(ctx context.Context) error {
|
||||||
|
return h.srv.Shutdown(ctx)
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue