fork of indigo with slightly nicer lexgen

Add more metrics to the relay

Changed files
+54 -1
bgs
did
repomgr
+5
bgs/bgs.go
··· 876 876 repoCommitsReceivedCounter.WithLabelValues(host.Host).Add(1) 877 877 evt := env.RepoCommit 878 878 log.Debugw("bgs got repo append event", "seq", evt.Seq, "pdsHost", host.Host, "repo", evt.Repo) 879 + 880 + s := time.Now() 879 881 u, err := bgs.lookupUserByDid(ctx, evt.Repo) 882 + userLookupDuration.Observe(time.Since(s).Seconds()) 880 883 if err != nil { 881 884 if !errors.Is(err, gorm.ErrRecordNotFound) { 882 885 return fmt.Errorf("looking up event user: %w", err) 883 886 } 884 887 885 888 newUsersDiscovered.Inc() 889 + start := time.Now() 886 890 subj, err := bgs.createExternalUser(ctx, evt.Repo) 891 + newUserDiscoveryDuration.Observe(time.Since(start).Seconds()) 887 892 if err != nil { 888 893 return fmt.Errorf("fed event create external user: %w", err) 889 894 }
+12
bgs/metrics.go
··· 81 81 Buckets: prometheus.ExponentialBuckets(100, 10, 8), 82 82 }, []string{"code", "method", "path"}) 83 83 84 + var userLookupDuration = promauto.NewHistogram(prometheus.HistogramOpts{ 85 + Name: "relay_user_lookup_duration", 86 + Help: "A histogram of user lookup latencies", 87 + Buckets: prometheus.ExponentialBuckets(0.001, 2, 15), 88 + }) 89 + 90 + var newUserDiscoveryDuration = promauto.NewHistogram(prometheus.HistogramOpts{ 91 + Name: "relay_new_user_discovery_duration", 92 + Help: "A histogram of new user discovery latencies", 93 + Buckets: prometheus.ExponentialBuckets(0.001, 2, 15), 94 + }) 95 + 84 96 // MetricsMiddleware defines handler function for metrics middleware 85 97 func MetricsMiddleware(next echo.HandlerFunc) echo.HandlerFunc { 86 98 return func(c echo.Context) error {
+6
did/metrics.go
··· 9 9 Name: "multiresolver_resolved_dids_total", 10 10 Help: "Total number of DIDs resolved", 11 11 }, []string{"resolver"}) 12 + 13 + var mrResolveDuration = promauto.NewHistogramVec(prometheus.HistogramOpts{ 14 + Name: "indigo_multiresolver_resolve_duration", 15 + Help: "A histogram of resolve latencies", 16 + Buckets: prometheus.ExponentialBuckets(0.001, 2, 15), 17 + }, []string{"resolver"})
+6
did/multi.go
··· 3 3 import ( 4 4 "context" 5 5 "fmt" 6 + "time" 6 7 7 8 "github.com/whyrusleeping/go-did" 8 9 ) ··· 43 44 } 44 45 45 46 func (mr *MultiResolver) GetDocument(ctx context.Context, didstr string) (*did.Document, error) { 47 + s := time.Now() 48 + defer func() { 49 + mrResolveDuration.WithLabelValues(didstr).Observe(time.Since(s).Seconds()) 50 + }() 51 + 46 52 pdid, err := did.ParseDID(didstr) 47 53 if err != nil { 48 54 return nil, err
+18
repomgr/metrics.go
··· 9 9 Name: "repomgr_repo_ops_imported", 10 10 Help: "Number of repo ops imported", 11 11 }) 12 + 13 + var openAndSigCheckDuration = promauto.NewHistogram(prometheus.HistogramOpts{ 14 + Name: "repomgr_open_and_sig_check_duration", 15 + Help: "Duration of opening and signature check", 16 + Buckets: prometheus.ExponentialBuckets(0.001, 2, 15), 17 + }) 18 + 19 + var calcDiffDuration = promauto.NewHistogram(prometheus.HistogramOpts{ 20 + Name: "repomgr_calc_diff_duration", 21 + Help: "Duration of calculating diff", 22 + Buckets: prometheus.ExponentialBuckets(0.001, 2, 15), 23 + }) 24 + 25 + var writeCarSliceDuration = promauto.NewHistogram(prometheus.HistogramOpts{ 26 + Name: "repomgr_write_car_slice_duration", 27 + Help: "Duration of writing car slice", 28 + Buckets: prometheus.ExponentialBuckets(0.001, 2, 15), 29 + })
+7 -1
repomgr/repomgr.go
··· 8 8 "io" 9 9 "strings" 10 10 "sync" 11 + "time" 11 12 12 13 atproto "github.com/bluesky-social/indigo/api/atproto" 13 14 bsky "github.com/bluesky-social/indigo/api/bsky" ··· 538 539 unlock := rm.lockUser(ctx, uid) 539 540 defer unlock() 540 541 542 + start := time.Now() 541 543 root, ds, err := rm.cs.ImportSlice(ctx, uid, since, carslice) 542 544 if err != nil { 543 545 return fmt.Errorf("importing external carslice: %w", err) ··· 551 553 if err := rm.CheckRepoSig(ctx, r, did); err != nil { 552 554 return err 553 555 } 556 + openAndSigCheckDuration.Observe(time.Since(start).Seconds()) 554 557 555 558 var skipcids map[cid.Cid]bool 556 559 if ds.BaseCid().Defined() { ··· 571 574 } 572 575 } 573 576 577 + start = time.Now() 574 578 if err := ds.CalcDiff(ctx, skipcids); err != nil { 575 579 return fmt.Errorf("failed while calculating mst diff (since=%v): %w", since, err) 576 - 577 580 } 581 + calcDiffDuration.Observe(time.Since(start).Seconds()) 578 582 579 583 evtops := make([]RepoOp, 0, len(ops)) 580 584 ··· 631 635 } 632 636 } 633 637 638 + start = time.Now() 634 639 rslice, err := ds.CloseWithRoot(ctx, root, nrev) 635 640 if err != nil { 636 641 return fmt.Errorf("close with root: %w", err) 637 642 } 643 + writeCarSliceDuration.Observe(time.Since(start).Seconds()) 638 644 639 645 if rm.events != nil { 640 646 rm.events(ctx, &RepoEvent{