feat: sentry integration
All checks were successful
arcad/emissary/pipeline/head This commit looks good

This commit is contained in:
2023-10-13 12:30:52 +02:00
parent 9068203e71
commit e756a60373
27 changed files with 272 additions and 67 deletions

View File

@ -23,6 +23,7 @@ import (
"forge.cadoles.com/arcad/edge/pkg/storage/driver"
"forge.cadoles.com/arcad/edge/pkg/storage/share"
"github.com/Masterminds/sprig/v3"
"github.com/getsentry/sentry-go"
"github.com/go-chi/chi/v5"
"github.com/lestrrat-go/jwx/v2/jwa"
"github.com/pkg/errors"
@ -197,21 +198,25 @@ func createResolveAppURL(specs *spec.Spec) (ResolveAppURLFunc, error) {
for ifaceName, ifaceTmpl := range ifaceMappings {
iface, err := net.InterfaceByName(ifaceName)
if err != nil {
logger.Error(
err = errors.WithStack(err)
logger.Warn(
ctx, "could not find interface",
logger.E(errors.WithStack(err)), logger.F("iface", ifaceName),
logger.E(err), logger.F("iface", ifaceName),
)
sentry.CaptureException(err)
continue
}
addresses, err := iface.Addrs()
if err != nil {
err = errors.WithStack(err)
logger.Error(
ctx, "could not list interface addresses",
logger.E(errors.WithStack(err)),
logger.E(err),
logger.F("iface", iface.Name),
)
sentry.CaptureException(err)
continue
}
@ -219,11 +224,13 @@ func createResolveAppURL(specs *spec.Spec) (ResolveAppURLFunc, error) {
for _, addr := range addresses {
ifaIP, network, err := net.ParseCIDR(addr.String())
if err != nil {
err = errors.WithStack(err)
logger.Error(
ctx, "could not parse interface ip",
logger.E(errors.WithStack(err)),
logger.E(err),
logger.F("iface", iface.Name),
)
sentry.CaptureException(err)
continue
}

View File

@ -8,6 +8,7 @@ import (
"forge.cadoles.com/arcad/edge/pkg/app"
"forge.cadoles.com/arcad/edge/pkg/bundle"
appModule "forge.cadoles.com/arcad/edge/pkg/module/app"
"github.com/getsentry/sentry-go"
"github.com/pkg/errors"
"gitlab.com/wpetit/goweb/logger"
)
@ -63,14 +64,18 @@ func (r *AppRepository) List(ctx context.Context) ([]*app.Manifest, error) {
bundle, err := bundle.FromPath(path)
if err != nil {
logger.Error(bundleCtx, "could not load bundle", logger.E(errors.WithStack(err)))
err = errors.WithStack(err)
logger.Error(bundleCtx, "could not load bundle", logger.E(err))
sentry.CaptureException(err)
continue
}
manifest, err := app.LoadManifest(bundle)
if err != nil {
logger.Error(bundleCtx, "could not load manifest", logger.E(errors.WithStack(err)))
err = errors.WithStack(err)
logger.Error(bundleCtx, "could not load manifest", logger.E(err))
sentry.CaptureException(err)
continue
}
@ -97,14 +102,18 @@ func (r *AppRepository) findManifest(ctx context.Context, id app.ID) (*app.Manif
bundle, err := bundle.FromPath(path)
if err != nil {
logger.Error(bundleCtx, "could not load bundle", logger.E(errors.WithStack(err)))
err = errors.WithStack(err)
logger.Error(bundleCtx, "could not load bundle", logger.E(err))
sentry.CaptureException(err)
continue
}
manifest, err := app.LoadManifest(bundle)
if err != nil {
logger.Error(bundleCtx, "could not load manifest", logger.E(errors.WithStack(err)))
err = errors.WithStack(err)
logger.Error(bundleCtx, "could not load manifest", logger.E(err))
sentry.CaptureException(err)
continue
}

View File

@ -11,6 +11,7 @@ import (
"forge.cadoles.com/Cadoles/emissary/internal/agent/controller/app/spec"
"forge.cadoles.com/arcad/edge/pkg/app"
"forge.cadoles.com/arcad/edge/pkg/bundle"
"github.com/getsentry/sentry-go"
"github.com/mitchellh/hashstructure/v2"
"github.com/pkg/errors"
"gitlab.com/wpetit/goweb/logger"
@ -66,11 +67,13 @@ func (c *Controller) stopAllApps(ctx context.Context, spec *spec.Spec) {
logger.Info(ctx, "stopping app", logger.F("appID", appID))
if err := entry.Server.Stop(); err != nil {
err = errors.WithStack(err)
logger.Error(
ctx, "error while stopping app",
logger.F("appID", appID),
logger.E(errors.WithStack(err)),
logger.E(err),
)
sentry.CaptureException(err)
delete(c.servers, appID)
}
@ -87,21 +90,25 @@ func (c *Controller) updateApps(ctx context.Context, specs *spec.Spec) {
logger.Info(ctx, "stopping app", logger.F("appKey", appKey))
if err := server.Server.Stop(); err != nil {
err = errors.WithStack(err)
logger.Error(
ctx, "error while stopping app",
logger.F("appKey", appKey),
logger.E(errors.WithStack(err)),
logger.E(err),
)
sentry.CaptureException(err)
delete(c.servers, appKey)
}
}
if err := c.updateAppRepository(ctx, specs); err != nil {
err = errors.WithStack(err)
logger.Error(
ctx, "could not update app repository",
logger.E(errors.WithStack(err)),
logger.E(err),
)
sentry.CaptureException(err)
return
}
@ -111,7 +118,9 @@ func (c *Controller) updateApps(ctx context.Context, specs *spec.Spec) {
appCtx := logger.With(ctx, logger.F("appKey", appKey))
if err := c.updateApp(ctx, specs, appKey); err != nil {
logger.Error(appCtx, "could not update app", logger.E(errors.WithStack(err)))
err = errors.WithStack(err)
logger.Error(appCtx, "could not update app", logger.E(err))
sentry.CaptureException(err)
continue
}
}

View File

@ -14,6 +14,7 @@ import (
"gitlab.com/wpetit/goweb/logger"
"forge.cadoles.com/arcad/edge/pkg/bundle"
"github.com/getsentry/sentry-go"
"github.com/go-chi/chi/middleware"
"github.com/go-chi/chi/v5"
"github.com/pkg/errors"
@ -72,7 +73,9 @@ func (s *Server) Start(ctx context.Context, addr string) (err error) {
defer func() {
if recovered := recover(); recovered != nil {
if err, ok := recovered.(error); ok {
logger.Error(ctx, err.Error(), logger.E(errors.WithStack(err)))
err = errors.WithStack(err)
logger.Error(ctx, err.Error(), logger.E(err))
sentry.CaptureException(err)
return
}