diff --git a/cmd/healthcheck/healthcheck.go b/cmd/healthcheck/healthcheck.go index a3b720eb6..dd83cb159 100644 --- a/cmd/healthcheck/healthcheck.go +++ b/cmd/healthcheck/healthcheck.go @@ -2,6 +2,7 @@ package healthcheck import ( "errors" + "flag" "fmt" "net/http" "os" @@ -22,11 +23,26 @@ func NewCmd(traefikConfiguration *static.Configuration, loaders []cli.ResourceLo } } -func runCmd(traefikConfiguration *static.Configuration) func(_ []string) error { - return func(_ []string) error { +func runCmd(traefikConfiguration *static.Configuration) func(args []string) error { + return func(args []string) error { + fs := flag.NewFlagSet("healthcheck", flag.ContinueOnError) + urlFlag := fs.String("url", "", "") + fs.SetOutput(os.Stderr) + if err := fs.Parse(args); err != nil { + return err + } + traefikConfiguration.SetEffectiveConfiguration() - resp, errPing := Do(*traefikConfiguration) + var resp *http.Response + var errPing error + if *urlFlag != "" { + client := &http.Client{Timeout: 5 * time.Second} + resp, errPing = client.Head(*urlFlag) + } else { + resp, errPing = Do(*traefikConfiguration) + } + if resp != nil { resp.Body.Close() } diff --git a/docs/content/reference/install-configuration/observability/healthcheck.md b/docs/content/reference/install-configuration/observability/healthcheck.md index 742480286..9282b6b79 100644 --- a/docs/content/reference/install-configuration/observability/healthcheck.md +++ b/docs/content/reference/install-configuration/observability/healthcheck.md @@ -27,6 +27,16 @@ $ traefik healthcheck OK: http://:8082/ping ``` +### URL Option + +The URL to check can be specified with the `--url` flag, which defaults to `http://localhost:8080/ping`. + +Example: + +```sh +traefik healthcheck --url=http://localhost:8080/ping +``` + ## Ping The `/ping` health-check URL is enabled with the command-line `--ping` or config file option `[ping]`.