Skip to content

Commit

Permalink
Merge pull request #39 from go-park-mail-ru/metrics
Browse files Browse the repository at this point in the history
Check metrics
  • Loading branch information
marrgancovka authored May 29, 2024
2 parents 9eff345 + 54b6826 commit 44d2d06
Show file tree
Hide file tree
Showing 38 changed files with 2,265 additions and 1,184 deletions.
3 changes: 1 addition & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,10 @@ dev-compose-down:

coverage:
go test -json ./... -coverprofile coverprofile_.tmp -coverpkg=./... ; \
cat coverprofile_.tmp |grep -v auth.go| grep -v interfaces.go | grep -v docs.go| grep -v cors.go| grep -v transaction.go| grep -v main.go > coverprofile.tmp ; \
cat coverprofile_.tmp | grep -Ev 'auth.go|interfaces.go|docs.go|cors.go|transaction.go|main.go|\.pb\.go|\_easyjson\.go' > coverprofile.tmp ; \
rm coverprofile_.tmp ; \
go tool cover -html coverprofile.tmp ; \
go tool cover -func coverprofile.tmp

swagger:
swag init -g cmd/main/main.go

Expand Down
50 changes: 38 additions & 12 deletions cmd/adverts/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,28 +4,27 @@ import (
genAdverts "2024_1_TeaStealers/internal/pkg/adverts/delivery/grpc/gen"
advertsR "2024_1_TeaStealers/internal/pkg/adverts/repo"
advertsUc "2024_1_TeaStealers/internal/pkg/adverts/usecase"
"net/http"

"github.com/gorilla/mux"

"github.com/prometheus/client_golang/prometheus/promhttp"

"context"
"database/sql"
"errors"
"fmt"
"log"
"net"
"net/http"
"os"
"os/signal"
"syscall"
"time"

"github.com/gorilla/mux"
"github.com/joho/godotenv"
_ "github.com/lib/pq"
"go.uber.org/zap"
"google.golang.org/grpc"

grpcAdverts "2024_1_TeaStealers/internal/pkg/adverts/delivery/grpc"
metricsMw "2024_1_TeaStealers/internal/pkg/metrics/middleware"

"google.golang.org/grpc"
"github.com/prometheus/client_golang/prometheus/promhttp"
)

func main() {
Expand Down Expand Up @@ -55,18 +54,36 @@ func run() (err error) {
}

r := mux.NewRouter().PathPrefix("/api").Subrouter()
r.PathPrefix("/metrics").Handler(promhttp.Handler())
r.Handle("/metrics", promhttp.Handler())
http.Handle("/", r)
httpSrv := &http.Server{
Addr: ":8093",
Handler: r,
ReadHeaderTimeout: 10 * time.Second,
ReadTimeout: 10 * time.Second,
WriteTimeout: 10 * time.Second,
}

advertsRepo := advertsR.NewRepository(db, logger)
go func() {

logger.Info("Starting HTTP server for metrics on :8093")
if err := httpSrv.ListenAndServe(); err != nil && !errors.Is(err, http.ErrServerClosed) {
logger.Error(fmt.Sprintf("HTTP server listen: %s\n", err))
}
}()

metricMw := metricsMw.Create()
metricMw.RegisterMetrics()
go metricMw.UpdatePSS()
advertsRepo := advertsR.NewRepository(db, logger, metricMw)
advertsUsecase := advertsUc.NewAdvertUsecase(advertsRepo, logger)
authHandler := grpcAdverts.NewServerAdvertsHandler(advertsUsecase, logger)
metricMw := metricsMw.Create()

gRPCServer := grpc.NewServer(grpc.UnaryInterceptor(metricMw.ServerMetricsInterceptor))
genAdverts.RegisterAdvertsServer(gRPCServer, authHandler)

go func() {
logger.Info(fmt.Sprintf("Start server on %s\n", ":8083"))
logger.Info("Starting gRPC server on :8083")
listener, err := net.Listen("tcp", ":8083")
if err != nil {
log.Fatal(err)
Expand All @@ -80,6 +97,15 @@ func run() (err error) {
signal.Notify(stop, syscall.SIGTERM, syscall.SIGINT)

<-stop
logger.Info(fmt.Sprintf("Received signal: %v\n", stop))

ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
defer cancel()
if err := httpSrv.Shutdown(ctx); err != nil {
logger.Error(fmt.Sprintf("Server shutdown failed: %s\n", err))
}

gRPCServer.GracefulStop()

return nil
}
45 changes: 35 additions & 10 deletions cmd/auth/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,19 @@ import (
genAuth "2024_1_TeaStealers/internal/pkg/auth/delivery/grpc/gen"
authR "2024_1_TeaStealers/internal/pkg/auth/repo"
authUc "2024_1_TeaStealers/internal/pkg/auth/usecase"
"net/http"

"github.com/gorilla/mux"
"github.com/prometheus/client_golang/prometheus/promhttp"

"context"
"database/sql"
"errors"
"fmt"
"github.com/gorilla/mux"
"github.com/prometheus/client_golang/prometheus/promhttp"
"log"
"net"
"net/http"
"os"
"os/signal"
"syscall"
"time"

"github.com/joho/godotenv"
_ "github.com/lib/pq"
Expand Down Expand Up @@ -52,20 +53,35 @@ func run() (err error) {
err = fmt.Errorf("error happened in db.Ping: %w", err)
log.Println(err)
}

r := mux.NewRouter().PathPrefix("/api").Subrouter()
r.PathPrefix("/metrics").Handler(promhttp.Handler())
http.Handle("/", r)
httpSrv := &http.Server{
Addr: ":8091",
Handler: r,
ReadHeaderTimeout: 10 * time.Second,
ReadTimeout: 10 * time.Second,
WriteTimeout: 10 * time.Second,
}

authRepo := authR.NewRepository(db, logger)
go func() {

logger.Info("Starting HTTP server for metrics on :8091")
if err := httpSrv.ListenAndServe(); err != nil && !errors.Is(err, http.ErrServerClosed) {
logger.Error(fmt.Sprintf("HTTP server listen: %s\n", err))
}
}()
metricMw := metricsMw.Create()
metricMw.RegisterMetrics()
go metricMw.UpdatePSS()
authRepo := authR.NewRepository(db, logger, metricMw)
authUsecase := authUc.NewAuthUsecase(authRepo, logger)
authHandler := grpcAuth.NewServerAuthHandler(authUsecase, logger)
metricMw := metricsMw.Create()

gRPCServer := grpc.NewServer(grpc.UnaryInterceptor(metricMw.ServerMetricsInterceptor))
genAuth.RegisterAuthServer(gRPCServer, authHandler)

go func() {
logger.Info(fmt.Sprintf("Start server on %s\n", ":8081"))
logger.Info(fmt.Sprintf("Start gRPC server on %s\n", ":8081"))
listener, err := net.Listen("tcp", ":8081")
if err != nil {
log.Fatal(err)
Expand All @@ -79,6 +95,15 @@ func run() (err error) {
signal.Notify(stop, syscall.SIGTERM, syscall.SIGINT)

<-stop
logger.Info(fmt.Sprintf("Received signal: %v\n", stop))

ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
defer cancel()
if err := httpSrv.Shutdown(ctx); err != nil {
logger.Error(fmt.Sprintf("Server shutdown failed: %s\n", err))
}

gRPCServer.GracefulStop()

return nil
}
37 changes: 33 additions & 4 deletions cmd/complex/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@ import (
genComplex "2024_1_TeaStealers/internal/pkg/complexes/delivery/grpc/gen"
complexR "2024_1_TeaStealers/internal/pkg/complexes/repo"
complexUc "2024_1_TeaStealers/internal/pkg/complexes/usecase"
"context"
"errors"
"github.com/prometheus/client_golang/prometheus/promhttp"
"net/http"
"time"

"github.com/gorilla/mux"

"github.com/prometheus/client_golang/prometheus/promhttp"

"database/sql"
"fmt"
"log"
Expand Down Expand Up @@ -57,11 +59,29 @@ func run() (err error) {
r := mux.NewRouter().PathPrefix("/api").Subrouter()
r.PathPrefix("/metrics").Handler(promhttp.Handler())
http.Handle("/", r)
httpSrv := &http.Server{
Addr: ":8095",
Handler: r,
ReadHeaderTimeout: 10 * time.Second,
ReadTimeout: 10 * time.Second,
WriteTimeout: 10 * time.Second,
}

go func() {

logger.Info("Starting HTTP server for metrics on :8095")
if err := httpSrv.ListenAndServe(); err != nil && !errors.Is(err, http.ErrServerClosed) {
logger.Error(fmt.Sprintf("HTTP server listen: %s\n", err))
}
}()

complexRepo := complexR.NewRepository(db, logger)
metricMw := metricsMw.Create()
metricMw.RegisterMetrics()
go metricMw.UpdatePSS()
complexRepo := complexR.NewRepository(db, logger, metricMw)
complexUsecase := complexUc.NewComplexUsecase(complexRepo, logger)
complexHandler := grpcComplex.NewComplexServerHandler(complexUsecase, logger)
metricMw := metricsMw.Create()

gRPCServer := grpc.NewServer(grpc.UnaryInterceptor(metricMw.ServerMetricsInterceptor))
genComplex.RegisterComplexServer(gRPCServer, complexHandler)

Expand All @@ -80,6 +100,15 @@ func run() (err error) {
signal.Notify(stop, syscall.SIGTERM, syscall.SIGINT)

<-stop
logger.Info(fmt.Sprintf("Received signal: %v\n", stop))

ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
defer cancel()
if err := httpSrv.Shutdown(ctx); err != nil {
logger.Error(fmt.Sprintf("Server shutdown failed: %s\n", err))
}

gRPCServer.GracefulStop()

return nil
}
Loading

0 comments on commit 44d2d06

Please sign in to comment.