Skip to content

Commit dbe5a8f

Browse files
committed
add a health-check server
1 parent 318f56a commit dbe5a8f

File tree

1 file changed

+37
-5
lines changed

1 file changed

+37
-5
lines changed

cmd/proxy-server/main.go

Lines changed: 37 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import (
44
"context"
55
"crypto/tls"
66
"errors"
7-
"log"
7+
"log/slog"
88
"net/http"
99
"os"
1010
"os/signal"
@@ -24,6 +24,12 @@ var flags []cli.Flag = []cli.Flag{
2424
Value: "127.0.0.1:8080",
2525
Usage: "address to listen on",
2626
},
27+
&cli.StringFlag{
28+
Name: "listen-addr-healthcheck",
29+
EnvVars: []string{"LISTEN_ADDR_HEALTHCHECK"},
30+
Value: "",
31+
Usage: "address to listen on for health checks",
32+
},
2733
&cli.StringFlag{
2834
Name: "target-addr",
2935
EnvVars: []string{"TARGET_ADDR"},
@@ -39,12 +45,12 @@ var flags []cli.Flag = []cli.Flag{
3945
&cli.StringFlag{
4046
Name: "tls-certificate",
4147
EnvVars: []string{"TLS_CERTIFICATE"},
42-
Usage: "Certificate to present (PEM). Only valid for --server-attestation-type=none and with --tls-private-key.",
48+
Usage: "Path to TLS certificate (PEM). Only valid for --server-attestation-type=none and with --tls-private-key.",
4349
},
4450
&cli.StringFlag{
4551
Name: "tls-private-key",
4652
EnvVars: []string{"TLS_PRIVATE_KEY"},
47-
Usage: "Private key for the certificate (PEM). Only valid with --tls-certificate.",
53+
Usage: "Path to private key for the certificate. Only valid with --tls-certificate.",
4854
},
4955
&cli.StringFlag{
5056
Name: "client-attestation-type",
@@ -71,6 +77,8 @@ var flags []cli.Flag = []cli.Flag{
7177
},
7278
}
7379

80+
var log *slog.Logger
81+
7482
func main() {
7583
app := &cli.App{
7684
Name: "proxy-server",
@@ -80,7 +88,11 @@ func main() {
8088
}
8189

8290
if err := app.Run(os.Args); err != nil {
83-
log.Fatal(err)
91+
if log != nil {
92+
log.Error("error running app", "err", err)
93+
} else {
94+
panic(err)
95+
}
8496
}
8597
}
8698

@@ -95,7 +107,7 @@ func runServer(cCtx *cli.Context) error {
95107
certFile := cCtx.String("tls-certificate")
96108
keyFile := cCtx.String("tls-private-key")
97109

98-
log := common.SetupLogger(&common.LoggingOpts{
110+
log = common.SetupLogger(&common.LoggingOpts{
99111
Debug: logDebug,
100112
JSON: logJSON,
101113
Service: "proxy-server",
@@ -196,6 +208,12 @@ func runServer(cCtx *cli.Context) error {
196208
}
197209
}()
198210

211+
// Start the health check server
212+
listenAddrHealthCheck := cCtx.String("listen-addr-healthcheck")
213+
if listenAddrHealthCheck != "" {
214+
go startHealthCheckServer(listenAddrHealthCheck)
215+
}
216+
199217
log.With("listenAddr", listenAddr).Info("Starting proxy server")
200218
err = server.Serve(tlsListener)
201219
if err != nil {
@@ -205,3 +223,17 @@ func runServer(cCtx *cli.Context) error {
205223

206224
return nil
207225
}
226+
227+
func startHealthCheckServer(listenAddrHealthCheck string) {
228+
log.With("healthCheckListenAddr", listenAddrHealthCheck).Info("Starting health check server")
229+
healthCheckServer := &http.Server{
230+
Addr: listenAddrHealthCheck,
231+
Handler: http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
232+
w.WriteHeader(http.StatusOK)
233+
}),
234+
}
235+
err := healthCheckServer.ListenAndServe()
236+
if err != nil {
237+
log.Error("could not start health check server", "err", err)
238+
}
239+
}

0 commit comments

Comments
 (0)