Skip to content

Commit

Permalink
Add Sentry Monitoring Support (#33)
Browse files Browse the repository at this point in the history
Adds sentry handling and changes the initialization strategy on the logger and server for more predictable behavior.
  • Loading branch information
rossnelson committed Apr 16, 2024
1 parent c7831cf commit ca90a3a
Show file tree
Hide file tree
Showing 28 changed files with 755 additions and 166 deletions.
5 changes: 4 additions & 1 deletion config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,10 @@ func Enable() {
appDir, _ := findAppDir(envFlag)
path := joinPath(*appDir, envFlag)

_ = godotenv.Load(path)
err := godotenv.Load(path)
if err != nil {
panic(err)
}
}

func findAppDir(env string) (*string, error) {
Expand Down
5 changes: 3 additions & 2 deletions data/sql/sql.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,12 @@ import (

"github.com/dlmiddlecote/sqlstats"
"github.com/jmoiron/sqlx"
"github.com/simiancreative/simiango/logger"
"github.com/simiancreative/simiango/stats/prometheus"
sqlLogger "github.com/simukti/sqldb-logger"
"github.com/simukti/sqldb-logger/logadapter/logrusadapter"
"github.com/sirupsen/logrus"

"github.com/simiancreative/simiango/logger"
"github.com/simiancreative/simiango/stats/prometheus"
)

type ConnX interface {
Expand Down
7 changes: 5 additions & 2 deletions examples/config/.env.dev.local
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ TOKEN_SECRET: wombat

CRYPTED_TOKEN=9bkRcs8YPVxh11n+JbbiZcbPtS0y+In0zo6vRpjScCI=

APP_VERSION: 333
/*SENTRY_DSN: */

/* DB_PRIME_CONNECTIONS=100 */
/* DB_MAX_OPEN_CONNECTIONS=500 */
/* DB_MAX_IDLE_CONNECTIONS=500 */
Expand All @@ -19,7 +22,7 @@ REDIS_MASTER_NAME: mymaster
REDIS_SENTINELS: :26379
REDIS_SENTINELS_PASS:

/* AMQP=true */
/*AMQP=true*/
AMQP_DONT_CONSUME=true
AMQP_URI: amqp://guest:guest@localhost:5672
AMQP_EXCHANGE_NAME: exampleExchange
Expand All @@ -28,7 +31,7 @@ AMQP_QUEUE_NAME: exampleQueue
AMQP_QUEUE_KEY: consumer
AMQP_CONSUMER_TAG: exampleTag

/* KAFKA=true */
/*KAFKA=true*/
KAFKA_BATCH_SIZE: 100
KAFKA_BATCH_TIMEOUT: 2000
KAFKA_HANDLER: example-handler
Expand Down
10 changes: 10 additions & 0 deletions examples/lib/sentryconfig.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package lib

import (
"github.com/getsentry/sentry-go"
"github.com/gin-gonic/gin"
)

func SentryScope(c *gin.Context, s *sentry.Scope) {
s.SetExtra("extra", "extra")
}
25 changes: 15 additions & 10 deletions examples/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,16 @@ import (
"os"

"github.com/simiancreative/simiango/config"
"github.com/simiancreative/simiango/logger"

"github.com/simiancreative/simiango/meta"

"github.com/simiancreative/simiango/data/mssql"
"github.com/simiancreative/simiango/data/mysql"
"github.com/simiancreative/simiango/data/pg"

"github.com/simiancreative/simiango/messaging/amqp"
"github.com/simiancreative/simiango/messaging/kafka"
"github.com/simiancreative/simiango/server"
"github.com/simiancreative/simiango/stats/prometheus"

"github.com/simiancreative/simiango/examples/lib"
_ "github.com/simiancreative/simiango/examples/services/assign"
_ "github.com/simiancreative/simiango/examples/services/combinators"
_ "github.com/simiancreative/simiango/examples/services/crud"
_ "github.com/simiancreative/simiango/examples/services/crypt"
_ "github.com/simiancreative/simiango/examples/services/direct"
_ "github.com/simiancreative/simiango/examples/services/error"
_ "github.com/simiancreative/simiango/examples/services/kafka/consume"
_ "github.com/simiancreative/simiango/examples/services/kafka/consume-without-messages"
_ "github.com/simiancreative/simiango/examples/services/kafka/ingest"
Expand All @@ -34,10 +26,20 @@ import (
_ "github.com/simiancreative/simiango/examples/services/sample"
_ "github.com/simiancreative/simiango/examples/services/stream"
_ "github.com/simiancreative/simiango/examples/services/unsafe"
"github.com/simiancreative/simiango/logger"
"github.com/simiancreative/simiango/messaging/amqp"
"github.com/simiancreative/simiango/messaging/kafka"
"github.com/simiancreative/simiango/meta"
"github.com/simiancreative/simiango/monitoring/sentry"
"github.com/simiancreative/simiango/server"
"github.com/simiancreative/simiango/stats/prometheus"
)

func main() {
config.Enable()
logger.Enable()

sentry.Enable()

logger.Printf("ENV STARTING AS: %v", os.Getenv("APP_ENV"))
done, exit := meta.CatchSig()
Expand All @@ -46,11 +48,14 @@ func main() {
mysql.Connect()
pg.Connect()

server.Init()

prometheus.Handle()

server.EnableHealthCheck()
server.SetCORS()
server.AddPprof()
server.AddSentry(lib.SentryScope)

go server.Start()

Expand Down
25 changes: 25 additions & 0 deletions examples/services/error/error.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package error

import (
"fmt"

"github.com/simiancreative/simiango/server"
"github.com/simiancreative/simiango/service"
)

var Config = service.Config{
Kind: service.DIRECT,
Method: "GET",
Path: "/error",
Direct: direct,
}

func direct(req service.Req) (interface{}, error) {
return nil, fmt.Errorf("this is an error")
}

// dont forget to import your package in your main.go for initialization
// _ "path/to/project/direct"
func init() {
server.AddService(Config)
}
28 changes: 17 additions & 11 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module github.com/simiancreative/simiango

go 1.17
go 1.20

require (
github.com/AlecAivazis/survey/v2 v2.3.5
Expand Down Expand Up @@ -45,31 +45,27 @@ require (
github.com/bytedance/sonic v1.9.1 // indirect
github.com/cespare/xxhash/v2 v2.1.2 // indirect
github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 // indirect
github.com/cockroachdb/apd v1.1.0 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
github.com/fsnotify/fsnotify v1.5.4 // indirect
github.com/gabriel-vasile/mimetype v1.4.2 // indirect
github.com/gin-contrib/sse v0.1.0 // indirect
github.com/gin-gonic/contrib v0.0.0-20201101042839-6a891bf89f19 // indirect
github.com/go-playground/locales v0.14.1 // indirect
github.com/go-playground/universal-translator v0.18.1 // indirect
github.com/go-playground/validator/v10 v10.14.0 // indirect
github.com/goccy/go-json v0.10.2 // indirect
github.com/gofrs/uuid v4.0.0+incompatible // indirect
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe // indirect
github.com/golang-sql/sqlexp v0.1.0 // indirect
github.com/golang/gddo v0.0.0-20200310004957-95ce5a452273 // indirect
github.com/golang/protobuf v1.5.2 // indirect
github.com/inconshreveable/mousetrap v1.0.0 // indirect
github.com/jackc/fake v0.0.0-20150926172116-812a484cc733 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect
github.com/klauspost/compress v1.15.7 // indirect
github.com/klauspost/compress v1.16.0 // indirect
github.com/klauspost/cpuid/v2 v2.2.4 // indirect
github.com/leodido/go-urn v1.2.4 // indirect
github.com/lib/pq v1.10.2 // indirect
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
github.com/mattn/go-colorable v0.1.6 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.19 // indirect
github.com/mattn/go-runewidth v0.0.13 // indirect
github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect
Expand All @@ -78,6 +74,7 @@ require (
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/muesli/reflow v0.2.1-0.20210115123740-9e1d0d53df68 // indirect
github.com/muesli/termenv v0.11.1-0.20220204035834-5ac8409525e0 // indirect
github.com/onsi/gomega v1.27.1 // indirect
github.com/pelletier/go-toml/v2 v2.0.8 // indirect
github.com/pierrec/lz4/v4 v4.1.15 // indirect
github.com/pkg/errors v0.9.1 // indirect
Expand All @@ -86,17 +83,26 @@ require (
github.com/prometheus/common v0.37.0 // indirect
github.com/prometheus/procfs v0.8.0 // indirect
github.com/rivo/uniseg v0.2.0 // indirect
github.com/shopspring/decimal v1.2.0 // indirect
github.com/spf13/pflag v1.0.5 // indirect
github.com/stretchr/objx v0.5.0 // indirect
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
github.com/ugorji/go/codec v1.2.11 // indirect
github.com/yuin/gopher-lua v0.0.0-20210529063254-f4c35e4016d9 // indirect
golang.org/x/arch v0.3.0 // indirect
golang.org/x/net v0.17.0 // indirect
golang.org/x/sys v0.15.0 // indirect
golang.org/x/term v0.15.0 // indirect
golang.org/x/text v0.14.0 // indirect
google.golang.org/protobuf v1.33.0 // indirect
google.golang.org/protobuf v1.30.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)

require (
github.com/cockroachdb/apd v1.1.0 // indirect
github.com/getsentry/sentry-go v0.27.0
github.com/gin-gonic/contrib v0.0.0-20201101042839-6a891bf89f19 // indirect
github.com/gofrs/uuid v4.0.0+incompatible // indirect
github.com/jackc/fake v0.0.0-20150926172116-812a484cc733 // indirect
github.com/lib/pq v1.10.2 // indirect
github.com/shopspring/decimal v1.2.0 // indirect
golang.org/x/net v0.17.0 // indirect
)
Loading

0 comments on commit ca90a3a

Please sign in to comment.