mirror of
https://gitlab.com/pulsechaincom/erigon-pulse.git
synced 2024-12-23 04:03:49 +00:00
d475bab15f
To expose context flags through diagnostic endpoint `/debug/metrics/flags`. The current `/debug/metrics/cmdline` only provides the command run by user. In the case when user runs Erigon using config file, `cmdline`’s info does not truly reflect the ‘launch setting' and flags set that Erigon is running on. ## Example ### Command ``` erigon --datadir /tmp/data --config test.yaml ``` ### Pseudo config file (in yaml) ``` datadir : '/tmp/data' chain : "sepolia" http : true metrics: true private.api.addr : "localhost:9090" http.api : ["eth","debug","net"] ``` ### Output ``` SUCCESS chain=sepolia config=test.yaml datadir=/tmp/data http=true http.api=eth,debug,net metrics=true private.api.addr=localhost:9090 ```
24 lines
484 B
Go
24 lines
484 B
Go
package diagnostics
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
"net/http"
|
|
|
|
"github.com/urfave/cli/v2"
|
|
)
|
|
|
|
func SetupFlagsAccess(ctx *cli.Context) {
|
|
http.HandleFunc("/debug/metrics/flags", func(w http.ResponseWriter, r *http.Request) {
|
|
w.Header().Set("Access-Control-Allow-Origin", "*")
|
|
writeFlags(w, ctx)
|
|
})
|
|
}
|
|
|
|
func writeFlags(w io.Writer, ctx *cli.Context) {
|
|
fmt.Fprintf(w, "SUCCESS\n")
|
|
for _, flagName := range ctx.FlagNames() {
|
|
fmt.Fprintf(w, "%s=%v\n", flagName, ctx.Value(flagName))
|
|
}
|
|
}
|