Skip to content

Commit 4597413

Browse files
Merge pull request #380 from pace/sentry-tracing-poc
tracing: replace Jaeger with Sentry
2 parents 75e1d0b + f6bf7eb commit 4597413

File tree

2,218 files changed

+172239
-96769
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

2,218 files changed

+172239
-96769
lines changed

.github/workflows/golang-ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ jobs:
66
strategy:
77
fail-fast: false
88
matrix:
9-
go: [ '1.21.12' ]
9+
go: [ '1.23' ]
1010
steps:
1111
- uses: actions/checkout@v2
1212
- uses: actions/setup-go@v2

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ A pace/bricks microservice is:
1414
* configured using **environment variables** ([TWELVE-FACTOR APP](https://12factor.net/))
1515
* monitored using **prometheus**
1616
* reports errors to **sentry**
17-
* samples traces to **jaeger**
17+
* samples traces to **sentry**
1818
* **logs** to stdout using json deployed **kubernetes** otherwise human readable
1919
* offers **health** endpoints
2020
* built-in redaction of JWTs and card schemes

backend/couchdb/db.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ func Client(cfg *Config) (*kivik.Client, error) {
7979
Username: cfg.User,
8080
Password: cfg.Password,
8181
},
82-
&transport.JaegerRoundTripper{},
82+
&transport.TracingRoundTripper{},
8383
transport.NewDumpRoundTripperEnv(),
8484
}
8585
if !cfg.DisableRequestLogging {

backend/postgres/postgres.go

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ import (
1414
"sync"
1515
"time"
1616

17-
"github.com/opentracing/opentracing-go"
18-
olog "github.com/opentracing/opentracing-go/log"
17+
"github.com/getsentry/sentry-go"
18+
1919
"github.com/rs/zerolog"
2020

2121
"github.com/caarlos0/env/v10"
@@ -238,7 +238,7 @@ func CustomConnectionPool(opts *pg.Options) *pg.DB {
238238
log.Logger().Warn().Msg("Connection pool has logging queries disabled completely")
239239
}
240240

241-
db.OnQueryProcessed(openTracingAdapter)
241+
db.OnQueryProcessed(tracingAdapter)
242242
db.OnQueryProcessed(func(event *pg.QueryProcessedEvent) {
243243
metricsAdapter(event, opts)
244244
})
@@ -329,38 +329,34 @@ func getQueryType(s string) string {
329329
return strings.ToUpper(s)
330330
}
331331

332-
func openTracingAdapter(event *pg.QueryProcessedEvent) {
332+
func tracingAdapter(event *pg.QueryProcessedEvent) {
333333
// start span with general info
334334
q, qe := event.UnformattedQuery()
335335
if qe != nil {
336336
// this is only a display issue not a "real" issue
337337
q = qe.Error()
338338
}
339339

340-
span, _ := opentracing.StartSpanFromContext(event.DB.Context(), "sql: "+getQueryType(q),
341-
opentracing.StartTime(event.StartTime))
340+
span := sentry.StartSpan(event.DB.Context(), "db.sql.query", sentry.WithDescription(getQueryType(q)))
341+
defer span.Finish()
342+
343+
span.StartTime = event.StartTime
342344

343345
span.SetTag("db.system", "postgres")
344346

345-
fields := []olog.Field{
346-
olog.String("file", event.File),
347-
olog.Int("line", event.Line),
348-
olog.String("func", event.Func),
349-
olog.Int("attempt", event.Attempt),
350-
olog.String("query", q),
351-
}
347+
span.SetData("file", event.File)
348+
span.SetData("line", event.Line)
349+
span.SetData("func", event.Func)
350+
span.SetData("attempt", event.Attempt)
351+
span.SetData("query", q)
352352

353353
// add error or result set info
354354
if event.Error != nil {
355-
fields = append(fields, olog.Error(event.Error))
355+
span.SetData("error", event.Error)
356356
} else {
357-
fields = append(fields,
358-
olog.Int("affected", event.Result.RowsAffected()),
359-
olog.Int("rows", event.Result.RowsReturned()))
357+
span.SetData("affected", event.Result.RowsAffected())
358+
span.SetData("rows", event.Result.RowsReturned())
360359
}
361-
362-
span.LogFields(fields...)
363-
span.Finish()
364360
}
365361

366362
func metricsAdapter(event *pg.QueryProcessedEvent, opts *pg.Options) {

backend/redis/redis.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ import (
88
"time"
99

1010
"github.com/caarlos0/env/v10"
11-
"github.com/opentracing/opentracing-go"
12-
olog "github.com/opentracing/opentracing-go/log"
13-
"github.com/pace/bricks/maintenance/health/servicehealthcheck"
14-
"github.com/pace/bricks/maintenance/log"
11+
"github.com/getsentry/sentry-go"
1512
"github.com/prometheus/client_golang/prometheus"
1613
"github.com/redis/go-redis/v9"
14+
15+
"github.com/pace/bricks/maintenance/health/servicehealthcheck"
16+
"github.com/pace/bricks/maintenance/log"
1717
)
1818

1919
type config struct {
@@ -157,7 +157,7 @@ type logtracerKey struct{}
157157

158158
type logtracerValues struct {
159159
startedAt time.Time
160-
span opentracing.Span
160+
span *sentry.Span
161161
}
162162

163163
func (lt *logtracer) DialHook(next redis.DialHook) redis.DialHook {
@@ -168,12 +168,13 @@ func (lt *logtracer) ProcessHook(next redis.ProcessHook) redis.ProcessHook {
168168
return func(ctx context.Context, cmd redis.Cmder) error {
169169
startedAt := time.Now()
170170

171-
span, _ := opentracing.StartSpanFromContext(ctx, "redis: "+cmd.Name())
172-
span.LogFields(olog.String("cmd", cmd.Name()))
171+
span := sentry.StartSpan(ctx, "db.redis", sentry.WithDescription(cmd.Name()))
173172
defer span.Finish()
174173

175174
span.SetTag("db.system", "redis")
176175

176+
span.SetData("cmd", cmd.Name())
177+
177178
paceRedisCmdTotal.With(prometheus.Labels{
178179
"method": cmd.Name(),
179180
}).Inc()
@@ -191,7 +192,7 @@ func (lt *logtracer) ProcessHook(next redis.ProcessHook) redis.ProcessHook {
191192
// add error
192193
cmdErr := cmd.Err()
193194
if cmdErr != nil {
194-
vals.span.LogFields(olog.Error(cmdErr))
195+
vals.span.SetData("error", cmdErr)
195196
le = le.Err(cmdErr)
196197
paceRedisCmdFailed.With(prometheus.Labels{
197198
"method": cmd.Name(),

docker-compose.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ services:
2525
- MINIO_ACCESS_KEY=client
2626
- MINIO_SECRET_KEY=secret01
2727
- MINIO_REGION_NAME=us-east-1
28-
28+
2929
couchdb:
3030
image: couchdb
3131
volumes:
@@ -56,7 +56,7 @@ services:
5656
- "./prometheus.yml:/etc/prometheus/prometheus.yml"
5757

5858
testserver:
59-
image: "golang:1.21"
59+
image: "golang:1.23"
6060
volumes:
6161
- .:/srv
6262
working_dir: /srv

0 commit comments

Comments
 (0)