Skip to content

Commit 59cae0f

Browse files
Rishabh Bectorsudarshan-reddy
authored andcommitted
TUN-4698: Add cloudflared metrics endpoint to serve quick tunnel hostname
1 parent d678584 commit 59cae0f

File tree

5 files changed

+12
-5
lines changed

5 files changed

+12
-5
lines changed

cmd/cloudflared/proxydns/cmd.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ func Run(c *cli.Context) error {
7373
log.Fatal().Err(err).Msg("Failed to open the metrics listener")
7474
}
7575

76-
go metrics.ServeMetrics(metricsListener, nil, nil, log)
76+
go metrics.ServeMetrics(metricsListener, nil, nil, "", log)
7777

7878
listener, err := tunneldns.CreateListener(
7979
c.String("address"),

cmd/cloudflared/tunnel/cmd.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ func runAdhocNamedTunnel(sc *subcommandContext, name, credentialsOutputPath stri
206206

207207
// runClassicTunnel creates a "classic" non-named tunnel
208208
func runClassicTunnel(sc *subcommandContext) error {
209-
return StartServer(sc.c, version, nil, sc.log, sc.isUIEnabled)
209+
return StartServer(sc.c, version, nil, sc.log, sc.isUIEnabled, "")
210210
}
211211

212212
func routeFromFlag(c *cli.Context) (route tunnelstore.Route, ok bool) {
@@ -225,6 +225,7 @@ func StartServer(
225225
namedTunnel *connection.NamedTunnelConfig,
226226
log *zerolog.Logger,
227227
isUIEnabled bool,
228+
quickTunnelHostname string,
228229
) error {
229230
_ = raven.SetDSN(sentryDSN)
230231
var wg sync.WaitGroup
@@ -341,7 +342,7 @@ func StartServer(
341342
defer wg.Done()
342343
readinessServer := metrics.NewReadyServer(log)
343344
observer.RegisterSink(readinessServer)
344-
errC <- metrics.ServeMetrics(metricsListener, ctx.Done(), readinessServer, log)
345+
errC <- metrics.ServeMetrics(metricsListener, ctx.Done(), readinessServer, quickTunnelHostname, log)
345346
}()
346347

347348
if err := ingressRules.StartOrigins(&wg, log, ctx.Done(), errC); err != nil {

cmd/cloudflared/tunnel/quick_tunnel.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ func RunQuickTunnel(sc *subcommandContext) error {
6464
&connection.NamedTunnelConfig{Credentials: credentials},
6565
sc.log,
6666
sc.isUIEnabled,
67+
data.Result.Hostname,
6768
)
6869
}
6970

cmd/cloudflared/tunnel/subcommand_context.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,7 @@ func (sc *subcommandContext) run(tunnelID uuid.UUID) error {
286286
&connection.NamedTunnelConfig{Credentials: credentials},
287287
sc.log,
288288
sc.isUIEnabled,
289+
"",
289290
)
290291
}
291292

metrics/metrics.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ const (
2222
startupTime = time.Millisecond * 500
2323
)
2424

25-
func newMetricsHandler(readyServer *ReadyServer) *mux.Router {
25+
func newMetricsHandler(readyServer *ReadyServer, quickTunnelHostname string) *mux.Router {
2626
router := mux.NewRouter()
2727
router.PathPrefix("/debug/").Handler(http.DefaultServeMux)
2828

@@ -33,6 +33,9 @@ func newMetricsHandler(readyServer *ReadyServer) *mux.Router {
3333
if readyServer != nil {
3434
router.Handle("/ready", readyServer)
3535
}
36+
router.HandleFunc("/quicktunnel", func(w http.ResponseWriter, r *http.Request) {
37+
_, _ = fmt.Fprintf(w, `{"hostname":"%s"}`, quickTunnelHostname)
38+
})
3639

3740
return router
3841
}
@@ -41,14 +44,15 @@ func ServeMetrics(
4144
l net.Listener,
4245
shutdownC <-chan struct{},
4346
readyServer *ReadyServer,
47+
quickTunnelHostname string,
4448
log *zerolog.Logger,
4549
) (err error) {
4650
var wg sync.WaitGroup
4751
// Metrics port is privileged, so no need for further access control
4852
trace.AuthRequest = func(*http.Request) (bool, bool) { return true, true }
4953
// TODO: parameterize ReadTimeout and WriteTimeout. The maximum time we can
5054
// profile CPU usage depends on WriteTimeout
51-
h := newMetricsHandler(readyServer)
55+
h := newMetricsHandler(readyServer, quickTunnelHostname)
5256
server := &http.Server{
5357
ReadTimeout: 10 * time.Second,
5458
WriteTimeout: 10 * time.Second,

0 commit comments

Comments
 (0)