cmd/tailscale/cli: add "debug metrics" subcommand

To let users inspect the tailscaled metrics easily.

Updates #3307

Change-Id: I922126ca0626659948c57de74c6ef62f40ef5f5f
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
pull/3315/head
Brad Fitzpatrick 3 years ago committed by Brad Fitzpatrick
parent 945290cc3f
commit 68917fdb5d

@ -196,6 +196,12 @@ func Goroutines(ctx context.Context) ([]byte, error) {
return get200(ctx, "/localapi/v0/goroutines")
}
// DaemonMetrics returns the Tailscale daemon's metrics in
// the Prometheus text exposition format.
func DaemonMetrics(ctx context.Context) ([]byte, error) {
return get200(ctx, "/localapi/v0/metrics")
}
// Profile returns a pprof profile of the Tailscale daemon.
func Profile(ctx context.Context, pprofType string, sec int) ([]byte, error) {
var secArg string

@ -46,17 +46,22 @@ var debugCmd = &ffcli.Command{
Exec: runDaemonGoroutines,
ShortHelp: "print tailscaled's goroutines",
},
&ffcli.Command{
{
Name: "metrics",
Exec: runDaemonMetrics,
ShortHelp: "print tailscaled's metrics",
},
{
Name: "env",
Exec: runEnv,
ShortHelp: "print cmd/tailscale environment",
},
&ffcli.Command{
{
Name: "local-creds",
Exec: runLocalCreds,
ShortHelp: "print how to access Tailscale local API",
},
&ffcli.Command{
{
Name: "prefs",
Exec: runPrefs,
ShortHelp: "print prefs",
@ -66,7 +71,7 @@ var debugCmd = &ffcli.Command{
return fs
})(),
},
&ffcli.Command{
{
Name: "watch-ipn",
Exec: runWatchIPN,
ShortHelp: "subscribe to IPN message bus",
@ -245,3 +250,12 @@ func runDaemonGoroutines(ctx context.Context, args []string) error {
Stdout.Write(goroutines)
return nil
}
func runDaemonMetrics(ctx context.Context, args []string) error {
out, err := tailscale.DaemonMetrics(ctx)
if err != nil {
return err
}
Stdout.Write(out)
return nil
}

Loading…
Cancel
Save