Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitf94ac55

Browse files
authored
feat(agent): Expose magicsock metrics (#7183)
* feat: Expose magicsock metrics* golden-files
1 parentfbf329f commitf94ac55

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

‎cli/agent.go‎

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import (
1818
"cloud.google.com/go/compute/metadata"
1919
"golang.org/x/xerrors"
2020
"gopkg.in/natefinch/lumberjack.v2"
21+
"tailscale.com/util/clientmetric"
2122

2223
"cdr.dev/slog"
2324
"cdr.dev/slog/sloggers/sloghuman"
@@ -36,6 +37,7 @@ func (r *RootCmd) workspaceAgent() *clibase.Cmd {
3637
noReapbool
3738
sshMaxTimeout time.Duration
3839
tailnetListenPortint64
40+
prometheusAddressstring
3941
)
4042
cmd:=&clibase.Cmd{
4143
Use:"agent",
@@ -126,6 +128,13 @@ func (r *RootCmd) workspaceAgent() *clibase.Cmd {
126128
agentPorts[port]="pprof"
127129
}
128130

131+
prometheusSrvClose:=ServeHandler(ctx,logger,prometheusMetricsHandler(),prometheusAddress,"prometheus")
132+
deferprometheusSrvClose()
133+
// Do a best effort here. If this fails, it's not a big deal.
134+
ifport,err:=urlPort(prometheusAddress);err==nil {
135+
agentPorts[port]="prometheus"
136+
}
137+
129138
// exchangeToken returns a session token.
130139
// This is abstracted to allow for the same looping condition
131140
// regardless of instance identity auth type.
@@ -257,6 +266,13 @@ func (r *RootCmd) workspaceAgent() *clibase.Cmd {
257266
Description:"Specify a static port for Tailscale to use for listening.",
258267
Value:clibase.Int64Of(&tailnetListenPort),
259268
},
269+
{
270+
Flag:"prometheus-address",
271+
Default:"127.0.0.1:2112",
272+
Env:"CODER_AGENT_PROMETHEUS_ADDRESS",
273+
Value:clibase.StringOf(&prometheusAddress),
274+
Description:"The bind address to serve Prometheus metrics.",
275+
},
260276
}
261277

262278
returncmd
@@ -343,3 +359,12 @@ func urlPort(u string) (int, error) {
343359
}
344360
return-1,xerrors.Errorf("invalid port: %s",u)
345361
}
362+
363+
funcprometheusMetricsHandler() http.Handler {
364+
// We don't have any other internal metrics so far, so it's safe to expose metrics this way.
365+
// Based on: https://github.com/tailscale/tailscale/blob/280255acae604796a1113861f5a84e6fa2dc6121/ipn/localapi/localapi.go#L489
366+
returnhttp.HandlerFunc(func(w http.ResponseWriter,r*http.Request) {
367+
w.Header().Set("Content-Type","text/plain")
368+
clientmetric.WritePrometheusExpositionFormat(w)
369+
})
370+
}

‎cli/testdata/coder_agent_--help.golden‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ Starts the Coder workspace agent.
1515
--pprof-address string, $CODER_AGENT_PPROF_ADDRESS (default: 127.0.0.1:6060)
1616
The address to serve pprof.
1717

18+
--prometheus-address string, $CODER_AGENT_PROMETHEUS_ADDRESS (default: 127.0.0.1:2112)
19+
The bind address to serve Prometheus metrics.
20+
1821
--ssh-max-timeout duration, $CODER_AGENT_SSH_MAX_TIMEOUT (default: 0)
1922
Specify the max timeout for a SSH connection.
2023

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp