mirror of
https://github.com/scroll-tech/scroll.git
synced 2026-01-14 16:37:56 -05:00
Co-authored-by: HAOYUatHZ <37070449+HAOYUatHZ@users.noreply.github.com> Co-authored-by: Péter Garamvölgyi <peter@scroll.io> Co-authored-by: maskpp <maskpp266@gmail.com>
58 lines
1.3 KiB
Go
58 lines
1.3 KiB
Go
package metrics
|
|
|
|
import (
|
|
"context"
|
|
"net"
|
|
"net/http"
|
|
"strconv"
|
|
|
|
"github.com/scroll-tech/go-ethereum/log"
|
|
"github.com/scroll-tech/go-ethereum/metrics"
|
|
"github.com/scroll-tech/go-ethereum/metrics/prometheus"
|
|
"github.com/scroll-tech/go-ethereum/rpc"
|
|
"github.com/urfave/cli/v2"
|
|
|
|
"scroll-tech/common/utils"
|
|
)
|
|
|
|
var (
|
|
// ScrollRegistry is used for scroll metrics.
|
|
ScrollRegistry = metrics.NewRegistry()
|
|
)
|
|
|
|
// Serve starts the metrics server on the given address, will be closed when the given
|
|
// context is canceled.
|
|
func Serve(ctx context.Context, c *cli.Context) {
|
|
if !c.Bool(utils.MetricsEnabled.Name) {
|
|
return
|
|
}
|
|
|
|
address := net.JoinHostPort(
|
|
c.String(utils.MetricsAddr.Name),
|
|
strconv.Itoa(c.Int(utils.MetricsPort.Name)),
|
|
)
|
|
|
|
server := &http.Server{
|
|
Addr: address,
|
|
Handler: prometheus.Handler(ScrollRegistry),
|
|
ReadTimeout: rpc.DefaultHTTPTimeouts.ReadTimeout,
|
|
WriteTimeout: rpc.DefaultHTTPTimeouts.WriteTimeout,
|
|
IdleTimeout: rpc.DefaultHTTPTimeouts.IdleTimeout,
|
|
}
|
|
|
|
go func() {
|
|
<-ctx.Done()
|
|
if err := server.Close(); err != nil {
|
|
log.Error("Failed to close metrics server", "error", err)
|
|
}
|
|
}()
|
|
|
|
log.Info("Starting metrics server", "address", address)
|
|
|
|
go func() {
|
|
if err := server.ListenAndServe(); err != nil {
|
|
log.Error("start metrics server error", "error", err)
|
|
}
|
|
}()
|
|
}
|