Add Sentry support.

This commit is contained in:
Catherine
2025-09-29 21:10:36 +00:00
parent dcabcac106
commit c3575a09ca
4 changed files with 47 additions and 1 deletions

1
go.mod
View File

@@ -6,6 +6,7 @@ require (
github.com/KimMachineGun/automemlimit v0.7.4
github.com/c2h5oh/datasize v0.0.0-20231215233829-aa82cc1e6500
github.com/creasty/defaults v1.8.0
github.com/getsentry/sentry-go v0.35.3
github.com/go-git/go-billy/v6 v6.0.0-20250627091229-31e2a16eef30
github.com/go-git/go-git/v6 v6.0.0-20250910120214-3a68d0404116
github.com/honeybadger-io/honeybadger-go v0.8.0

6
go.sum
View File

@@ -31,8 +31,12 @@ github.com/elazarl/goproxy v1.7.2 h1:Y2o6urb7Eule09PjlhQRGNsqRfPmYI3KKQLFpCAV3+o
github.com/elazarl/goproxy v1.7.2/go.mod h1:82vkLNir0ALaW14Rc399OTTjyNREgmdL2cVoIbS6XaE=
github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=
github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ=
github.com/getsentry/sentry-go v0.35.3 h1:u5IJaEqZyPdWqe/hKlBKBBnMTSxB/HenCqF3QLabeds=
github.com/getsentry/sentry-go v0.35.3/go.mod h1:mdL49ixwT2yi57k5eh7mpnDyPybixPzlzEJFu0Z76QA=
github.com/gliderlabs/ssh v0.3.8 h1:a4YXD1V7xMF9g5nTkdfnja3Sxy1PVDCj1Zg4Wb8vY6c=
github.com/gliderlabs/ssh v0.3.8/go.mod h1:xYoytBv1sV0aL3CavoDuJIQNURXkkfPA/wxQ1pL1fAU=
github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA=
github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=
github.com/go-git/gcfg/v2 v2.0.2 h1:MY5SIIfTGGEMhdA7d7JePuVVxtKL7Hp+ApGDJAJ7dpo=
github.com/go-git/gcfg/v2 v2.0.2/go.mod h1:/lv2NsxvhepuMrldsFilrgct6pxzpGdSRC13ydTLSLs=
github.com/go-git/go-billy/v6 v6.0.0-20250627091229-31e2a16eef30 h1:4KqVJTL5eanN8Sgg3BV6f2/QzfZEFbCd+rTak1fGRRA=
@@ -89,6 +93,8 @@ github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0
github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=
github.com/philhofer/fwd v1.2.0 h1:e6DnBTl7vGY+Gz322/ASL4Gyp1FspeMvx1RNDoToZuM=
github.com/philhofer/fwd v1.2.0/go.mod h1:RqIHx9QI14HlwKwm98g9Re5prTQ6LdeRQn+gXJFxsJM=
github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4=
github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8=
github.com/pjbgf/sha1cd v0.5.0 h1:a+UkboSi1znleCDUNT3M5YxjOnN1fz2FhN48FlwCxs0=
github.com/pjbgf/sha1cd v0.5.0/go.mod h1:lhpGlyHLpQZoxMv8HcgXvZEhcGs0PG/vsZnEJ7H0iCM=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=

View File

@@ -72,6 +72,7 @@ func serve(listener net.Listener, handler http.Handler) {
func main() {
InitObservability()
defer FiniObservability()
printConfigEnvVars := flag.Bool("print-config-env-vars", false,
"print every recognized configuration environment variable and exit")

View File

@@ -1,27 +1,65 @@
package main
import (
"log"
"net/http"
"os"
"runtime/debug"
"time"
"github.com/honeybadger-io/honeybadger-go"
"github.com/getsentry/sentry-go"
sentryhttp "github.com/getsentry/sentry-go/http"
)
func hasHoneybadger() bool {
return os.Getenv("HONEYBADGER_API_KEY") != ""
}
func hasSentry() bool {
return os.Getenv("SENTRY_DSN") != ""
}
func InitObservability() {
environment := "development"
if value, ok := os.LookupEnv("ENVIRONMENT"); ok {
environment = value
}
if hasHoneybadger() {
honeybadger.Configure(honeybadger.Configuration{})
honeybadger.Configure(honeybadger.Configuration{
Env: environment,
})
debug.SetPanicOnFault(true)
}
if hasSentry() {
options := sentry.ClientOptions{}
options.Environment = environment
options.Dsn = os.Getenv("SENTRY_DSN")
if err := sentry.Init(options); err != nil {
log.Fatalf("sentry: %s\n", err)
}
}
}
func FiniObservability() {
if hasSentry() {
sentry.Flush(2 * time.Second)
}
}
func ObserveHTTPHandler(handler http.Handler) http.Handler {
if hasHoneybadger() {
handler = honeybadger.Handler(handler)
}
if hasSentry() {
handler = sentryhttp.New(sentryhttp.Options{
Repanic: true,
}).Handle(handler)
}
return handler
}