metrics: add support for enabling metrics from env vars (#28118)
This commit is contained in:
parent
909dd4a109
commit
65a17c00c7
|
@ -9,7 +9,9 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"runtime/metrics"
|
"runtime/metrics"
|
||||||
"runtime/pprof"
|
"runtime/pprof"
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/log"
|
"github.com/ethereum/go-ethereum/log"
|
||||||
|
@ -30,13 +32,35 @@ var EnabledExpensive = false
|
||||||
// enablerFlags is the CLI flag names to use to enable metrics collections.
|
// enablerFlags is the CLI flag names to use to enable metrics collections.
|
||||||
var enablerFlags = []string{"metrics"}
|
var enablerFlags = []string{"metrics"}
|
||||||
|
|
||||||
|
// enablerEnvVars is the env var names to use to enable metrics collections.
|
||||||
|
var enablerEnvVars = []string{"GETH_METRICS"}
|
||||||
|
|
||||||
// expensiveEnablerFlags is the CLI flag names to use to enable metrics collections.
|
// expensiveEnablerFlags is the CLI flag names to use to enable metrics collections.
|
||||||
var expensiveEnablerFlags = []string{"metrics.expensive"}
|
var expensiveEnablerFlags = []string{"metrics.expensive"}
|
||||||
|
|
||||||
|
// expensiveEnablerEnvVars is the env var names to use to enable metrics collections.
|
||||||
|
var expensiveEnablerEnvVars = []string{"GETH_METRICS_EXPENSIVE"}
|
||||||
|
|
||||||
// Init enables or disables the metrics system. Since we need this to run before
|
// Init enables or disables the metrics system. Since we need this to run before
|
||||||
// any other code gets to create meters and timers, we'll actually do an ugly hack
|
// any other code gets to create meters and timers, we'll actually do an ugly hack
|
||||||
// and peek into the command line args for the metrics flag.
|
// and peek into the command line args for the metrics flag.
|
||||||
func init() {
|
func init() {
|
||||||
|
for _, enabler := range enablerEnvVars {
|
||||||
|
if val, found := syscall.Getenv(enabler); found && !Enabled {
|
||||||
|
if enable, _ := strconv.ParseBool(val); enable { // ignore error, flag parser will choke on it later
|
||||||
|
log.Info("Enabling metrics collection")
|
||||||
|
Enabled = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for _, enabler := range expensiveEnablerEnvVars {
|
||||||
|
if val, found := syscall.Getenv(enabler); found && !EnabledExpensive {
|
||||||
|
if enable, _ := strconv.ParseBool(val); enable { // ignore error, flag parser will choke on it later
|
||||||
|
log.Info("Enabling expensive metrics collection")
|
||||||
|
EnabledExpensive = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
for _, arg := range os.Args {
|
for _, arg := range os.Args {
|
||||||
flag := strings.TrimLeft(arg, "-")
|
flag := strings.TrimLeft(arg, "-")
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue