From 9e9bfc4e264b0bc16bdfe893e9cb3cfad096c48c Mon Sep 17 00:00:00 2001 From: Nick Johnson Date: Fri, 14 Oct 2016 08:22:31 +0100 Subject: [PATCH] metrics, internal/debug: Add --pprofaddr flag, expose metrics via gexp --- internal/debug/flags.go | 9 +++++++-- metrics/metrics.go | 2 ++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/internal/debug/flags.go b/internal/debug/flags.go index 9fc5fc4fe..ed17f87c4 100644 --- a/internal/debug/flags.go +++ b/internal/debug/flags.go @@ -52,6 +52,11 @@ var ( Usage: "pprof HTTP server listening port", Value: 6060, } + pprofAddrFlag = cli.StringFlag{ + Name: "pprofaddr", + Usage: "pprof HTTP server listening interface", + Value: "127.0.0.1", + } memprofilerateFlag = cli.IntFlag{ Name: "memprofilerate", Usage: "Turn on memory profiling with the given rate", @@ -74,7 +79,7 @@ var ( // Flags holds all command-line flags required for debugging. var Flags = []cli.Flag{ verbosityFlag, vmoduleFlag, backtraceAtFlag, - pprofFlag, pprofPortFlag, + pprofFlag, pprofAddrFlag, pprofPortFlag, memprofilerateFlag, blockprofilerateFlag, cpuprofileFlag, traceFlag, } @@ -101,7 +106,7 @@ func Setup(ctx *cli.Context) error { // pprof server if ctx.GlobalBool(pprofFlag.Name) { - address := fmt.Sprintf("127.0.0.1:%d", ctx.GlobalInt(pprofPortFlag.Name)) + address := fmt.Sprintf("%s:%d", ctx.GlobalString(pprofAddrFlag.Name), ctx.GlobalInt(pprofPortFlag.Name)) go func() { glog.V(logger.Info).Infof("starting pprof server at http://%s/debug/pprof", address) glog.Errorln(http.ListenAndServe(address, nil)) diff --git a/metrics/metrics.go b/metrics/metrics.go index fcf8b5c32..7f647cd00 100644 --- a/metrics/metrics.go +++ b/metrics/metrics.go @@ -26,6 +26,7 @@ import ( "github.com/ethereum/go-ethereum/logger" "github.com/ethereum/go-ethereum/logger/glog" "github.com/rcrowley/go-metrics" + "github.com/rcrowley/go-metrics/exp" ) // MetricsEnabledFlag is the CLI flag name to use to enable metrics collections. @@ -44,6 +45,7 @@ func init() { Enabled = true } } + exp.Exp(metrics.DefaultRegistry) } // NewMeter create a new metrics Meter, either a real one of a NOP stub depending