Skip to content

Commit f3fe436

Browse files
authored
Merge pull request #271 from UTDNebula/sentry
Add Sentry
2 parents 9164028 + 9e99910 commit f3fe436

File tree

5 files changed

+37
-0
lines changed

5 files changed

+37
-0
lines changed

api/.env.template

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,6 @@ MONGODB_URI=
1111
# CLOUD STORAGE (internal use only)
1212
GOOGLE_APPLICATION_CREDENTIALS=
1313
STORAGE_ROUTE_KEY=
14+
15+
# SENRTY
16+
SENTRY_ENVIRONMENT=development

api/controllers/controller_utils.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import (
66
"net/http"
77

88
"github.com/UTDNebula/nebula-api/api/schema"
9+
"github.com/getsentry/sentry-go"
10+
sentrygin "github.com/getsentry/sentry-go/gin"
911
"github.com/gin-gonic/gin"
1012
"go.mongodb.org/mongo-driver/bson/primitive"
1113
)
@@ -19,6 +21,12 @@ func respond[T any](c *gin.Context, status int, message string, data T) {
1921
func respondWithInternalError(c *gin.Context, err error) {
2022
// Note that we use log.Output here to be able to set the stack depth to the frame above this one (2), which allows us to log the location this function was called from
2123
log.Output(2, fmt.Sprintf("INTERNAL SERVER ERROR: %s", err.Error()))
24+
// Capture error with Sentry
25+
if hub := sentrygin.GetHubFromContext(c); hub != nil {
26+
hub.WithScope(func(scope *sentry.Scope) {
27+
hub.CaptureException(err)
28+
})
29+
}
2230
respond(c, http.StatusInternalServerError, "error", err.Error())
2331
}
2432

api/go.mod

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ toolchain go1.23.2
66

77
require (
88
cloud.google.com/go/storage v1.51.0
9+
github.com/getsentry/sentry-go v0.33.0
10+
github.com/getsentry/sentry-go/gin v0.33.0
911
github.com/gin-gonic/gin v1.10.0
1012
github.com/joho/godotenv v1.5.1
1113
github.com/swaggo/files v1.0.1

api/go.sum

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,18 @@ github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2
5858
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
5959
github.com/gabriel-vasile/mimetype v1.4.5 h1:J7wGKdGu33ocBOhGy0z653k/lFKLFDPJMG8Gql0kxn4=
6060
github.com/gabriel-vasile/mimetype v1.4.5/go.mod h1:ibHel+/kbxn9x2407k1izTA1S81ku1z/DlgOW2QE0M4=
61+
github.com/getsentry/sentry-go v0.33.0 h1:YWyDii0KGVov3xOaamOnF0mjOrqSjBqwv48UEzn7QFg=
62+
github.com/getsentry/sentry-go v0.33.0/go.mod h1:C55omcY9ChRQIUcVcGcs+Zdy4ZpQGvNJ7JYHIoSWOtE=
63+
github.com/getsentry/sentry-go/gin v0.33.0 h1:8oH2ydD/EeKlDMoENhCtq3rJ7EcQtjfdzrMM1Ku2J3I=
64+
github.com/getsentry/sentry-go/gin v0.33.0/go.mod h1:uwqds9mMjBCn/+WcgtX0z+mBq487macTzDxNljM+/g8=
6165
github.com/gin-contrib/gzip v0.0.6 h1:NjcunTcGAj5CO1gn4N8jHOSIeRFHIbn51z6K+xaN4d4=
6266
github.com/gin-contrib/gzip v0.0.6/go.mod h1:QOJlmV2xmayAjkNS2Y8NQsMneuRShOU/kjovCXNuzzk=
6367
github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
6468
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
6569
github.com/gin-gonic/gin v1.10.0 h1:nTuyha1TYqgedzytsKYqna+DfLos46nTv2ygFy86HFU=
6670
github.com/gin-gonic/gin v1.10.0/go.mod h1:4PMNQiOhvDRa013RKVbsiNwoyezlm2rm0uX/T7kzp5Y=
71+
github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA=
72+
github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=
6773
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
6874
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
6975
github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
@@ -135,6 +141,10 @@ github.com/montanaflynn/stats v0.7.1 h1:etflOAAHORrCC44V+aR6Ftzort912ZU+YLiSTuV8
135141
github.com/montanaflynn/stats v0.7.1/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow=
136142
github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M=
137143
github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc=
144+
github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4=
145+
github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8=
146+
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
147+
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
138148
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo=
139149
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8=
140150
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
@@ -192,6 +202,8 @@ go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce
192202
go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w=
193203
go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k=
194204
go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE=
205+
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
206+
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
195207
golang.org/x/arch v0.10.0 h1:S3huipmSclq3PJMNe76NGwkBR504WFkQ5dhzWzP8ZW8=
196208
golang.org/x/arch v0.10.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys=
197209
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=

api/server.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import (
66
"github.com/UTDNebula/nebula-api/api/configs"
77
_ "github.com/UTDNebula/nebula-api/api/docs"
88
"github.com/UTDNebula/nebula-api/api/routes"
9+
"github.com/getsentry/sentry-go"
10+
sentrygin "github.com/getsentry/sentry-go/gin"
911
"github.com/gin-gonic/gin"
1012
swaggerFiles "github.com/swaggo/files"
1113
ginSwagger "github.com/swaggo/gin-swagger"
@@ -45,6 +47,13 @@ func main() {
4547
// Establish the connection to the database
4648
configs.ConnectDB()
4749

50+
// Set up Sentry
51+
if err := sentry.Init(sentry.ClientOptions{
52+
Dsn: "https://530f8e39f757b71ab26ad1aa12e17a4d@o4504918397353984.ingest.us.sentry.io/4509397160493056",
53+
}); err != nil {
54+
log.Printf("Sentry initialization failed: %v\n", err)
55+
}
56+
4857
// Configure Gin Router
4958
router := gin.New()
5059
// Get rid of "trusted all proxies" warning -- we don't care
@@ -56,6 +65,9 @@ func main() {
5665
// Enable Logging
5766
router.Use(LogRequest)
5867

68+
// Attach Sentry
69+
router.Use(sentrygin.New(sentrygin.Options{}))
70+
5971
// Setup swagger-ui hosted
6072
router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
6173

0 commit comments

Comments
 (0)