From 97ea3c16cb079133929b98cf41b35a3651586a1a Mon Sep 17 00:00:00 2001 From: henrygd Date: Mon, 21 Sep 2026 19:53:53 -0400 Subject: [PATCH] add custom user agent to HTTP monitors --- agent/network_monitor_probe.go | 4 ++++ agent/network_monitor_test.go | 2 ++ 2 files changed, 6 insertions(+) diff --git a/agent/network_monitor_probe.go b/agent/network_monitor_probe.go index 187a6bf3..cee135e0 100644 --- a/agent/network_monitor_probe.go +++ b/agent/network_monitor_probe.go @@ -8,9 +8,12 @@ import ( "net/http" "time" + "github.com/henrygd/beszel" "github.com/henrygd/beszel/internal/entities/monitor" ) +const networkMonitorUserAgent = "Beszel-Agent/" + beszel.Version + " (+https://beszel.dev)" + // monitorProbe performs one check. Errors are recorded as loss by the task runner. // Implementations must honor cancellation and bound their execution time. type monitorProbe func(context.Context, monitor.Config) (int64, error) @@ -93,6 +96,7 @@ func monitorHTTP(ctx context.Context, client *http.Client, url string) (int64, e if err != nil { return -1, err } + req.Header.Set("User-Agent", networkMonitorUserAgent) resp, err := client.Do(req) if err != nil { return -1, err diff --git a/agent/network_monitor_test.go b/agent/network_monitor_test.go index b24ab043..f725441a 100644 --- a/agent/network_monitor_test.go +++ b/agent/network_monitor_test.go @@ -10,6 +10,7 @@ import ( "testing" "time" + "github.com/henrygd/beszel" "github.com/henrygd/beszel/internal/entities/monitor" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -240,6 +241,7 @@ func TestMonitorManagerGetRandomDelay(t *testing.T) { func TestMonitorHTTP(t *testing.T) { t.Run("success", func(t *testing.T) { server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + assert.Equal(t, "Beszel-Agent/"+beszel.Version+" (+https://beszel.dev)", r.Header.Get("User-Agent")) w.WriteHeader(http.StatusNoContent) })) defer server.Close()