this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

apidir: update metrics

+60 -3
+21 -3
atproto/identity/apidir/apidir.go
··· 131 131 var body didBody 132 132 u := dir.Host + "/xrpc/com.atproto.identity.resolveDid?did=" + did.String() 133 133 134 - if err := dir.apiGet(ctx, u, &body, identity.ErrDIDResolutionFailed, identity.ErrDIDNotFound); err != nil { 134 + start := time.Now() 135 + err := dir.apiGet(ctx, u, &body, identity.ErrDIDResolutionFailed, identity.ErrDIDNotFound) 136 + if err != nil { 137 + didResolution.WithLabelValues("apidir", "error").Inc() 138 + didResolutionDuration.WithLabelValues("apidir", "error").Observe(time.Since(start).Seconds()) 135 139 return nil, err 136 140 } 141 + didResolution.WithLabelValues("apidir", "success").Inc() 142 + didResolutionDuration.WithLabelValues("apidir", "success").Observe(time.Since(start).Seconds()) 137 143 138 144 return body.DIDDoc, nil 139 145 } ··· 155 161 var body handleBody 156 162 u := dir.Host + "/xrpc/com.atproto.identity.resolveHandle?handle=" + handle.String() 157 163 158 - if err := dir.apiGet(ctx, u, &body, identity.ErrHandleResolutionFailed, identity.ErrHandleNotFound); err != nil { 164 + start := time.Now() 165 + err := dir.apiGet(ctx, u, &body, identity.ErrHandleResolutionFailed, identity.ErrHandleNotFound) 166 + if err != nil { 167 + handleResolution.WithLabelValues("apidir", "error").Inc() 168 + handleResolutionDuration.WithLabelValues("apidir", "error").Observe(time.Since(start).Seconds()) 159 169 return "", err 160 170 } 171 + handleResolution.WithLabelValues("apidir", "success").Inc() 172 + handleResolutionDuration.WithLabelValues("apidir", "success").Observe(time.Since(start).Seconds()) 161 173 162 174 return body.DID, nil 163 175 } ··· 167 179 u := dir.Host + "/xrpc/com.atproto.identity.resolveIdentity?identifier=" + atid.String() 168 180 169 181 // TODO: detect atid type, use that for errors? or just assume DID? 170 - if err := dir.apiGet(ctx, u, &body, identity.ErrDIDResolutionFailed, identity.ErrDIDNotFound); err != nil { 182 + start := time.Now() 183 + err := dir.apiGet(ctx, u, &body, identity.ErrDIDResolutionFailed, identity.ErrDIDNotFound) 184 + if err != nil { 185 + identityResolution.WithLabelValues("apidir", "error").Inc() 186 + identityResolutionDuration.WithLabelValues("apidir", "error").Observe(time.Since(start).Seconds()) 171 187 return nil, err 172 188 } 189 + identityResolution.WithLabelValues("apidir", "success").Inc() 190 + identityResolutionDuration.WithLabelValues("apidir", "success").Observe(time.Since(start).Seconds()) 173 191 174 192 var doc identity.DIDDocument 175 193 if err := json.Unmarshal(body.DIDDoc, &doc); err != nil {
+39
atproto/identity/apidir/metrics.go
··· 1 + package apidir 2 + 3 + import ( 4 + "github.com/prometheus/client_golang/prometheus" 5 + "github.com/prometheus/client_golang/prometheus/promauto" 6 + ) 7 + 8 + var handleResolution = promauto.NewCounterVec(prometheus.CounterOpts{ 9 + Name: "atproto_identity_resolve_handle", 10 + Help: "ATProto handle resolutions", 11 + }, []string{"directory", "status"}) 12 + 13 + var handleResolutionDuration = promauto.NewHistogramVec(prometheus.HistogramOpts{ 14 + Name: "atproto_identity_resolve_handle_duration", 15 + Help: "Time to resolve a handle", 16 + Buckets: prometheus.ExponentialBucketsRange(0.001, 2, 15), 17 + }, []string{"directory", "status"}) 18 + 19 + var didResolution = promauto.NewCounterVec(prometheus.CounterOpts{ 20 + Name: "atproto_identity_resolve_did", 21 + Help: "ATProto DID resolutions", 22 + }, []string{"directory", "status"}) 23 + 24 + var didResolutionDuration = promauto.NewHistogramVec(prometheus.HistogramOpts{ 25 + Name: "atproto_identity_resolve_did_duration", 26 + Help: "Time to resolve a DID", 27 + Buckets: prometheus.ExponentialBucketsRange(0.001, 2, 15), 28 + }, []string{"directory", "status"}) 29 + 30 + var identityResolution = promauto.NewCounterVec(prometheus.CounterOpts{ 31 + Name: "atproto_identity_resolve_identity", 32 + Help: "ATProto combined identity resolutions", 33 + }, []string{"directory", "status"}) 34 + 35 + var identityResolutionDuration = promauto.NewHistogramVec(prometheus.HistogramOpts{ 36 + Name: "atproto_identity_resolve_identity_duration", 37 + Help: "Time to resolve a combined identity", 38 + Buckets: prometheus.ExponentialBucketsRange(0.001, 2, 15), 39 + }, []string{"directory", "status"})