@@ -15,6 +15,7 @@ import (
15
15
"time"
16
16
17
17
"github.com/ethereum/go-ethereum/log"
18
+ "github.com/naoina/toml"
18
19
)
19
20
20
21
// Enabled is checked by the constructor functions for all of the
@@ -37,17 +38,35 @@ func init() {
37
38
for _ , enabler := range enablerEnvVars {
38
39
if val , found := syscall .Getenv (enabler ); found && ! Enabled {
39
40
if enable , _ := strconv .ParseBool (val ); enable { // ignore error, flag parser will choke on it later
40
- log .Info ("Enabling metrics collection" )
41
41
Enabled = true
42
42
}
43
43
}
44
44
}
45
- for _ , arg := range os .Args {
45
+ for i , arg := range os .Args {
46
46
flag := strings .TrimLeft (arg , "-" )
47
47
48
+ // If geth is being configured by toml, try to peak into it.
49
+ if ! Enabled && strings .HasPrefix (flag , "config" ) {
50
+ file := strings .TrimSpace (os .Args [i + 1 ])
51
+ f , err := os .Open (file )
52
+ if err != nil {
53
+ continue
54
+ }
55
+ defer f .Close ()
56
+
57
+ var cfg map [string ]map [string ]any
58
+ if err := toml .NewDecoder (f ).Decode (& cfg ); err != nil {
59
+ continue
60
+ }
61
+ if m , ok := cfg ["Metrics" ]; ok {
62
+ if v , ok := m ["Enabled" ].(bool ); ok && v {
63
+ Enabled = true
64
+ }
65
+ }
66
+ }
67
+
48
68
for _ , enabler := range enablerFlags {
49
69
if ! Enabled && flag == enabler {
50
- log .Info ("Enabling metrics collection" )
51
70
Enabled = true
52
71
}
53
72
}
@@ -129,6 +148,7 @@ func readRuntimeStats(v *runtimeStats) {
129
148
func CollectProcessMetrics (refresh time.Duration ) {
130
149
// Short circuit if the metrics system is disabled
131
150
if ! Enabled {
151
+ log .Warn ("Nah I don't wanna do metrics" )
132
152
return
133
153
}
134
154
0 commit comments